Comment puis-je installer Apache avec une version spécifique?

26

À cause de la mise à jour d'Ubuntu, j'ai fait l'erreur de mettre à niveau Apache 2.2 vers 2.4 - beaucoup de choses ont mal tourné.

Je ne sais pas comment spécifier la version après apt-get remove apache2. apt-get install apache2installe toujours 2.4.

Comment puis-je le faire?

Mithril
la source

Réponses:

22

Vous devez effectuer les opérations suivantes:

apt-cache showpkg <pachagename>

La commande ci-dessus affichera la liste des versions disponibles pour ce package. Sélectionnez ensuite la version requise et procédez comme suit.

apt-get install <packagename>=<complete version name>

Exemple:

apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7
MohyedeenN
la source
2
La seule version qui s'affiche pour moi est 2.4 sur Ubuntu 16. C'est un gros problème car 2.4 a des problèmes connus qui ont complètement cassé mon site.
felwithe
2
La version 2.2.14-5ubuntu8.7 pour apache2 est introuvable
Braian Mellor
Merci - cela a mieux fonctionné que d'essayer de suivre la route PPA.
M Thomas
5

Comment installer Apache 2.2 sur une distribution Ubuntu qui ne l'a pas dans les référentiels.

Exigences

Pour ce faire, vous devez avoir installé le package build-essentials.

~# sudo apt-get install build-essential

