GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Installation de Nginx avec PHP5 (et PHP-FPM) et le support MySQL (LEMP) sur Ubuntu 13.04

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 sur un serveur Ubuntu 13.04 avec le support PHP5 (via PHP-FPM) et le support MySQL (LEMP =L inux + nginx (prononcé "e moteur x") + M ySQL + P HP) .

Je n'émets aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

Dans ce tutoriel, j'utilise le nom d'hôte server1.example.com avec l'adresse IP 192.168.0.100. Ces paramètres peuvent différer pour vous, vous devez donc les remplacer le cas échéant.

J'exécute toutes les étapes de ce didacticiel avec les privilèges root, alors assurez-vous d'être connecté en tant que root :

sudo su

2 Installer MySQL 5

Pour installer MySQL, nous exécutons

apt-get install mysql-server mysql-client

Il vous sera demandé de fournir un mot de passe pour l'utilisateur root MySQL - 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 MySQL ultérieurement :

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

3 Installer Nginx

Nginx est disponible sous forme de package pour Ubuntu 13.04 que nous pouvons installer comme suit :

apt-get install nginx

Démarrez ensuite nginx :

/etc/init.d/nginx start

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

La racine de document nginx par défaut sur Ubuntu 13.04 est /usr/share/nginx/html.

4 Installer PHP5

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 install php5-fpm

PHP-FPM est un processus démon (avec le script d'initialisation /etc/init.d/php5-fpm) qui exécute un serveur FastCGI sur le socket /var/run/php5-fpm.sock.

5 Configuration de nginx

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

vi /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)

Tout d'abord (ceci est facultatif), ajustez le nombre de processus de travail et définissez keepalive_timeout sur une valeur raisonnable :

[...]worker_processes 4 ;[...] 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 :

