- 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
- 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
- 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
- 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/*
- 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
- 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
- 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.
- 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/
- 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
- 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