Serveur Web · 9 min read · Nov 11, 2025
Le Serveur Parfait - CentOS 6.1 x86_64 Avec nginx [ISPConfig 3] - Page 5
15 Installer Nginx, PHP5 (PHP-FPM), Et Fcgiwrap
Nginx est disponible en tant que paquet pour CentOS 6.1 (depuis EPEL) que nous pouvons installer comme suit :
yum install nginxSi Apache2 est déjà installé sur le système, arrêtez-le maintenant…
/etc/init.d/httpd stop… et supprimez les liens de démarrage système d’Apache :
chkconfig --del httpdEnsuite, nous créons les liens de démarrage système pour nginx et le démarrons :
chkconfig –levels 235 nginx on
/etc/init.d/nginx start
(Si Apache2 et nginx sont tous deux installés, l’installateur ISPConfig 3 vous demandera lequel vous souhaitez utiliser - répondez nginx dans ce cas. Si l’un de ces deux est installé, ISPConfig effectuera la configuration nécessaire automatiquement.)
Nous pouvons faire fonctionner PHP5 dans nginx via PHP-FPM (PHP-FPM (FastCGI Process Manager) est une implémentation PHP FastCGI alternative avec des fonctionnalités supplémentaires utiles pour des sites de toute taille, en particulier les sites plus fréquentés). Nous pouvons installer php-fpm avec php-cli et quelques modules PHP5 comme php-mysql dont vous avez besoin si vous souhaitez utiliser MySQL depuis vos scripts PHP comme suit :
yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidyEnsuite, nous ouvrons /etc/php.ini…
vi /etc/php.ini… et changeons le rapport d’erreurs (pour que les notifications ne soient plus affichées) et décommentons cgi.fix_pathinfo=1 :
| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...] |
Aussi, définissez cgi.fix_pathinfo=0 :
vi /etc/php.ini| [...] ; cgi.fix_pathinfo fournit un support *réel* pour PATH_INFO/PATH_TRANSLATED pour CGI. Le comportement précédent de PHP était de définir PATH_TRANSLATED sur SCRIPT_FILENAME, et de ne pas comprendre ce qu'est PATH_INFO. Pour plus d'informations sur PATH_INFO, voir les spécifications CGI. Le réglage de ceci à 1 fera en sorte que PHP CGI corrige ses chemins pour se conformer à la spécification. Un réglage de zéro fait que PHP se comporte comme avant. La valeur par défaut est 1. Vous devriez corriger vos scripts pour utiliser SCRIPT_FILENAME plutôt que PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
(Veuillez lire http://wiki.nginx.org/Pitfalls pour découvrir pourquoi vous devriez faire cela.)
En plus de cela, afin d’éviter des erreurs comme
[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): Il n'est pas sûr de se fier aux paramètres de fuseau horaire du système. Vous êtes *tenu* d'utiliser le paramètre date.timezone ou la fonction date_default_timezone_set(). Dans le cas où vous avez utilisé l'une de ces méthodes et que vous obtenez toujours cet avertissement, vous avez très probablement mal orthographié l'identifiant de fuseau horaire. Nous avons sélectionné 'Europe/Berlin' pour 'CEST/2.0/DST' à la place dans /usr/share/nginx/html/info.php à la ligne 2… dans /var/log/php-fpm/www-error.log lorsque vous appelez un script PHP dans votre navigateur, vous devez définir date.timezone dans /etc/php.ini :
| [...] [Date] ; Définit le fuseau horaire par défaut utilisé par les fonctions de date ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |
Vous pouvez trouver le fuseau horaire correct pour votre système en exécutant :
cat /etc/sysconfig/clock[root@server1 tmp]# cat /etc/sysconfig/clock
ZONE=”Europe/Berlin”
[root@server1 tmp]#
Ensuite, créez les liens de démarrage système pour php-fpm et démarrez-le :
chkconfig –levels 235 php-fpm on
/etc/init.d/php-fpm start
PHP-FPM est un processus démon (avec le script d’initialisation /etc/init.d/php-fpm) qui exécute un serveur FastCGI sur le port 9000.
Pour obtenir le support CGI dans nginx, nous installons Fcgiwrap.
Fcgiwrap est un wrapper CGI qui devrait également fonctionner pour des scripts CGI complexes et peut être utilisé pour des environnements d’hébergement partagé car il permet à chaque vhost d’utiliser son propre répertoire cgi-bin.
Comme il n’y a pas de paquet fcgiwrap pour CentOS 6.1, nous devons le construire nous-mêmes. D’abord, nous installons quelques prérequis :
yum install fcgi-develMaintenant, nous pouvons construire fcgiwrap comme suit :
cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install
Cela installe fcgiwrap dans /usr/local/sbin/fcgiwrap.
Ensuite, nous installons le paquet spawn-fcgi qui nous permet d’exécuter fcgiwrap en tant que démon :
yum install spawn-fcgiOuvrez /etc/sysconfig/spawn-fcgi…
vi /etc/sysconfig/spawn-fcgi… et modifiez le fichier comme suit :
| # Vous devez définir certaines options de travail avant que le service "spawn-fcgi" ne fonctionne. # Si SOCKET pointe vers un fichier, alors ce fichier est nettoyé par le script d'initialisation. # # Voir spawn-fcgi(1) pour toutes les options possibles. # # Exemple : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=apache FCGI_GROUP=apache FCGI_EXTRA_OPTIONS="-M 0770" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |
Ajoutez maintenant l’utilisateur nginx au groupe apache :
usermod -a -G apache nginxCréez les liens de démarrage système pour spawn-fcgi…
chkconfig --levels 235 spawn-fcgi on… et démarrez-le comme suit :
/etc/init.d/spawn-fcgi startVous devriez maintenant trouver le socket fcgiwrap dans /var/run/fcgiwrap.socket, appartenant à l’utilisateur et au groupe apache (certains scripts, par exemple Mailman, s’attendent à être exécutés par l’utilisateur/groupe apache, c’est pourquoi nous ne faisons pas fonctionner spawn-fcgi en tant qu’utilisateur/groupe nginx, mais ajoutons plutôt nginx au groupe apache).
16 Installer phpMyAdmin
Ensuite, nous installons phpMyAdmin :
yum install phpmyadminEnsuite, nous changeons l’authentification dans phpMyAdmin de cookie à http :
vi /usr/share/phpmyadmin/config.inc.php| [...] /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |
Vous pouvez maintenant trouver phpMyAdmin dans le répertoire /usr/share/phpmyadmin/.
Après avoir installé ISPConfig 3, vous pouvez accéder à phpMyAdmin comme suit :
L’application ISPConfig vhost sur le port 8081 pour nginx est livrée avec une configuration phpMyAdmin, vous pouvez donc utiliser http://server1.example.com:8081/phpmyadmin ou http://server1.example.com:8081/phpMyAdmin pour accéder à phpMyAdmin.
Si vous souhaitez utiliser un alias /phpmyadmin ou /phpMyAdmin que vous pouvez utiliser depuis vos sites web, c’est un peu plus compliqué que pour Apache car nginx n’a pas d’alias globaux (c’est-à-dire, des alias qui peuvent être définis pour tous les vhosts). Par conséquent, vous devez définir ces alias pour chaque vhost depuis lequel vous souhaitez accéder à phpMyAdmin.
Pour ce faire, collez ce qui suit dans le champ Directives nginx de l’onglet Options du site web dans ISPConfig :
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
Si vous utilisez http s au lieu de http pour votre vhost, vous devez ajouter la ligne fastcgi_param HTTPS on; à votre configuration phpMyAdmin comme ceci :
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- ajoutez cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
Si vous utilisez à la fois http et https pour votre vhost, vous devez ajouter la section suivante à la section http {} dans /etc/nginx/nginx.conf (avant toute ligne d’inclusion) qui détermine si le visiteur utilise http ou https et définit la variable $fastcgi_https (que nous utiliserons dans notre configuration phpMyAdmin) en conséquence :
vi /etc/nginx/nginx.conf| [...] http { [...] ## Détecter quand HTTPS est utilisé map $scheme $fastcgi_https { default off; https on; } [...] } [...] |
N’oubliez pas de recharger nginx par la suite :
/etc/init.d/nginx reload Ensuite, allez à nouveau dans le champ Directives nginx, et au lieu de fastcgi_param HTTPS on; vous ajoutez la ligne fastcgi_param HTTPS $fastcgi_https; afin que vous puissiez utiliser phpMyAdmin pour les requêtes http et https :
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- ajoutez cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
17 Installer Mailman
Depuis la version 3.0.4, ISPConfig permet également de gérer (créer/modifier/supprimer) des listes de diffusion Mailman. Si vous souhaitez profiter de cette fonctionnalité, installez Mailman comme suit :
yum install mailmanAvant de pouvoir démarrer Mailman, une première liste de diffusion appelée mailman doit être créée :
/usr/lib/mailman/bin/newlist mailman[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Entrez l’email de la personne gérant la liste : <– adresse email de l’admin, par exemple [email protected]
Mot de passe initial de mailman : <– mot de passe admin pour la liste mailman
Pour terminer la création de votre liste de diffusion, vous devez éditer votre fichier /etc/aliases (ou équivalent) en ajoutant les lignes suivantes, et éventuellement en exécutant le programme newaliases :
liste de diffusion mailman
mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”
Appuyez sur entrer pour notifier le propriétaire de mailman… <– ENTRER
[root@server1 tmp]#
Ouvrez ensuite /etc/aliases…
vi /etc/aliases… et ajoutez les lignes suivantes :
| [...] mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman" |
Exécutez
newaliasesensuite et redémarrez Postfix :
/etc/init.d/postfix restartCréez les liens de démarrage système pour Mailman et démarrez-le :
chkconfig –levels 235 mailman on
/etc/init.d/mailman start
Maintenant, nous devons créer ce lien symbolique pour faire fonctionner Mailman avec ISPConfig :
cd /usr/lib/mailman/cgi-bin/
ln -s ./ mailman
Si vous souhaitez utiliser Mailman depuis vos sites web créés via ISPConfig, c’est un peu plus compliqué que pour Apache car nginx n’a pas d’alias globaux (c’est-à-dire, des alias qui peuvent être définis pour tous les vhosts). Par conséquent, vous devez définir ces alias pour chaque vhost depuis lequel vous souhaitez accéder à Mailman.
Pour ce faire, collez ce qui suit dans le champ Directives nginx de l’onglet Options du site web dans ISPConfig :
| location /cgi-bin/mailman { alias /usr/lib/mailman/cgi-bin; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/mailman$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/lib/mailman$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/lib/mailman/icons; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } |
Cela définit l’alias /cgi-bin/mailman/ pour votre vhost, ce qui signifie que vous pouvez accéder à l’interface d’administration de Mailman pour une liste à http://
Sous http://
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.