vi /etc/nginx/sites-available/default
[...]serveur { écoute 80 ; écoutez [::]:80 default_server ipv6only=on ; racine /usr/share/nginx/html ; index index.php index.html index.htm; # Rendre le site accessible à partir de http://localhost/ nom_serveur _ ; location / { # Première tentative de servir la requête en tant que fichier, puis # en tant que répertoire, puis revenir à l'affichage d'un 404. try_files $uri $uri/ /index.html; # Décommentez pour activer naxsi sur cet emplacement # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; indexation automatique activée ; autoriser 127.0.0.1 ; autoriser ::1; Nier tous; } # Uniquement pour nginx-naxsi utilisé avec nginx-naxsi-ui :traiter les requêtes refusées #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #page_erreur 404 /404.html ; # redirige les pages d'erreur du serveur vers la page statique /50x.html # error_page 500 502 503 504 /50x.html; emplacement =/50x.html { racine /usr/share/nginx/html ; } # passe les scripts PHP au serveur FastCGI écoutant sur 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # REMARQUE :Vous devriez avoir "cgi.fix_pathinfo =0;" dans php.ini # Avec php5-cgi seul :#fastcgi_pass 127.0.0.1:9000; # Avec php5-fpm :fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php ; inclure fastcgi_params ; } # refuser l'accès aux fichiers .htaccess, si la racine du document d'Apache # concorde avec celle de nginx # emplacement ~ /\.ht { refuser tout; }}[...]

Décommentez les deux lignes d'écoute pour que nginx écoute sur le port 80 IPv4 et IPv6.

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 /usr/share/nginx/html ; signifie que la racine du document est le répertoire /usr/share/nginx/html.

La partie importante pour PHP est la strophe location ~ \.php$ {}. Décommentez-le pour l'activer. Veuillez noter que j'ai ajouté la ligne try_files $uri =404; pour empêcher les exploits zero-day (voir http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP et http://forum.nginx.org/read.php?2,88845,page=3).

Enregistrez maintenant le fichier et rechargez nginx :

/etc/init.d/nginx recharge

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

vi /etc/php5/fpm/php.ini

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

[...] ; cgi.fix_pathinfo fournit un support *réel* PATH_INFO/PATH_TRANSLATED pour CGI. PHP ; le comportement précédent était de définir PATH_TRANSLATED sur SCRIPT_FILENAME, et de ne pas grok ; ce que PATH_INFO est. Pour plus d'informations sur PATH_INFO, consultez les spécifications cgi. Paramètre; ceci à 1 obligera PHP CGI à fixer ses chemins pour se conformer à la spécification. Un paramètre; de zéro oblige PHP à se comporter comme avant. La valeur par défaut est 1. Vous devez corriger vos scripts ; pour utiliser SCRIPT_FILENAME plutôt que PATH_TRANSLATED.; http://php.net/cgi.fix-pathinfocgi.fix_pathinfo=0[...]

Recharger PHP-FPM :

/etc/init.d/php5-fpm recharger

Créez maintenant le fichier PHP suivant dans la racine du document /usr/share/nginx/html :

vi /usr/share/nginx/html/info.php

Maintenant, nous appelons ce fichier dans un navigateur (par exemple http://192.168.0.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 MySQL dans PHP5.

6 Obtenir le support MySQL en PHP5

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

apt-cache recherche php5

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

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

APC est un cache d'opcode PHP gratuit et ouvert pour la mise en cache et l'optimisation du code intermédiaire PHP. 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.

APC peut être installé comme suit :

apt-get install php-apc

Rechargez maintenant PHP-FPM :

/etc/init.d/php5-fpm recharger

Rechargez maintenant http://192.168.0.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 :

7 Faire en sorte que PHP-FPM utilise une connexion TCP

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

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

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

[...];listen =/var/run/php5-fpm.socklisten =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 :

/etc/init.d/php5-fpm recharger

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

vi /etc/nginx/sites-available/default
[...] emplacement ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # REMARQUE :Vous devriez avoir "cgi.fix_pathinfo =0;" dans php.ini # Avec php5-cgi seul :fastcgi_pass 127.0.0.1:9000; # Avec php5-fpm :#fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php ; inclure fastcgi_params ; }[...]

Enfin rechargez nginx :

/etc/init.d/nginx recharge

8 scripts CGI/Perl

Si vous souhaitez servir des scripts CGI/Perl avec nginx, veuillez lire ce tutoriel :Servir des scripts CGI avec Nginx sur Debian Squeeze/Ubuntu 11.04

La méthode recommandée est d'utiliser fcgiwrap (chapitre 4).

  • nginx :http://nginx.net/
  • Wiki nginx :http://wiki.codemongers.com/Main
  • PHP :http://www.php.net/
  • PHP-FPM :http://php-fpm.org/
  • MySQL :http://www.mysql.com/
  • Ubuntu :http://www.ubuntu.com/

À propos de l'auteur

Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le mainteneur principal de HowtoForge (depuis 2005) et l'un des principaux développeurs d'ISPConfig (depuis 2000). Il a également contribué au livre O'Reilly "Linux System Administration".


Ubuntu
  1. Installation de Nginx avec PHP5 (et PHP-FPM) et le support MySQL (LEMP) sur Ubuntu 14.04 LTS

  2. Installation d'Apache2 avec prise en charge de PHP5 et MySQL sur Ubuntu 14.04LTS (LAMP)

  3. Installation de Lighttpd avec PHP5 (PHP-FPM) et prise en charge de MySQL sur Ubuntu 14.04LTS

  4. Comment installer Nginx avec PHP5 et MySQL sur Ubuntu 11.10

  5. Installez Prosper202 avec Nginx, MySQL et PHP-FPM sur Ubuntu

Installation de Lighttpd avec PHP (mode PHP-FPM) et MySQL ou MariaDB sur Ubuntu 15.04

Installation de Lighttpd avec PHP (mode PHP-FPM) et MySQL ou MariaDB sur Ubuntu 15.10

Installation de Nginx avec PHP5 (et PHP-FPM) et prise en charge de MySQL (LEMP) sur Debian Wheezy

Installation de Lighttpd avec PHP5 (PHP-FPM) et prise en charge de MySQL sur Debian Wheezy

Installation de Nginx avec PHP5 (et PHP-FPM) et prise en charge de MySQL sur CentOS 6.4

Installation de Nginx avec PHP5 (et PHP-FPM) et prise en charge de MySQL sur Fedora 19