Risposte:
Devi fare quanto segue:
apt-cache showpkg <pachagename>
Il comando sopra mostrerà l'elenco delle versioni disponibili per questo pacchetto. Quindi selezionare la versione richiesta e procedere come segue.
apt-get install <packagename>=<complete version name>
Esempio:
apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7
Come installare Apache 2.2 su una distro Ubuntu che non l'ha nei repository.
Requisiti
Per fare ciò è necessario che sia installato il pacchetto build-essentials.
~# sudo apt-get install build-essential
Per dare ad Apache la possibilità di comprimere l'output nei browser che lo supportano, è necessario installare zlib. Scarica la versione corrente da zlip Hompage (zlib-1.2.11.tar.gz al momento della scrittura), estraila, vai alla cartella estratta, compila e installa.
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
Installa Apache 2.2
Scarica la versione corrente dalla pagina di download di Apache (httpd-2.2.32.tar.gz al momento della scrittura), estraila, vai alla cartella estratta, compila e installa.
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
Avvia Apache:
sudo /usr/local/apache2/bin/apachectl start
Controlla, se tutto è OK
Vai a http: // localhost nel tuo browser, dove dovresti vedere un messaggio che dice "Funziona!".
In alternativa, puoi farlo tramite il terminale:
wget -qO- http://localhost | grep "It works!"
Che dovrebbe produrre qualcosa di simile nel terminale:
<html><body><h1>It works!</h1></body></html>
Crea "servizio" per Apache2
sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache22
sudo chmod +x /etc/init.d/apache22
Suggerimento: ora puoi chiamare apachectl con il servizio sudo apache22 .
Fai avviare Apache all'avvio
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
Apache sicuro
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
Controlla le nuove impostazioni
ps -aux | grep httpd
Se l'output del terminale dell'ultimo comando mostra alcune righe che iniziano con "apache", allora è tutto a posto.
Configura i tuoi siti
Se vuoi configurare il tuo apache per un solo sito, modifica semplicemente httpd.conf
nano /usr/local/apache2/conf/httpd.conf
I parametri essenziali che potresti voler modificare sono:
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>
Se vuoi configurare più di un sito, dai un'occhiata a httpd-vhosts.conf
nano /usr/local/apache2/conf/httpd.conf
Dovrai aggiungere una sezione <Directory> all'interno di <VirtualHost> simile a quella sopra, ma per la radice del documento di VitualHost. Per esempio:
<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
file con contenuti radicalmente diversi.
sudo service apachectl stop
non interrompe il servizio.
Vedi l'ubuntu howto sul pinning dei pacchetti :
Modifica file /etc/apt/preferences
Il file 'preferenze' è dove si verifica l'effettivo pinning. Per aggiungere un pacchetto, impostarne la Priorità di Pin su un numero più alto. Ecco un esempio:
Package: apache2
Pin: release n=raring
Pin-Priority: 1000
Prova prima di correre apt-get update
o apt-get install
conapt-cache policy apache2
Vedi man apt_preferences
per i dettagli. Ho scelto raring
il rilascio del pinning perché in questo modo otterrai comunque aggiornamenti sul ramo 2.2.x. Non dimenticare che devi rendere il pacchetto disponibile per APT aggiungendo raring
gli URL del repository.
Aggiornamento :
Come raring
EOL, è possibile utilizzare i pacchetti ancora supportati precise
o archiviati raring
da http://old-releases.ubuntu.com .
Usarlo come /etc/apt/sources.list.d/raring.list
ti permetterà di installare pacchetti più vecchi:
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
. Naturalmente, se si desidera utilizzare la precise
versione, è /etc/apt/preferences
necessario modificarla di conseguenza.
Per installare apache2.2 utilizzare il seguente processo:
In una distro successiva (ad es. 16.04), ho scaricato 2.2.31 dal sito Apache.
L'ho costruito usando la seguente configurazione:
./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
Quindi ovviamente modificando i file httpd.conf e ssl.conf.
Dopodiché ho appena avviato ./httpd -k start
E funziona!
nota che ho aggiunto apache2.4 tramite apt-get ma non l'ho mai rimosso. Ciò significa che dopo l'avvio del sistema, devo interrompere il processo apache2. E poi sono in grado di avviare apache2.2. Ho dovuto installare apache2.4 per usare apachectl ma in seguito lo ho sciolto perché uso ./httpd
Hai eseguito l'aggiornamento da Ubuntu 13.04 a 13.10? Non è possibile ripristinare Apache 2.2 senza uscire dai repository dei pacchetti Ubuntu. È meglio semplicemente correggere la configurazione di Apache in modo che funzioni con 2.4.