Serveur LEMP (CentOS 7.3) 1/3 : Installation et configuration de Nginx

LEMP veut dire Linux, Nginx (Engine X), MySQL (MariaDB maintenant), PHP.

Installation de CentOS

Concernant l’installation de CentOS, je vous laisse vous référer à la documentation disponible ici. Pour la configuration de l’accès SSH, se référer à la documentation disponible ici.

Installation de Nginx

Nginx est un serveur web, plus léger et plus performant qu’Apache pour les sites web à fort traffic. Nginx n’étant pas disponible dans les dépôts CentOS, vous devez installer les dépôts EPEL en suivant la documentation que j’ai écrite ici. Nous allons l’installer via la commande suivante :

1
# yum install nginx

Par défaut le port 80 n’est pas ouvert sur le firewall (firewalld). Nous allons donc l’ouvrir via la commande suivante :

1
# firewall-cmd --permanent --zone=public --add-service=http

Comme nous venons de créer une règle permanente, nous devons demander à « firewalld » de relire les règles via la commande suivante :

1
# firewall-cmd --reload

On démarre Nginx en utilisant la commande suivante :

1
# systemctl start nginx.service

Maintenant on peut vérifier que notre serveur fonctionne bien en entrant l’adresse suivante dans notre navigateur :

http://IP_DE_VOTRE_SERVEUR/

Vous devriez obtenir le résultat suivant :

https://www.lecoindesdocs.fr/images/2017/02/23/nginx_welcome_centos7-1.png

Configuration de Nginx

Sur CentOS, le démon Nginx n’est pas configuré pour se lancer au démarrage de la machine. Nous allons le configurer pour qu’il se lance à chaque démarrage via la commande suivante :

1
# systemctl enable nginx.service

On créé le répertoire qui contiendra les fichiers du site web via la commande suivante :

1
# mkdir -p /var/www/html/monsiteweb.fr

On créé le répertoire qui contiendra les fichiers de log du site web via la commande suivante :

1
# mkdir /var/log/nginx/monsiteweb.fr

Nous allons créer un VirtualHost que nous appellerons « monsiteweb.fr.conf » via la commande suivante :

1
# vi /etc/nginx/conf.d/monsiteweb.fr.conf

On y enregistre les lignes suivantes :

1
2
3
4
5
6
7
server {
     listen 80;
     server_name www.monsiteweb.fr;
     root /var/www/html/monsiteweb.fr;
     error_log /var/log/nginx/monsiteweb.fr/error.log;
     access_log /var/log/nginx/monsiteweb.fr/access.log;
}

On enregistre et ferme le fichier.

On va créer un fichier index.html dans le répertoire /var/www/html/monsiteweb.fr via la commande suivante :

1
# echo " <h1>Nouvel espace web créé</h1> " > /var/www/html/monsiteweb.fr/index.html

On vérifie que l’on n’a pas fait d’erreur lors de la configuration de notre virtualhost via la commande suivant :

1
# nginx -t

Nous devons obtenir les messages suivants :

1
2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si c’est bon, on recharge la configuration de Nginx via la commande suivante :

1
# systemctl reload nginx.service

Afin de pouvoir accéder à votre site via l’url http://www.monsiteweb.fr, il faut ajouter une ligne au fichier hosts. Avant de modifier le fichier hosts, nous allons le sauvegarder via la commande suivante :

1
# cp /etc/hosts /etc/hosts.ori

Pour cela on édite le fichier via la commande suivante :

1
# vi /etc/hosts

Puis ajouter la ligne suivante :

1
xxx.xxx.xxx.xxx www.monsiteweb.fr

On vérifie ensuite que le virtualhost fonctionnent en accédant à http://www.monsiteweb.fr et vous devriez voir Nouvel espace web créé Vous avez remarqué que Nginx n’interprète pas correctement les caractères avec accent. Pour régler ce problème, il faut activer la prise en charge du jeux de caractères UTF-8. Pour cela il suffit de rajouter la ligne « charset UTF-8; » dans le fichier de configuration de notre VirtualHost comme ci-dessous :

1
2
3
4
5
6
7
8
server {
     listen 80;
     server_name www.monsiteweb.fr;
     root /var/www/html/monsiteweb.fr;
     charset UTF-8;
     error_log /var/log/nginx/monsiteweb.fr/error.log;
     access_log /var/log/nginx/monsiteweb.fr/access.log;
}

On redémarre Nginx pour prendre en compte le nouveau paramètre via la commande suivante :

1
# systemctl restart nginx