Une VM Linux qui sert au développement PHP 5.3 avec Eclipse – partie III

Ce billet est le troisième d’une série d’articles décrivant la fabrication d’une Machine Virtuelle (VM) de développement pour une équipe de dévelopeurs.

Cette partie couvrira l’installation de Apache et de PHP 5.3 (la dernière version depuis Juin 2009) qui offre beaucoup d’avancées. Je pense que c’est devenu le juste minimum a cause de ces nouvelles fonctionnalités. Voir articles faits par IBM developerworksWhat’s new in PHP 5.3 (part 1, part 2, part 3, and part 4)“.

J’ai séparé cette série en quatre volets.

  1. Description du concept
    Ce que je vais discuter dans cette série d’articles n’est pas nécessairement connu de tous. Je vais donc vulgariser un peu avant de commencer.
  2. Installation du système
    Je donne ici mon secret de magicien avec quelques configurations que je considère importantes pour un environement d’hébergement web pour améliorer la sécruité (le strict minimum pour cette série d’articles. Je pourrai en faire un plus poussé plus tard).
  3. Compilation de PHP 5.3 (cet article)
    Comment installer Apache 2.x avec le dernier cutting-edge PHP.
  4. Installation de l’environnement de développement avec Eclipse PDT (à venir)
    La magie se passe par là! Avec ce setup votre équipe pourra répliquer l’installation de développement a volonté.

Avant tout, quelques précautions

Avertissement! – Changement environement:
Faire des modifications avec Apache et PHP sur un serveur en production peut causer des problèmes sérieux! Il est conseillé de planifier et de pratiquer le déploiement AVANT de l’appliquer dans un environnement de production. Vous aurez été avertis!

Varia:

  • Désinstallez toutes les instances de PHP que vous avez installé. Il est recommandé d’avoir la version stable pour un environement de production et que l’environement de développement réflète la production.
  • Dans mes environements de travail j’ai choisi d’utiliser Debian Linux (stable) courrant. J’ai déjà utilisé d’autres distributions Linux pour des serveurs mais ça dépasse l’objectif de cet article.
  • Chaque ligne de commande commence soit par “$” (dollar sign) ou “#” (hash mark). Le # signifie que vous entrez la commande en tant que root
  • Le retour de chariot est illustré par un anti-slash “\” car je veut éviter de changer la largeur du billet! Vous pouvez simplement tout coller sur une ligne.

Compilation de PHP 5.3

1 Installer Apache

La première étape est d’installer Apache. Il est possible de le faire avec plusieurs autres serveurs (lighttpd par exemple) mais je ne l’utilise pas (lighttpd) pour autre chose que du caching statique ou du Proxying. Alors je ne couvrirai pas comment faire. Cet article le fait, par contre.

Cette commande devrait faire le travail.

# apt-get install apache2 apache2-mpm-prefork apache2-prefork-dev \
apache2-utils apache2.2-common

2. Installer MySQL et/ou PostgreSQL

L’engin de base de donnée utilisé est le choix de chacun. Je suis personnellement habitué avec MySQL mais pouvoir avoir les deux peut être utile.

PostgreSQL
# apt-get install postgresql-8.3 postgresql-client-8.3 \
postgresql-client-common postgresql-common postgresql-server-dev-8.3
MySQL
# apt-get install mysql-client mysql-client-5.0    mysql-common \
mysql-server mysql-server-5.0 mysql-server-core-5.0
3. Installer les librairies requises

PHP en tant que tel est facile a configurer mais les librairies externes font que c’est plus compliqué… malheureusement. Ce qui est bien c’est qu’avec Debian la documentation est entretenue fréquemment et il est facile de se reprendre.

Plusieurs heures peuvent être prises pour simplement préparer la commande “configure”. Avec ces notes vous devriez vous en sortir pas pire :)

Voici les packages que Debian fournit pour ce que PHP demande, comme ça vous pourrez éviter d’installer arbitrairement plusieurs dizaines de paquets!

# apt-get install libtidy-dev curl libcurl4-openssl-dev libcurl3 \
libcurl3-gnutls zlib1g zlib1g-dev libxslt1-dev libzip-dev libzip1 \
libxml2 libsnmp-base libsnmp15 libxml2-dev libsnmp-dev libjpeg62 \
libjpeg62-dev libpng12-0 libpng12-dev zlib1g zlib1g-dev libfreetype6 \
libfreetype6-dev libbz2-dev libxpm-dev libmcrypt-dev libmcrypt4

Note: libxpm4-dev proposé dans ma source d’information n’est pas trouvé dans Debian Lenny mis a jour le 2009-09-09 j’ai donc rectifié (pour libxpm-dev) la commande ci-haut.

4. Télécharger le code source de PHP

Visiter http://www.php.net et télécharger la version désirée. Actuellement, la version production est la 5.3

