GNU/Linux >> Tutoriels Linux >  >> Debian

Installation de Nginx avec PHP (comme PHP-FPM) et MariaDB (LEMP) sur Debian 8

Ce didacticiel vous montrera l'installation du serveur Web Nginx sur Debian 8. Nginx (prononcez "engine x") est un serveur HTTP gratuit, open source et hautes performances. Nginx est connu pour sa stabilité, son riche ensemble de fonctionnalités, sa configuration simple et sa faible consommation de ressources. Ce tutoriel montre comment vous pouvez installer Nginx avec le support PHP (via PHP-FPM) et MariaDB en remplacement de MySQL. Cette configuration est souvent appelée LEMP =L inux + nginx (prononcé "e moteur x") + M ySQL + P HP) .

Remarque préliminaire

Dans ce tutoriel, j'utilise le nom d'hôte server1.example.com avec l'adresse IP 192.168.1.100. Ces paramètres peuvent différer pour vous, vous devez donc les remplacer le cas échéant. Vous devriez avoir un serveur Debian 8, j'utiliserai le serveur minimal Debian comme système de base pour ce tutoriel.

Mise à jour du système

Il est recommandé de mettre à jour les listes de packages et d'installer toutes les mises à jour en attente avant de commencer la configuration de Nginx. Exécutez les commandes suivantes pour installer les mises à jour en attente.

apt-get update
apt-get upgrade -y

J'utiliserai l'éditeur nano plus tard pour éditer les fichiers de configuration. Nano peut être installé avec cette commande :

apt-get -y install nano 

Installation de MariaDB (en remplacement de MySQL)

Pour installer MariaDB, nous exécutons :

apt-get -y install mariadb-server mariadb-client

Il vous sera demandé de fournir un mot de passe pour l'utilisateur root MariaDB - ce mot de passe est valide pour l'utilisateur [email protected] ainsi que [email protected], nous n'avons donc pas besoin de spécifier manuellement un mot de passe root MariaDB plus tard :

Nouveau mot de passe pour l'utilisateur "root" de MariaDB :<-- yourrootsqlpassword
Répétez le mot de passe pour l'utilisateur "root" de MariaDB :<-- yourrootsqlpassword

 

Installer Nginx

Nginx est disponible sous forme de package pour Debian Jessie que nous pouvons installer comme suit :

apt-get -y install nginx

Démarrez ensuite Nginx :

systemctl start nginx.service

