Ce billet me sert de mémento pour un déploiement de : PHP (sous sa forme FPM), MySQL et Cherokee comme serveur Web.
L’installation a été faite sur une Fedora 15 64bits fraichement installée (il manquait donc des dépendances). Cette distribution propose tous ces composants sous forme de RPM et quelques « yum install » pourraient vous suffire, cependant cela ne vous fera pas mettre la main dans le cambouis et vous n’apprendrez pas comment tout cela fonctionne 😉
Le niveau de l’article n’est pas haut mais il faut connaitre les bases de la ligne de commande sous linux car je n’explique pas toujours 😮
Petite remarque concernant l’installation de PHP : J’y ajoute 2 extensions :
Pré-requis
Nous allons tout d’abord nous faire un dossier et y stocker tous les fichiers (codes sources) nécessaires. En date du billet, il s’agit des dernières versions disponible.
mkdir lamp
cd lamp
PHP
wget http://fr2.php.net/get/php-5.3.10.tar.bz2/from/this/mirror
APC
wget http://pecl.php.net/get/APC-3.1.9.tgz
Cherokee
wget http://www.cherokee-project.com/download/1.2/1.2.101/cherokee-1.2.101.tar.gz
MySQL
wget http://www.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.20-linux2.6-x86_64.tar.gz/from/http://mirrors.ircam.fr/pub/mysql/
PECL memcache
wget http://pecl.php.net/get/memcache-3.0.6.tgz
Dépendances
su -c "yum install libpng-devel libjpeg-devel libmcrypt-devel freetype-devel subversion autoconf213 libxml2-devel libtool-ltdl-devel bzip2-devel libcurl-devel rddtool"
Si vous êtes sur un système 64bits vous aurez besoin des version 32bits des librairies JPEG et PNG.
yum install libjpeg-turbo-devel.i686 libpng-devel.i686
PHP
Nous allons ajouter l’extension « memcached » en static dans PHP. Pour cela il faut décompresser PHP et memcached. Puis ensuite nous déplacerons memcached décompressé dans le dossier des extensions de PHP (le code source).
Ensuite il faut régénérer le fichier de configuration de la compilation pour que PHP puisse prendre en charge cette nouvelle extension.
tar zxf memcache-3.0.6.tgz
tar jxf php-5.3.10.tar.bz2
mv memcache-3.0.6 ./php-5.3.10/ext/memcache
cd php-5.3.10
rm configure
./buildconf --force
Si vous rencontrez un problème lors de la recréation de la configuration allez voir mon billet sur l’utilisation d’autoconf 2.13
Configuration et compilation
./configure --prefix=/usr/local/php-fpm --enable-fpm --with-config-file-path=/etc --with-zlib --with-bz2 --with-gd --with-jpeg-dir=/usr/lib64 --with-png-dir=/usr/lib64 --enable-mbstring --without-pear --enable-gd-native-ttf --enable-zip --without-pdo-sqlite --without-sqlite --without-sqlite3 --with-mhash --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-curl --with-freetype-dir --enable-gd-native-ttf --with-mcrypt --enable-memcache --disable-ipv6
make
su -c "make install"
su -c "cp php.ini-production /etc/php.ini"
Script de démarrage
su -c "cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm"
su -c "chmod 0755 /etc/init.d/php-fpm"
su -c "cp /usr/local/php-fpm/etc/php-fpm.conf.default /usr/local/php-fpm/etc/php-fpm.conf"
su -c "chown -R apache:apache /usr/local/php-fpm/var/"
service php-fpm start
Remarques
- Pensez à régler le timezone dans le fichier php.ini
- Régler la variable “error_log” dans le fichier php.ini
APC
tar zxf APC-3.1.9.tgz
cd APC-3.1.9
/usr/local/php-fpm/bin/phpize
./configure --enable-apc --with-php-config=/usr/local/php-fpm/bin/php-config
make
su -c "make install"
Réglage dans le php.ini
extension=apc.so
apc.enabled="1"
apc.shm_segments="1"
apc.shm_size="128M"
apc.num_files_hint="1024"
apc.ttl="7200"
apc.user_ttl="7200"
apc.gc_ttl="3600"
apc.cache_by_default="1"
;apc.filters=""
apc.mmap_file_mask="/tmp/apcphp5.XXXXXX"
apc.slam_defense="0"
apc.file_update_protection="2"
apc.enable_cli="0"
apc.max_file_size="1M"
apc.stat="1"
apc.write_lock="1"
apc.report_autofilter="0"
apc.include_once_override="0"
apc.rfc1867="0"
apc.rfc1867_prefix="upload_"
apc.rfc1867_name="APC_UPLOAD_PROGRESS"
apc.rfc1867_freq="0"
apc.localcache="0"
apc.localcache.size="512"
apc.coredump_unmap="0"
Cherokee
tar zxf cherokee-1.2.101.tar.gz
cd cherokee-1.2.101
./configure --with-wwwuser=apache --with-wwwgroup=apache --prefix=/usr/local/cherokee --sysconfdir=/etc
make
su -c "make install"
Script de démarrage
Je vous propose ce script de démarrage qu’il faudra placer dans /etc/init.d
Cherokee init.d script
su -c "chmod +x /etc/init.d/cherokee"
Administrer le serveur
En effet, il existe une interface d’administration qui vous évitera de toucher au fichier de conf plutot indigeste…
Sur votre serveur, connecté en root.
/usr/local/cherokee/sbin/cherokee-admin
L’administration va se lancer sur le port 9090 sur 127.0.0.1 et va vous générer un mot de passe. Ce mot de passe change à chaque lancement de l’administration.
Le probleme d’etre sur http://127.0.0.1:9090/ c’est que s’il s’agit d’un serveur distant (c’est à dire que ce n’est pas votre propre machine) vous aurez du mal à vous connecter (c’est à dire que si par exemple votre serveur à l’IP 192.168.10.1 vous ne pourrez pas vous y connecter dessus en faisant http://192.168.10.10:9090 ).
Pour résoudre ce probleme vous avez 2 solutions :
- Ajouter un paramètre lors du lancement de l’admin
- Se connecter en utilisant un tunnel SSH
Cela vous permet donc de vous connecter via l’IP “public” de votre serveur. Mais attention ! Car toute personne connaissant le port + le mot de passe peut alors venir modifier votre configuration. Ce n’est donc pas recommandé sur un serveur en production.L’autre méthode consiste à créer un tunnel SSH entre votre poste et le serveur distant. Pour cela votre poste doit tourner sous linux pour executer une commande « ssh ».
Voici la commande
ssh -l utilisateurServeurDistant -L 9090:localhost:9090 adresseIPServeurDistant
Puis il faudra saisir le mot de passe correspondant à l’utilisateur distant que vous avez renseigné.
Une fois que vous êtes connecté vous pouvez lancer un navigateur et vous connecter via http://localhost:9090/Personnellement je préfère la première méthode mais avec quelques précautions :
- L’interface d’administration ne doit être lancée que lorsque vous en avez vraiment besoin. Une fois vos changements terminés, arrêtez-la.
- Utilisez un firewall pour limiter les accès au port 9090 à votre seul adresse IP
Configuration de la “source PHP”
Cherokee ne va pas détecter PHP car il cherche la version “CGI” (Il cherche dans le PATH l’exécutable en plus). Donc nous allons paramétrer nous même la source.
Utilisez l’interface d’admin de cherokee (voir le chapitre précédent)
Dans la catégorie “Sources” cliquez sur le “+” pour ajouter.
- Tapez un surnom : PHP-FPM
- Tapez la connection : 127.0.0.1:9000
ps: Pensez à démarrer le démon de PHP-FPM
MySQL
Attention car si vous utilisez KDE, vous allez avoir un problème avec MySQL déjà installé !
A faire en root :
groupadd mysql
useradd -r -g mysql mysql
tar zxf mysql-5.5.13-linux2.6-x86_64.tar.gz
mv mysql-5.5.13-linux2.6-x86_64 /usr/local/
cd /usr/local
ln -s /usr/local/mysql-5.5.13-linux2.6-x86_64/ /usr/local/mysql
cd mysql
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
cp support-files/mysql.server /etc/init.d/mysqld
cp ./support-files/my-medium.cnf /etc/my.cnf
chkconfig --add mysqld
Conclusion
Bon voila, je m’arrête ici pour ce billet, j’espere qu’il vous aura été utile 🙂