Come posso installare Apache con una versione specifica?


26

A causa dell'aggiornamento di Ubuntu, ho fatto l'errore di aggiornare Apache da 2.2 a 2.4: molte cose sono andate male.

Non ho idea di come specificare la versione dopo apt-get remove apache2. apt-get install apache2installa sempre 2.4.

Come posso farlo?

Risposte:


22

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

2
L'unica versione che mostra per me è la 2.4 su Ubuntu 16. Questo è un grosso problema perché la 2.4 ha problemi noti che hanno completamente rotto il mio sito.
felwithe

2
La versione 2.2.14-5ubuntu8.7 per apache2 non è stata trovata
Braian Mellor

Grazie: ha funzionato meglio del tentativo di seguire la strada PPA.
M Thomas,

5

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>

Seguendo queste istruzioni, mi imbatto in questo: dzenan @ ubuntu16-i386: ~ / httpd-2.2.34 $ sudo /usr/sbin/update-rc.d apachectl per impostazione predefinita insserv: script apachectl: servizio apache2 già fornito! insserv: uscire adesso! update-rc.d: errore: insserv ha respinto l'intestazione dello script
Dženan il

In effetti, su Ubuntu 16.04 sono già presenti /etc/init.d/apache2file con contenuti radicalmente diversi.
Dženan,

La rimozione del file offensivo ci fa superare questo passaggio, ma sudo service apachectl stopnon interrompe il servizio.
Dženan,

"sudo service apachectl stop" non funzionerebbe solo se non avessi seguito i passaggi indicati in Avvia Apache all'avvio . Dopo aver letto la mia risposta, ho deciso di cambiarlo ... in primo luogo, apachectl è davvero un brutto nome per un "servizio" ed è stato un male renderlo parte di quella sezione. Quindi, invece, ora dovresti fare il servizio sudo apache22 start / stop , DOPO seguire i passaggi sotto Crea "servizio" per Apache2 .
Johano Fierra,

Ho deciso di abbandonare questo approccio e aggiornare il mio file di configurazione per renderlo compatibile con apache 2.4. Meno mal di testa in quel modo. Ma grazie per la risposta dettagliata!
Dženan,

4

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 updateo apt-get installconapt-cache policy apache2

Vedi man apt_preferencesper i dettagli. Ho scelto raringil 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 raringgli URL del repository.

Aggiornamento :

Come raringEOL, è possibile utilizzare i pacchetti ancora supportati preciseo archiviati raringda http://old-releases.ubuntu.com .

Usarlo come /etc/apt/sources.list.d/raring.listti 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

Ciao. Questo sembra essere esattamente quello che voglio. Potete per favore aggiungere anche comandi per l'aggiunta di URL di repository raring? Non riesco a trovare quelli giusti.
Ravish Bhagdev,

Ho aggiornato la mia risposta.
fuero,

Bella cattura, ho corretto la mirrorlist APT su raring. Naturalmente, se si desidera utilizzare la preciseversione, è /etc/apt/preferencesnecessario modificarla di conseguenza.
fuero,

Molte grazie. Comunque risultando essere una lattina di worm ... dovrà seguire il percorso della VM come seguito dopo aver eseguito i passaggi specificati (e anche provare a installare l'opzione -f e clean) I seguenti pacchetti hanno dipendenze non soddisfatte. apache2: dipende: apache2-mpm-worker (= 2.2.22-1ubuntu1.7) ma non verrà installato o apache2-mpm-prefork (= 2.2.22-1ubuntu1.7) ma non sarà installato o .... ecc ecc
Ravish Bhagdev

2

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


Dai un'occhiata alla mia risposta sull'utilizzo di apachectl per Apache 2.2, tuttavia potresti dover rimuovere prima la versione 2.4 (/usr/sbin/update-rc.d -f apachectl remove).
Johano Fierra,

1

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.


1
non proprio, vedi la mia risposta
Coen Damen,

@CoenDamen in realtà rispondi è "uscire dai repository di pacchetti Ubuntu". Inoltre, la tua risposta non funzionerà "così com'è" per qualsiasi nuova installazione di Ubuntu, in quanto mancheranno alcune dipendenze.
Johano Fierra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.