Passer au contenu principal

Installer php-fpm et nginx sur Debian 8



Du serveur stable et rapide dépend du destin du site. La lenteur de son travail et la fréquence de ses sorties peuvent effrayer les visiteurs et les moteurs de recherche. Ce dernier abaissera également la note du site de freinage dans les résultats de la recherche et ne figurera pas dans le top 10, mais dans le top 100 pour toutes les requêtes.

Utiliser un groupe de nginx et php-fpm pour la maintenance du site vous permet d’accroître la rapidité de leur travail ainsi que la stabilité du système dans son ensemble. De plus, en refusant d’utiliser Apache, nous simplifions quelque peu le système et nous le protégeons même. Après tout, s’il n’existe pas d’apache, l’attaquant ne pourra pas utiliser, par exemple, le fichier .htaccess à ses propres fins.



Le paquet nginx + php-fpm est assez facile à configurer et est supporté par de nombreux CMS populaires: WordPress, MODX, DLE, divers frameworks. Tout cela peut fonctionner sans Apache encombrant.

Lors de l'installation d'un serveur Web, ne vous laissez pas créer d'utilisateurs. Idéalement, un utilisateur distinct devrait être créé pour chaque site. Ainsi, nous pouvons protéger d'autres sites si l'un des utilisateurs est piraté. Les exemples de cet article sont écrits en tenant compte du fait que vous avez créé des utilisateurs conformément aux instructions .



Commencez par installer les modules de base: php-fpm, mysql, curl, GD. Tout le reste est une nécessité individuelle.

  # aptitude install nginx php5-fpm php5-mysqlnd php5-curl php5-gd 

Les fichiers de configuration se trouvent dans le répertoire / etc / php5 / fpm / .

Contenu de l'article:

Nous configurons php-pool pour le service des requêtes

Initialement, php-fpm n'a qu'un seul pool appelé www. Nous allons l'utiliser comme base pour d'autres piscines.



Ouvrez le fichier de configuration /etc/php5/fpm/pool.d/www.conf , prenez en compte certaines variables et sélectionnez-en des valeurs.

La première variable est le nom du pool. Il est placé entre crochets et ne peut pas coïncider avec le nom d’un utilisateur existant dans le système.

[www]

Ensuite, nous indiquons le nom de l'utilisateur et son groupe, dans le répertoire de base du site.

  utilisateur = nom d'utilisateur
 groupe = www-data 

Indiquez que le pool doit fonctionner en tant que socket Unix. La variable $ pool sera remplacée par le nom.

listen = /var/run/php-$pool.sock

Nous déterminons l'utilisation du mode statique, dans lequel un certain nombre de processus de pool sont créés lors du démarrage de fpm. Ils servent toutes les demandes entrantes.

pm = static

Pourquoi un tel choix? :) C'est l'option la plus économique. Chaque processus du pool occupera la quantité de RAM allouée à la variable memory_limit plus plusieurs mégaoctets par module connecté, cache, etc. Dans la version statique, toutes les demandes ne seront traitées que par les processus créés et les nouvelles ne seront pas générées (et occuperont une mémoire précieuse). En conséquence, nous obtenons une consommation de mémoire fixe.

Spécifiez le nombre requis de processus répondant aux demandes. Il est sélectionné en fonction de la charge de travail.

pm.max_children = 3

Je recommande d'ajouter les paramètres suivants à la fin du fichier de configuration du pool.

Répertoire pour placer des fichiers temporaires:

  php_admin_value [upload_tmp_dir] = "/ var / www / username / tmp" 

Le répertoire pour stocker les fichiers de session:

  php_admin_value [session.save_path] = "/ var / www / nom d'utilisateur / sessions" 

Pour des raisons de sécurité, l'accès à ces répertoires ne devrait être disponible que pour l'utilisateur, avec les autorisations pour lesquelles le pool php-fpm est démarré. De même, n'utilisez pas le même répertoire pour stocker les fichiers de session et les fichiers temporaires.

La limite de mémoire pour l'exécution de scripts doit être sélectionnée en fonction des exigences du site. Pour commencer:

  php_admin_value [memory_limit] = 50M 

Spécifiez un paramètre requis qui élimine la vulnérabilité :

  php_admin_value [cgi.fix_pathinfo] = 0 

Les variables sendmail_path et open_basedir ne sont pas spécifiquement indiquées. Ils seront passés en tant que paramètres fast-cgi dans le fichier de configuration nginx. Ainsi, pour chaque site spécifique, vous pouvez définir vos propres paramètres. :)

Une fois tous les paramètres nécessaires spécifiés, vous devez recharger la configuration php-fpm avec la commande suivante:

  # service php5-fpm reload 

Traitement des scripts php avec nginx

Il reste à configurer nginx pour qu’il fonctionne avec php-fpm. Prêt config

  serveur {
  nom_serveur example.com ;
  écoutez 80;
  access_log / var / log / nginx / example.com .access.log;
  error_log / var / log / nginx / example.com .error.log;
  jeu de caractères utf-8;
  index index.php;
  root / var / www
  emplacement / {
   try_files $ uri $ uri / /index.php$args;
  }
  emplacement ~ \ .php $ {
   try_files $ uri = 404;
   fastcgi_pass unix: /run/php-www.sock;
   fastcgi_index index.php;
   inclure fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $ racine_documentaire $ fastcgi_script_name;
   fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com";
   fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";
  }
 } 

example.com remplace par votre domaine.

Description des paramètres :

try_files $uri =404; affichera l'erreur 404 dans le navigateur de l'utilisateur, au lieu du message, aucun fichier d'entrée spécifié , au cas où cette erreur se produirait.

fastcgi_pass - chemin vers le socket php-fpm.

  fastcgi_pass unix: /run/php-www.sock; 

La variable suivante définit le chemin d'accès à sendmail et le paramètre qui spécifie l'adresse de messagerie de l'administrateur du site. Remplacez mail@example.com par le vôtre .

  fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com"; 

Nous listons les répertoires pour open_basedir: le répertoire avec le site, le répertoire de sauvegarde des fichiers temporaires, le répertoire des fichiers de session.

  fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /"; 

Si vous devez transmettre plusieurs paramètres, procédez comme suit:

  fastcgi_param PHP_ADMIN_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com \ nopen_basedir = / var / www / exemple.com /: / var / save_path /: / var / tmp_dir /"; 

Comme vous pouvez le constater, les paramètres sont séparés par un saut de ligne: \ n .

Nous enregistrons toutes les modifications apportées et redémarrons nginx.

  # service nginx reload 


Comment évaluez-vous l'article?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 8 évaluations moyenne de 2.63 sur 5)
Chargement ...

” Les 4 commentaires “ Installer php-fpm et nginx sur Debian 8

  1. Bon après midi La directive racine dans la config httpd avec un point-virgule devrait probablement être fermée .. et la config elle-même devrait être placée dans / etc / nginx / sites-enabled avec le nom de l'adresse du site.

  2. Pourquoi créer des utilisateurs pour chaque site séparément?
    Qu'est-ce que cela signifie si un utilisateur est piraté, les autres sites seront en sécurité?

    Dois-je créer différents utilisateurs; si je ne travaille que dans le système, connectez-vous au système via SSH via un certificat.
    DB ne regarde pas non plus sur Internet.

    Merci

Ajouter un commentaire

Votre email ne sera pas publié.