Migration apache 2.2 vers 2.4 sous debian wheezy (stable)

 
 

Voilà un sujet brûlant et qui demande un peu de concentration et de patience. En effet, il ne s'agit pas que d'effectuer une mise à jour des packages pour que tout fonctionne.

En effet, les modifications sont telles que certains autres packages comme munin, owncloud, et plus généralement le php ne fonctionneront pas nativement.

De plus, vous devez savoir que:

  • le répertoire /etc/apache2/conf.d n'est plus utilisé. A la place, deux dossiers conf-available et conf-enabled sont créés, sur le même mode de fonctionnement que mods et sites. Pensez à copier vos fichiers dans conf-available avec l'extension .conf, vous pourrez ensuite les activer/désactiver avec a2enconf a2disconf/a2enconf.
  • Vous devrez renommer tous vos fichiers/sites présents dans sites-available/sites-enabled avec l'extension .conf sinon ils ne seront pas pris en compte.
  • Il est nécessaire d'effectuer une configuration supplémentaire pour le php, ainsi que pour les scripts cgi.
  • Ne pas oublier la mise à jour de openssl en lien avec celle d'apache !

Allez, maintenant que l'on sait cela, passons aux choses sérieuses. Et comme je n'ai peur de rien, voici comment j'ai procédé:

  1. Ajouter les dépots testing. Oui, autant utiliser les packages debian, les dépendances seront correctement gérées et le moindre conflit pourra être facilement résolu. Ajoutons alors à /etc/apt/souces.list la ligne suivante:

    deb http://ftp.fr.debian.org/debian/ testing main contrib non-free

  2. Après avoir mis à jours la liste des paquets avec apt-get update, il reste à installer les packages suivants:

    apt-get -t testing install apache2 openssl libapache2-mod-fastcgi php5-fpm libssl1.0.0 openssl-blacklist openssl-blacklist-extra memcached php5-memcached

    Vous pourrez remarquer qu'un bon nombre de paquets seront mis à jour, de façon à satisfaire les dépendances, le plus important est de constater que apache2.2-bin apache2.2-common et libapache2-mod-php5 font partie des paquets marqués en suppression.
    Vérifiez que tout se passe bien lors du processus de mise à jour, notamment si vous n'avez pas des messages du genre:

    dpkg: warning: unable to delete old directory '/etc/php5/conf.d': Directory not empty
    [warn] The apache2 configtest failed (ce qui est normal vu que pas mal de fichiers de configuration sont encore écrits pour apache 2.2, munin, phpmyadmin …)

  3. Vérifier que le fichier /etc/php5/fpm/pool.d/www.conf contient la ligne suivante:

    listen = /var/run/php5-fpm.sock

    Si ce n'est pas le cas, modifiez le fichier en conséquence, et redémarrez le service: service php5-pfm restart

  4. Nous allons maintenant configurer le module fastcgi pour qu'il puisse se connecter à php5-pfm. Pour cela, il est nécessaire d'éditer le fichier /etc/apache2/mods-enabled/fastcgi.conf et contenir:

    <IfModule mod_fastcgi.c>
            AddType application/x-httpd-fastphp5 .php
            Action application/x-httpd-fastphp5 /php5-fcgi
            Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
            FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
            <Directory /usr/lib/cgi-bin>
                    Require all granted
            </Directory>
    </IfModule>

    On avance bien, non ?

  5. Il faut maintenant passer à une phase de renommage de vos fichiers de configuration de sites pour qu'ils soient pris en compte par apache.
    Pour cela, rendez vous dans le dossier /etc/apache2/sites-available et ajouter l'extension .conf à tous vos sites.
    Ensuite, il faudra effacer tous vos liens symboliques situés dans /etc/apache2/sites-enabled et activer de nouveau ces derniers avec la commande a2ensite. Exemple:

    cd /etc/apache2/sites-available
    mv 01mysite 01mysite.conf
    mv 01mysite-ssl 01mysite-ssl.conf
    rm /etc/apache2/sites-enabled/*
    a2ensite 01mysite.conf
    a2ensite 01mysite-ssl.conf

  6. On pourrait presque redémarrer le serveur apache, mais si vous aviez déjà une configuration en place, il est pratiquement sûr que l'on rencontrera des erreurs. On va maintenant s'intéresser aux scripts cgi.
    Pour cela, rien de plus simple, un fichier de configuration est présent dans /etc/apache2/conf-available:
    Vous avez alors deux possibilités:
    – ajouter dans les virtualhost concernés la ligne suivante: Include conf-available/serve-cgi-bin.conf
    – activer par défault pour tous vos sites la config cgi: a2enconf serve-cgi-bin.conf
    Attention ! Pensez à éditer tous vos fichiers sites utilisés et supprimez les lignes ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ et blocks <Directory "/usr/lib/cgi-bin">
  7. Il va falloir maintenant basculer certains fichiers présents dans /etc/apache2/conf.d dans /etc/apache2/conf-available avec l'extension .conf, et les activer avec la commande a2enconf. Exemple:

    cd /etc/apache2/conf.d
    cp cp backuppc.conf ../conf-available/
    cp munin.conf ../conf-available/
    cp phpmyadmin.conf ../conf-available/
    cp phpsysinfo ../conf-available/phpsysinfo.conf
    a2enconf backuppc munin phpmyadmin phpsysinfo
    Il nous restera à adapter ces fichiers pour pouvoir accéder aux services concernés.

  8. Nous allons activer le module actions:

    a2enmod actions

  9. On regarde les éventuelles erreurs de configuration. Vous pouvez alors utiliser 2 commandes:
    apache2 -t
    apache2ctl configtest
    Si vous obtenez Syntax OK à cette dernière, c'est que l'on a déjà fait un grand pas !
  10. Allez, on redémarre le serveur apache !
    service apache2 restart
    Allez on croise les doigts pour avoir [ ok ] ! Mais çà ne veut pas dire que tout est accessible !
  11. Vérifier le fonctionnement du php. Pour cela, il faut créer un fichier dans /var/www (ou votre dossier racine de site web) nommé phpinfo.php contenant:

    <?php
    phpinfo();
    ?>

    Maintenant dans un navigateur, il suffit de taper:

    http://ip_de_mon_serveur/phpinfo.php

    vous devriez voir afficher l'écran suivant:phpinfo

  12. Reste à corriger les problèmes des applications "tierces". Normalement, les applications web telles que phpmyadmin, backuppc fonctionneront sna problème. Pour munin, il est nécessaire de modifier le fichier /etc/apache2/conf-available/munin.conf:
    Remplacer les lignes suivantes (pensez à adapter à votre config):

    Order allow,deny
    Allow from localhost 127.0.0.0/8 ::1 192.168.x.x/24

    Par:

    Require local
    Require ip 127.0.0.0/8 ::1 192.168.x.x/24

    Recharger la nouvelle configuration par service apache2 reload et munin fonctionnera de nouveau.

  13. Retirer les dépôts testing, inutile de tenter le diable pour l'instant.
  14. Pour le fun, on peut enfin passer à un module différent de celui activé par défaut avec la version 2.2

    a2dismod mpm-prefork
    a2dismod mpm-worker
    a2enmod mpm-event
    service apache2 restart

Cà y est, on a un apache 2.4 fonctionnel ! Une migration toute simple, non ?

sources: https://www.linode.com/docs/websites/apache/running-fastcgi-php-fpm-on-debian-7-with-apache