juin 11
24
PHP, APC, Cherokee & MySQL
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.
cd lamp
PHP
APC
Cherokee
MySQL
PECL memcache
Dépendances
Si vous êtes sur un système 64bits vous aurez besoin des version 32bits des librairies JPEG et PNG.
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 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
make
su -c "make install"
su -c "cp php.ini-production /etc/php.ini"
Script de démarrage
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/"
Remarques
- Pensez à régler le timezone dans le fichier php.ini
- Régler la variable “error_log” dans le fichier php.ini
APC
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
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
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
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.
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
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 :
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