Tapez l'adresse IP ou le nom d'hôte de votre serveur Web dans un navigateur (par exemple, http://192.168.1.100), et vous devriez voir la page suivante :

La racine de document nginx par défaut sur Debian 8 est /var/www/html.

Installer PHP

Nous pouvons faire fonctionner PHP5 dans nginx via PHP-FPM (PHP-FPM (FastCGI Process Manager) est une implémentation alternative de PHP FastCGI avec quelques fonctionnalités supplémentaires utiles pour les sites de toute taille, en particulier les sites les plus fréquentés) que nous installons comme suit :

apt-get -y install php5-fpm

PHP-FPM est un processus démon (avec le fichier d'unité systemd php5-fpm.service) qui exécute un serveur FastCGI sur le socket /var/run/php5-fpm.sock.

Configuration de nginx

La configuration nginx se trouve dans /etc/nginx/nginx.conf que nous ouvrons maintenant :

nano /etc/nginx/nginx.conf

La configuration est facile à comprendre (vous pouvez en savoir plus ici :http://wiki.nginx.org/NginxFullExample et ici :http://wiki.nginx.org/NginxFullExample2)

Définissez d'abord le keepalive_timeout sur une valeur raisonnable comme 2 secondes :

[...]
    keepalive_timeout   2;
[...]

Les hôtes virtuels sont définis dans les conteneurs du serveur {}. Le vhost par défaut est défini dans le fichier /etc/nginx/sites-available/default - modifions-le comme suit :

nano /etc/nginx/sites-available/default
[...]
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]

nom du serveur _; en fait un vhost fourre-tout par défaut (bien sûr, vous pouvez également spécifier un nom d'hôte ici comme www.example.com).

J'ai ajouté index.php à la ligne d'index. racine /var/www/html; signifie que la racine du document est le répertoire /var/www/html.

La partie importante pour PHP est la strophe location ~ \.php$ {}. Décommentez-le comme indiqué ci-dessus pour l'activer.

Enregistrez maintenant le fichier et rechargez Nginx :

systemctl reload nginx.service

Ouvrez ensuite /etc/php5/fpm/php.ini...

nano /etc/php5/fpm/php.ini

... et définissez cgi.fix_pathinfo=0 :

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

Recharger PHP-FPM :

systemctl reload php5-fpm.service

Créez maintenant le fichier PHP suivant dans la racine du document /var/www/html/ :

nano /var/www/html/info.php
<?php
phpinfo();
?>

Maintenant, nous appelons ce fichier dans un navigateur (par exemple http://192.168.1.100/info.php) :

Comme vous le voyez, PHP5 fonctionne, et il fonctionne via FPM/FastCGI, comme indiqué dans la ligne API du serveur. Si vous faites défiler plus bas, vous verrez tous les modules déjà activés dans PHP5. MySQL n'y figure pas, ce qui signifie que nous n'avons pas encore de support MariaDB / MySQL en PHP.

Obtenir le support MySQL / MariaDB en PHP

Pour obtenir le support MySQL en PHP, nous pouvons installer le package php5-mysqlnd. C'est une bonne idée d'installer d'autres modules PHP, car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP disponibles comme ceci :

apt-cache search php5

Choisissez ceux dont vous avez besoin et installez-les comme ceci :

apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

APCu est un cache d'opcode PHP gratuit et ouvert pour la mise en cache et l'optimisation du code intermédiaire PHP qui étend l'opcache PHP. Il remplace le cache APC. et il est similaire à d'autres cacheurs d'opcodes PHP, tels que eAccelerator et Xcache. Il est fortement recommandé d'en installer un pour accélérer votre page PHP.

APCu peut être installé comme suit :

apt-get install php5-apcu

Rechargez maintenant PHP-FPM :

systemctl reload php5-fpm.service

Rechargez maintenant http://192.168.1.100/info.php dans votre navigateur et faites défiler à nouveau jusqu'à la section des modules. Vous devriez maintenant y trouver plein de nouveaux modules, dont le module MySQL :

Faire en sorte que PHP-FPM utilise une connexion TCP (facultatif)

Par défaut, PHP-FPM écoute sur le socket /var/run/php5-fpm.sock. Il est également possible de faire en sorte que PHP-FPM utilise une connexion TCP. Pour cela, ouvrez /etc/php5/fpm/pool.d/www.conf...

nano /etc/php5/fpm/pool.d/www.conf

... et faites en sorte que la ligne d'écoute ressemble à ceci :

[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]

Cela fera écouter PHP-FPM sur le port 9000 sur l'IP 127.0.0.1 (localhost). Assurez-vous d'utiliser un port qui n'est pas utilisé sur votre système.

Rechargez ensuite PHP-FPM :

systemctl reload php5-fpm.service

Passez ensuite par votre configuration Nginx et tous vos vhosts et changez la ligne fastcgi_pass unix:/var/run/php5-fpm.sock; à fastcgi_pass 127.0.0.1:9000;, par ex. comme ceci :

nano /etc/nginx/sites-available/default
[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
} [...]

Enfin, rechargez Nginx :

systemctl reload nginx.service

Image de machine virtuelle

Ce tutoriel est disponible en tant que machine virtuelle prête à l'emploi au format OVA/OVF pour les abonnés Howtoforge. Le format VM est compatible avec VMWare et Virtualbox et probablement d'autres outils qui peuvent importer ce format. Vous pouvez trouver le lien de téléchargement dans le menu de droite en haut. Cliquez sur le nom du fichier pour lancer le téléchargement.

Les identifiants de connexion de la VM sont :

Connexion SSH

Nom d'utilisateur :root
Mot de passe :howtoforge

Connexion MariaDB

Nom d'utilisateur :root
Mot de passe :howtoforge

Veuillez changer les mots de passe après le premier démarrage.

La VM est configurée pour l'IP statique 192.168.1.100, l'IP peut être changée dans le fichier /etc/network/interfaces.

  • nginx :http://nginx.net/
  • Wiki nginx :http://wiki.codemongers.com/Main
  • PHP :http://www.php.net/
  • PHP-FPM :http://php-fpm.org/
  • MariaDB : https://mariadb.org/
  • Debian :http://www.debian.org/

Debian
  1. Installation de Nginx avec PHP et MariaDB (en remplacement de MySQL) - LEMP - sur Ubuntu 15.10 (Wiley Werewolf)

  2. Comment installer Phorum avec Nginx sur Debian 9

  3. Comment installer Etherpad avec Nginx et SSL sur Debian 11

  4. Comment installer et configurer PHP et Nginx (LEMP) sur Debian 11

  5. Installer Pagekit sur un VPS Debian 7 avec Nginx, PHP-FPM et MariaDB

Comment installer Nginx, MariaDB, PHP (pile LEMP) sur Debian 9

Installer Lighttpd avec PHP FPM et MariaDB (LLMP) sur Debian 9

Comment installer Nginx, MariaDB, PHP (pile LEMP) sur Debian 11

Installer Nginx avec PHP et MySQL (LEMP) plus SSL sur Debian 10

Comment installer Nginx avec PHP-FPM sur Debian 10

Comment installer phpBB avec LEMP (Nginx, MariaDB et PHP) sur Debian 11 Bullseye