Configuration complète de Nginx, MySQL et PHP sur CentOS 6.2

  1. Paramétrage du pare-feu pour ouvrir les ports 80 et 3306

Modifiez le fichier de configuration du pare-feu pour autoriser le trafic sur les ports nécessaires :

vi /etc/sysconfig/iptables

Ajoutez les règles suivantes pour le port HTTP (80) et MySQL (3306) :

-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 3306 -m state --state NEW -j ACCEPT

Intégrez ces lignes dans le fichier complet, par exemple après les règles pour le port SSH (22) :

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 3306 -m state --state NEW -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Redémarrez le service iptables pour appliquer les modifciations :

/etc/init.d/iptables restart
  1. Désactivation de SELinux

Éditez le fichier de configuration SELinux pour le désactiver :

vi /etc/selinux/config

Remplacez la ligne SELINUX=enforcing par :

SELINUX=disabled

Enregistrez et redémarrez le système pour que les changements prennent effet :

shutdown -r now
  1. Configuration du dépôt yum tiers pour CentOS 6.2

Installez wget et ajoutez le dépôt Atomic pour accéder aux paquets supplémentaires :

yum install wget
wget http://www.atomicorp.com/installers/atomic
sh ./atomic
yum check-update
  1. Installation de Nginx

Installez Nginx via yum, démarrez le service et configurez-le pour lancer au démarrage :

yum install nginx
service nginx start
chkconfig nginx on
/etc/init.d/nginx restart

Supprimez les fichiers de test par défaut pour éviter les conflits :

rm -rf /usr/share/nginx/html/*
  1. Installation de MySQL

5.1. Installer le serveur MySQL

Installez les paquets MySQL et démarrez le service :

yum install mysql mysql-server
/etc/init.d/mysqld start
chkconfig mysqld on

Copiez le fichier de configuration médium et redémarrez le système :

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
shutdown -r now

5.2. Sécuriser le compte root MySQL

Lancez l'outil de sécurisation pour définir un mot de passe :

mysql_secure_installation

Suivez les invites pour configurer le mot de passe et désactiver les accès anonymes. Redémarrez ensuite MySQL :

/etc/init.d/mysqld stop
/etc/init.d/mysqld start
service mysqld restart
  1. Installation de PHP et de ses composants

6.1. Installer PHP

Installez PHP depuis le dépôt yum :

yum install php

6.2. Ajouter les modules pour le support de MySQL et FastCGI

Installez les extensions nécessaires pour intégrer PHP avec MySQL et Nginx :

yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel php-fpm

Redémarrez les services concernés :

/etc/init.d/mysqld restart
/etc/init.d/nginx restart
/etc/rc.d/init.d/php-fpm start
chkconfig php-fpm on
  1. Configurer Nginx pour gérer les scripts PHP

Sauvegardez la configuration principale de Nginx :

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
vi /etc/nginx/nginx.conf

Modifiez l'utilisateur d'exécution pour correspondre à celui de Nginx :

user nginx nginx;

Sauvegardez et éditez la configuration par défaut du site :

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
vi /etc/nginx/conf.d/default.conf

Ajustez la directive d'index pour prioriser les fichiers PHP :

index index.php index.html index.htm;

Décommentez et modifiez la section pour traiter les fichiers PHP via FastCGI :

location ~ \.php$ {
    root          html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include       fastcgi_params;
}

Assurez-vous que le chemin est correct pour éviter les erreurs d'exécution.

  1. Ajustements de la configuration PHP

Éditez le fichier php.ini pour des optimisations de sécurité et de performance :

vi /etc/php.ini

Définissez le fuseau horaire et désactivez l'affichage des informations de version :

date.timezone = PRC
expose_php = Off

Restreignez les fonctions dangereuses et configurez le répertoire racine :

disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
open_basedir = .:/tmp/
  1. Configuration de php-fpm

Sauvegardez et mdoifiez la configuration du gestionnaire de processus PHP :

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak
vi /etc/php-fpm.d/www.conf

Changez l'utilisateur et le groupe pour aligner avec Nginx :

user = nginx
group = nginx

Redémarrez tous les services pour appliquer les changements :

/etc/init.d/mysqld restart
/etc/init.d/nginx restart
/etc/rc.d/init.d/php-fpm restart
  1. Vérification de l'installation

Créez un fichier de test dans le répertoire racine de Nginx :

cd /usr/share/nginx/html/
vi index.php

Ajoutez le code PHP suivant pour vérifier la configuration :

<?php
    phpinfo();
?>

Ajustez les permissions pour que Nginx puisse accéder aux fichiers :

chown nginx:nginx /usr/share/nginx/html/ -R
chmod 700 /usr/share/nginx/html/ -R

Étiquettes: nginx MySQL PHP CentOS iptables

Publié le 4 juin à 06h56