GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Utilisation de PHP-FPM avec Apache sur Ubuntu 16.04

Ce tutoriel montre comment installer un serveur Web Apache sur un serveur Ubuntu 16.04 avec PHP 7 (via PHP-FPM) et le support MySQL. 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.

1 Remarque préliminaire

Dans ce tutoriel, j'utiliserai 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.

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 ou MariaDB

Ubuntu fournit MySQL ainsi que des packages MariaDB. MariaDB est un fork MySQL fourni par le développeur MySQL original Monty Widenius. Suivez le chapitre 2.1 ou 2.2 pour installer le serveur de base de données.

2.1 Installer MySQL 5.7

Tout d'abord, nous installons MySQL 5.7 comme ceci :

apt-get -y 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

Exécutez mysql_secure_installation pour sécuriser la base de données MySQL et désactiver l'accès à la base de données de test.

mysql_secure_installation

Ces questions vous seront posées :

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

2.2 Installer MariaDB

Exécutez la commande suivante pour installer MariaDB-server et client :

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

Maintenant, nous définissons un mot de passe root pour MariaDB.

mysql_secure_installation

Ces questions vous seront posées :

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

3 Installer Apache

Apache 2.4 est disponible sous forme de package Ubuntu. Nous avons besoin du package apache2 que nous pouvons installer comme ceci :

apt-get -y install apache2

Dirigez maintenant votre navigateur vers http://192.168.1.100, et vous devriez voir la page d'espace réservé Apache (ça marche !) :

La racine de document par défaut d'Apache est /var/www/html sur Ubuntu, et le fichier de configuration est /etc/apache2/apache2.conf. Des configurations supplémentaires sont stockées dans des sous-répertoires du répertoire /etc/apache2 tels que /etc/apache2/mods-enabled (pour les modules Apache), /etc/apache2/sites-enabled (pour les hôtes virtuels) et /etc/apache2/conf .d.

4 Installer PHP 7

Nous pouvons faire fonctionner PHP 7 dans Apache2 via PHP-FPM et le module mod_fastcgi d'Apache que nous installons comme suit :

apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.0

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

Ensuite, activez les modules Apache suivants...

a2enmod actions fastcgi alias

... et redémarrez Apache :

systemctl restart apache2.service

5 Configurer Apache

Pour faire fonctionner Apache avec PHP-FPM, nous avons besoin de la configuration suivante :

        <IfModule mod_fastcgi.c>
                AddHandler php7-fcgi .php
                Action php7-fcgi /php7-fcgi
                Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
                FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization
        </IfModule>

Vous pouvez le mettre dans la configuration globale d'Apache (il est donc activé pour tous les vhosts), par exemple dans /etc/apache2/conf.d/php7.0-fpm.conf (ce fichier n'existe pas, vous devez donc le créer) , ou vous pouvez le placer dans chaque vhost qui doit utiliser PHP-FPM. Je veux utiliser PHP-FPM avec le vhost par défaut donc j'ouvre son fichier de configuration vhost /etc/apache2/sites-available/000-default.conf.

nano /etc/apache2/sites-available/000-default.conf

... et placez la section suivante quelque part entre  :

        <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
<IfModule mod_fastcgi.c> SetHandler php7-fcgi .php Action php7-fcgi /php7-fcgi virtual Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization </IfModule>

Redémarrez ensuite Apache :

systemctl restart apache2.service

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

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, PHP 7 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 en PHP. MySQL n'y figure pas, ce qui signifie que nous n'avons pas encore de support MySQL en PHP.

Veuillez noter : Si vous avez installé le module apache PHP 7 (mod_php), cela peut arriver par ex. lorsque vous démarrez avec une configuration de serveur LAMP de votre FAI et non avec un serveur vide comme je l'ai fait dans ce tutoriel, vous devrez peut-être désactiver mod_php comme indiqué ci-dessous.

a2dismod php7.0

et redémarrez apache :

systemctl restart apache2.service

6 Obtenir la prise en charge de MySQL / MariaDB dans PHP 7

Pour obtenir le support MySQL en PHP, nous pouvons installer le package php7.0-mysql. 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 php7.0

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

apt-get install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php7.0-imap php7.0-mcrypt php7.0-ps php7.0-pspell php7.0-recode php7.0-snmp php7.0-sqlite php7.0-tidy php7.0-xmlrpc php7.0-xsl

Rechargez maintenant PHP-FPM :

systemctl reload php7.0-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 MySQLi :

7 phpMyAdmin

phpMyAdmin est une interface Web à travers laquelle vous pouvez gérer vos bases de données MySQL. C'est une bonne idée de l'installer :

apt-get -y install phpmyadmin

Vous verrez les questions suivantes :

Web server to reconfigure automatically:<-- apache2 
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter

Ensuite, vous pouvez accéder à phpMyAdmin sous http://192.168.1.100/phpmyadmin/

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

REMARQUE : Ce chapitre montre la configuration de PHP-FPM sur TCP. Je vais montrer ceci comme exemple de configuration et il peut y avoir des configurations où vous en avez besoin, par exemple. lorsque le processus fastcgi s'exécute sur un deuxième serveur, mais en général, il est plus rapide d'utiliser des sockets. Donc, vous voudrez peut-être sauter ce chapitre.

Par défaut, PHP-FPM écoute sur le socket /var/run/php/php7.0-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/php/7.0/fpm/pool.d/www.conf

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

[...]
;listen = /var/run/php/php7.0-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 php7.0-fpm.service

Ensuite, parcourez votre configuration Apache et tous vos vhosts et modifiez la ligne FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization to FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Autorisation, par ex. comme ceci :

nano /etc/apache2/sites-available/000-default.conf
[...]
 <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>

<IfModule mod_fastcgi.c>
AddHandler php7-fcgi .php
Action php7-fcgi /php7-fcgi virtual
Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Authorization
</IfModule> [...]

Rechargez enfin Apache :

systemctl reload apache2.service

  • Apache :http://httpd.apache.org/
  • PHP :http://www.php.net/
  • PHP-FPM :http://php-fpm.org/
  • MySQL :http://www.mysql.com/
  • Ubuntu :http://www.ubuntu.com/
  • phpMyAdmin :http://www.phpmyadmin.net/

Ubuntu
  1. Installer mod_pagespeed avec Apache sur Ubuntu/CentOS

  2. Comment réinitialiser le mot de passe Ubuntu ?

  3. Désactiver le compte root dans Ubuntu ?

  4. Comment installer PHP-FPM avec Apache sur Ubuntu 20.04

  5. Comment installer PHP-FPM avec Apache sur Ubuntu 22.04

Comment réinitialiser le mot de passe root dans Ubuntu 17.10

Installer phpMyAdmin avec Apache sur Ubuntu 20.04

Comment changer le mot de passe root sur Ubuntu 20.04

Comment changer le mot de passe sudo dans Ubuntu

Comment réinitialiser le mot de passe racine oublié dans Ubuntu 20.04

Comment configurer l'authentification par mot de passe avec Apache sur Ubuntu 18.04