web-dev-qa-db-fra.com

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

À cause de la mise à jour d'Ubuntu, j'ai fait l'erreur de mettre à jour 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 Apache2 installe toujours 2.4.

Comment puis-je le faire?

26
Mithril

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
23
MohyedeenN

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 depuis zlip Hompage (zlib-1.2.11.tar.gz au moment de l'écriture), extrayez-la, accédez au dossier extrait, compilez 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érifiez 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 (vos) 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>
6
Johano Fierra

Voir le guide ubuntu sur é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 d'exécuter apt-get update ou apt-get install avec apt-cache policy Apache2

Voir man apt_preferences pour plus de détails. J'ai choisi d'épingler la version de raring car de cette façon, vous obtiendrez toujours des mises à jour sur la branche 2.2.x. N'oubliez pas que vous devez rendre le package disponible pour APT en ajoutant les URL de référentiel de raring.

Mise à jour :

Comme raring est en fin de vie, vous pouvez soit utiliser les packages precise encore pris en charge, soit les packages raring archivés de http://old-releases.ubuntu.com .

Utiliser ceci comme /etc/apt/sources.list.d/raring.list vous 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
4
fuero

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é 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 parce que j'utilise ./httpd

2
Coen Damen

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.

1
sciurus