Odpowiedzi:
Musisz wykonać następujące czynności:
apt-cache showpkg <pachagename>
Powyższe polecenie wyświetli listę dostępnych wersji tego pakietu. Następnie wybierz potrzebną wersję i wykonaj następujące czynności.
apt-get install <packagename>=<complete version name>
Przykład:
apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7
Jak zainstalować Apache 2.2 na dystrybucji Ubuntu, która nie ma go w repozytoriach.
Wymagania
Aby to zrobić, musisz mieć zainstalowany pakiet niezbędny do kompilacji.
~# sudo apt-get install build-essential
Aby dać Apache możliwość kompresji danych wyjściowych do przeglądarek, które ją obsługują, musisz zainstalować zlib. Pobierz bieżącą wersję z Zlip Hompage (zlib-1.2.11.tar.gz w chwili pisania), rozpakuj go, przejdź do wyodrębnionego folderu, skompiluj i zainstaluj.
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local
make
sudo make install
Zainstaluj Apache 2.2
Pobierz aktualną wersję ze strony pobierania Apache (httpd-2.2.32.tar.gz w chwili pisania), rozpakuj ją, przejdź do wyodrębnionego folderu, skompiluj i zainstaluj.
wget http://www-eu.apache.org/dist/httpd/httpd-2.2.32.tar.gz
tar -xvf httpd-2.2.32.tar.gz
cd httpd-2.2.32/
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http
make
sudo make install
Uruchom Apache:
sudo /usr/local/apache2/bin/apachectl start
Sprawdź, czy wszystko jest w porządku
Przejdź do http: // localhost w przeglądarce, gdzie powinieneś zobaczyć komunikat „To działa!”.
Alternatywnie możesz to zrobić przez terminal:
wget -qO- http://localhost | grep "It works!"
Który powinien wypisać coś takiego w terminalu:
<html><body><h1>It works!</h1></body></html>
Utwórz „usługę” dla Apache2
sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache22
sudo chmod +x /etc/init.d/apache22
Wskazówka: możesz teraz wywołać apachectl z usługą sudo apache22 .
Uruchom Apache podczas uruchamiania
sudo sed -i '2i #\n### BEGIN INIT INFO\n# Provides: apache2\n# Required-Start: $remote_fs\n# Required-Stop: $remote_fs\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Description: apache2\n# Short-Description: The Apache webserver\n### END INIT INFO' /etc/init.d/apache22
sudo /usr/sbin/update-rc.d apache22 defaults
Bezpieczny Apache
sudo service apache22 stop
sudo adduser --system apache
sed -i -e 's/User daemon/User apache/g' /usr/local/apache2/conf/httpd.conf
sed -i -e 's/Group daemon/Group nogroup/g' /usr/local/apache2/conf/httpd.conf
sudo service apache22 start
Sprawdź nowe ustawienia
ps -aux | grep httpd
Jeśli wynik końcowy ostatniego polecenia pokazuje niektóre wiersze zaczynające się od „apache”, to wszystko jest w porządku.
Skonfiguruj swoje witryny
Jeśli chcesz skonfigurować apache tylko dla jednej strony, po prostu edytuj httpd.conf
nano /usr/local/apache2/conf/httpd.conf
Podstawowe parametry, które możesz chcieć zmodyfikować to:
ServerName www.example.com:80
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Jeśli chcesz skonfigurować więcej niż jedną witrynę, zajrzyj na httpd-vhosts.conf
nano /usr/local/apache2/conf/httpd.conf
Będziesz musiał dodać sekcję <Directory> z <VirtualHost> podobną do powyższej, ale dla katalogu głównego VitualHost. Na przykład:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
<Directory "/usr/local/apache2/docs/dummy-host.example.com">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
/etc/init.d/apache2
plik z radykalnie różną zawartością.
sudo service apachectl stop
nie zatrzymuje usługi.
Zobacz instrukcje Ubuntu na temat przypinania pakietów :
Edytuj plik /etc/apt/preferences
Plik „preferencji” to miejsce, w którym ma miejsce faktyczne przypięcie. Aby przypiąć paczkę, ustaw jej Pin-Priority na wyższy numer. Oto przykład:
Package: apache2
Pin: release n=raring
Pin-Priority: 1000
Testuj przed uruchomieniem apt-get update
lub apt-get install
zapt-cache policy apache2
Zobacz man apt_preferences
szczegóły. Wybrałem raring
wydanie przypinania , ponieważ w ten sposób nadal będziesz otrzymywać aktualizacje w gałęzi 2.2.x. Nie zapomnij, że musisz udostępnić pakiet APT, dodając raring
adresy URL repozytorium.
Aktualizacja :
Podobnie jak w przypadku raring
EOL, możesz użyć nadal obsługiwanych precise
lub zarchiwizowanych raring
pakietów z http://old-releases.ubuntu.com .
Korzystanie z tego /etc/apt/sources.list.d/raring.list
pozwoli na zainstalowanie starszych pakietów:
deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
raring
. Oczywiście, jeśli chcesz korzystać z precise
wersji, /etc/apt/preferences
musisz ją odpowiednio zmienić.
Aby zainstalować apache2.2, użyj następującego procesu:
W późniejszej dystrybucji (np. 16.04) pobrałem 2.2.31 ze strony Apache.
Zbudowałem go przy użyciu następującej konfiguracji:
./configure --enable-so --enable-ssl --with-included-apr --enable-mods-shared=all --enable-load-all-modules --enable-rewrite --enable-proxy --enable-proxy_connect --enable-proxy_http --enable-proxy_ajp --enable-authn_alias --with-npm=prefork --enable-proxy_balancer --enable-proxy_ftp --enable-cache --enable-suexec --enable-disk_cache > conf.txt
Potem oczywiście poprawianie plików httpd.conf i ssl.conf.
Potem po prostu uruchamiam ./httpd -k start
I to działa!
zauważ, że dodałem apache2.4 poprzez apt-get, ale nigdy go nie usunąłem. Oznacza to, że po uruchomieniu systemu muszę zabić proces Apache2. A potem mogę uruchomić apache2.2. Musiałem zainstalować apache2.4, aby używać apachectl, ale później go rozwiązałem, ponieważ używam ./httpd
Uaktualniłeś system z Ubuntu 13.04 do 13.10? Nie ma sposobu na odzyskanie Apache 2.2 bez wychodzenia poza repozytoria pakietów Ubuntu. Lepiej po prostu napraw konfigurację Apache, aby działała z 2.4.