Pour donner à Apache la possibilité de compresser la sortie vers les navigateurs qui le prennent en charge, vous devez installer zlib. Téléchargez la version actuelle à partir de zlip Hompage (zlib-1.2.11.tar.gz au moment de l'écriture), extrayez-la, accédez au dossier extrait, générez et installez.

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

Installez Apache 2.2

Téléchargez la version actuelle à partir de la page de téléchargement Apache (httpd-2.2.32.tar.gz au moment de l'écriture), extrayez-la, accédez au dossier extrait, générez et installez.

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

Démarrez Apache:

sudo /usr/local/apache2/bin/apachectl start

Vérifiez, si tout va bien

Accédez à http: // localhost dans votre navigateur, où vous devriez voir un message disant "Ça marche!".

Alternativement, vous pouvez le faire via le terminal:

wget -qO- http://localhost | grep "It works!"

Qui devrait sortir quelque chose comme ça dans le terminal:

<html><body><h1>It works!</h1></body></html>

Créer un "service" pour Apache2

sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache22
sudo chmod +x /etc/init.d/apache22

Astuce: vous pouvez appeler apachectl avec le service sudo apache22 maintenant.

Faire démarrer Apache au démarrage

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 sécurisé

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

Vérifier les nouveaux paramètres

ps -aux | grep httpd

Si la sortie du terminal de la dernière commande affiche des lignes commençant par "apache", alors tout est OK.

Configurez votre site (s)

Si vous souhaitez configurer votre apache pour un seul site, modifiez simplement le httpd.conf

nano /usr/local/apache2/conf/httpd.conf

Les paramètres essentiels que vous voudrez peut-être modifier sont:

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>

Si vous souhaitez configurer plusieurs sites, consultez httpd-vhosts.conf

nano /usr/local/apache2/conf/httpd.conf

Vous devrez ajouter une section <Directory> contenant le <VirtualHost> similaire à celui ci-dessus, mais pour la racine du document du VitualHost. Par exemple:

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>
Johano Fierra
la source
En suivant ces instructions, je rencontre ceci: dzenan @ ubuntu16-i386: ~ / httpd-2.2.34 $ sudo /usr/sbin/update-rc.d apachectl par défaut insserv: script apachectl: service apache2 déjà fourni! insserv: quitter maintenant! update-rc.d: erreur: insserv a rejeté l'en-tête du script
Dženan
En effet, sur Ubuntu 16.04, il existe déjà un /etc/init.d/apache2fichier avec un contenu radicalement différent.
Dženan
La suppression du fichier incriminé nous permet de franchir cette étape, mais sudo service apachectl stopn'arrête pas le service.
Dženan
"sudo service apachectl stop" ne fonctionnerait pas seulement si vous ne suiviez pas les étapes sous Faire démarrer Apache au démarrage . Après avoir lu ma réponse, j'ai décidé de la changer ... d'abord, apachectl est vraiment un mauvais nom pour un "service" et il était mauvais de faire de sa création une partie de cette section. Donc, à la place, vous feriez maintenant le service sudo apache22 start / stop , APRÈS avoir suivi les étapes sous Créer un "service" pour Apache2 .
Johano Fierra
J'ai décidé d'abandonner cette approche et de mettre à jour mon fichier de configuration pour qu'il soit compatible avec apache 2.4. Moins de maux de tête de cette façon. Mais merci pour la réponse détaillée!
Dženan
4

Voir le guide ubuntu sur l' épinglage de paquet :

Modifier le fichier /etc/apt/preferences

Le fichier «préférences» est l'endroit où l'épinglage a lieu. Pour épingler un package, définissez sa priorité d'épingle sur un nombre plus élevé. Voici un exemple:

Package: apache2
Pin: release n=raring
Pin-Priority: 1000

Testez avant de courir apt-get updateou apt-get installavecapt-cache policy apache2

Voir man apt_preferencespour plus de détails. J'ai choisi la version de pinning raringparce que de cette façon, vous obtiendrez toujours des mises à jour sur la branche 2.2.x. N'oubliez pas que vous devez mettre le package à la disposition d'APT en ajoutant raringles URL du référentiel.

Mise à jour :

Tout raringcomme EOL, vous pouvez utiliser les packages toujours pris en charge preciseou archivés raringsur http://old-releases.ubuntu.com .

L'utilisation de ceci /etc/apt/sources.list.d/raring.listvous permettra d'installer des packages plus anciens:

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
fuero
la source
Salut. Cela semble être exactement ce que je veux. Pouvez-vous également ajouter des commandes pour ajouter les URL de référentiel de raring? Je n'arrive pas à trouver les bons.
Ravish Bhagdev
J'ai mis à jour ma réponse.
fuero
Belle prise, j'ai corrigé la liste des miroirs APT raring. Bien sûr, si vous souhaitez utiliser la preciseversion, vous /etc/apt/preferencesdevez également la modifier en conséquence.
fuero
Merci beaucoup. Quoi qu'il en soit, se révélant être une boîte de vers ... devra prendre la route VM comme suivant après avoir effectué les étapes spécifiées (et aussi essayer d'installer l'option -f et nettoyer) Les packages suivants ont des dépendances non satisfaites. apache2: dépend: apache2-mpm-worker (= 2.2.22-1ubuntu1.7) mais il ne sera pas installé ou apache2-mpm-prefork (= 2.2.22-1ubuntu1.7) mais il ne sera pas installé ou .... etc etc
Ravish Bhagdev
2

Pour installer apache2.2, utilisez le processus suivant:

Sur une distribution ultérieure (par exemple 16.04), j'ai téléchargé le 2.2.31 depuis le site Apache.

Je l'ai construit en utilisant la configuration suivante:

./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

Ensuite, bien sûr, peaufiner les fichiers httpd.conf et ssl.conf.

Après cela, je lance simplement le ./httpd -k start

Et il fonctionne !

notez que j'ai ajouté l'apache2.4 via apt-get mais ne l'ai jamais supprimé. Cela signifie qu'après le démarrage du système, j'ai besoin de tuer le processus apache2. Et puis je suis capable de démarrer apache2.2. J'ai dû installer apache2.4 pour utiliser apachectl, mais je l'ai dissous plus tard car j'utilise ./httpd

Coen Damen
la source
Jetez un œil à ma réponse concernant l'utilisation d'apachectl pour Apache 2.2, vous devrez peut-être d'abord supprimer la version 2.4 (/usr/sbin/update-rc.d -f apachectl remove).
Johano Fierra
1

Vous êtes passé d'Ubuntu 13.04 à 13.10? Il n'y a aucun moyen de récupérer Apache 2.2 sans sortir des référentiels de packages Ubuntu. Il est préférable de simplement corriger votre configuration Apache pour qu'elle fonctionne avec 2.4.

sciurus
la source
1
pas vraiment, voir ma réponse
Coen Damen
@CoenDamen vous répondez en fait "sortir des référentiels de paquets Ubuntu". De plus, votre réponse ne fonctionnera pas "en l'état" pour toute nouvelle installation d'Ubuntu, car il lui manquera pas mal de dépendances.
Johano Fierra