Personnellement je recommande d’avoir les fichiers de compilation dans /usr/src quoi que j’ai pas la conaissance de la science infuse ;)

# cd /usr/src/
# wget http://us3.php.net/get/php-5.3.0.tar.gz/from/this/mirror
# tar xvfz php-5-3-0.tar.gz
# cd php-5.3

5. La commande Configure.

La commande configure peut etre difficile a configurer surtout avec les librairies qu’on veut généralement mettre… généralement une certaine mesure du minimum.

Personnellement. Je recommande de faire la commande dans un fichier et de l’exécuter par la suite.

# vi configure.sh
 ./configure --with-apxs2=/usr/bin/apxs2 \
   --with-tidy=/usr --with-curl=/usr/bin --with-curlwrappers \
   --with-openssl-dir=/usr --with-zlib-dir=/usr --enable-mbstring \
   --with-xpm-dir=/usr --with-xsl=/usr --with-ldap --with-xmlrpc \
   --with-iconv-dir=/usr --with-snmp=/usr --enable-exif --enable-calendar \
   --with-bz2=/usr --with-mcrypt=/usr --with-gd --with-jpeg-dir=/usr \
   --with-png-dir=/usr --with-zlib-dir=/usr --with-freetype-dir=/usr \
   --enable-mbstring --enable-zip --with-pear

Je suggère d’ajouter les commande ci bas au configure plus bas en fonction de votre choix de gestionnaire de base de donnée.

PostgreSQL
--with-pdo-pgsql=/usr
MySQL
 --with-pdo-mysql=/usr --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr

Sortir avec :wq puis exécuter le script.

# /bin/bash ./configure.sh

L’écran devrait bouger beaucoup… généralement dans la doc on conseille ici d’aller prendre un café!

… Si tout va bien tout devrait terminer par quelque chose qui ressemble à “Thanks for using php”. Sinon…. je conseille ma solution aux problèmes numéro un. ;)

Faut pas s’en faire. Généralement c’est de tenter avec “apt-cache search” et “apt-get install” le nom de la librairie manquante.

6. Make et Make Install

Pour l’installer. Maintenant que PHP est “configure”-é il faut le compiler et l’installer avec make.

La commande est bien simple.

# make

Beaucoup de sortie ici aussi. Ça risque même d’être plus long dépendamment de la force du processeur disponible. C’est le temps de prendre une marche, encore.

Une fois que tout est terminé avec make, vous pouvez faire, accessoirement un “make test”.

La dernière étape est de faire le “install”

# make -i install

Pourquoi le -i? Parceque Ubuntu/Debian risque d’avertir pour certaines erreurs a cause de la différence d’installation d’Apache de Debian/Ubuntu, nous le ferons nous même a bras plus loin dans ce document.

7. Ajouter le module PHP dans Apache

Il faut ajouter le module dans Apache pour qu’il puisse interpreter… c’est logique. Étant donné que la commande make -i a surement fait son travail (sous Debian), nous devons nous assurer que tout est en ordre dans la configuration d’Apache.

Premièrement, copier la librairie compilée:

# updatedb
# locate libphp5
...
/usr/lib/apache2/modules/libphp5.so
/usr/src/php-5.3.0/libs/libphp5.la
/usr/src/php-5.3.0/libs/libphp5.so
...
# cp /usr/src/php-5.3.0/libs/libphp5.so /usr/lib/apache2/modules/libphp5_3.so

Je commencer par mettre a jour la base de donnée “locate”, ensuite je cherche où est disponible la librairie, puis ensuite j’utilise “cp” pour déplacer sous un autre nom la librairie.

Ensuite, dans le dossier:

# cd /etc/apache2/mods-available

Créez un nouveau fichier appelé php5.load et copiez-y le contenu suivant:

LoadModule php5_module /usr/lib/apache2/modules/libphp5_3.so

Enregistrer le fichier. Ensuite créez un fichier appelé php5.conf et collez-y ce contenu:

AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps

On est prêts! Il faut le charger dans Apache:

# a2enmod php5
Enabling module php5.
Run "/etc/init.d/apache2 restart" to activate new configuration!
# invoke-rc.d apache2 restart
* Restarting web server apache2
...waiting    ...done.

8. Tester l’installation

C’est assez simple rendus là.

On commence par le binaire en ligne de commande:

$ php -v
PHP 5.3.0 (cli) (built: Aug  17 2009 19:08:32)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

Tout va bien!

Ensuite, voir un phpinfo() dans le docroot. (Généralement /var/www/index.php).

< ?php
  phpinfo();
?>

PHP 5.3 phpinfo()

Conclusion

Je crois avoir bien réussi mon interprétation et ma traduction de l’article que j’ai utilisé. J’y ai ajouté mon grain de sel et rectifié ce qui a marché pour moi. Je vous conseille de documenter pour vos propres besoins ce que vous faites, on sait jamais quand on a besoin de refaire ce qu’on a déjà fait !

Références