À 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?
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
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>
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
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
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.