PHP est un langage de script à usage général. Il est surtout populaire pour le développement Web. Il peut être utilisé pour développer des sites Web dynamiques et interactifs. C'était l'un des premiers langages côté serveur pouvant être intégrés au HTML, ce qui facilitait l'ajout de fonctionnalités aux pages Web sans avoir besoin d'appeler des fichiers externes pour obtenir des données. PHP fait partie des langages de programmation les plus faciles à apprendre.
Il est intégré à un certain nombre de bases de données populaires, notamment MySQL, PostgreSQL, Oracle, Sybase, Informix et Microsoft SQL Server. De nombreux CMS et frameworks populaires tels que WordPress, Magento et Laravel sont écrits en PHP.
Au moment de la rédaction de cet article, les référentiels Ubuntu 20.04 par défaut incluent la version PHP 7.4.
Prérequis
Pour suivre ce guide, assurez-vous que vous disposez des éléments suivants :
- Serveur Ubuntu 20.04 mis à jour connecté à Internet
- Accès root au serveur ou utilisateur avec accès sudo
- Vous devez être à l'aise avec l'utilisation du terminal Linux pour exécuter des commandes.
Étapes pour installer et configurer PHP dans Ubuntu 20.04
- Assurez-vous que le serveur est à jour
- Installer php 7.4 sur le serveur
- Installer Nginx
- Configurer Nginx pour servir le fichier php
1. Assurez-vous que le serveur est à jour
Avant de continuer, assurons-nous que notre serveur est mis à jour. Utilisez ces commandes pour 1. Mettre à jour les référentiels du serveur, 2. Mettre à niveau les packages du serveur vers les dernières versions :
# Update repos
sudo apt update
# Upgrade packages
sudo apt -y upgrade
2. Installez php 7.4 sur le serveur
Comme les dépôts par défaut contiennent la version 7.4 de PHP, installons-la avec cette commande :
sudo apt install php -y
Confirmez la version installée avec la commande php -v
:
~$ php -v
PHP 7.4.3 (cli) (built: Aug 13 2021 05:39:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
Dans cette configuration, nous avons l'intention de servir des fichiers php avec Nginx. Nginx n'a pas de support intégré pour le traitement des fichiers PHP. Nous utiliserons PHP-FPM ("gestionnaire de processus fastCGI") pour gérer les fichiers PHP.
Nginx ne fonctionnera pas si Apache est installé et en cours d'exécution. Puisque nous allons utiliser Nginx, utilisons cette commande pour supprimer apache s'il est installé dans notre système :
$ sudo apt remove apache2 -y
Installons maintenant php-fpm
avec cette commande :
sudo apt install php-fpm -y
Une fois l'installation terminée, le service FPM démarre automatiquement. Le service est ajouté à systemd en tant que php7.4-fpm
. Pour vérifier l'état du service, exécutez :
$ sudo systemctl status php7.4-fpm
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-09-28 16:18:41 UTC; 3min 18s ago
Docs: man:php-fpm7.4(8)
Main PID: 56092 (php-fpm7.4)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 4710)
Memory: 7.1M
CGroup: /system.slice/php7.4-fpm.service
├─56092 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
├─56113 php-fpm: pool www
└─56114 php-fpm: pool www
Sep 28 16:18:41 ip-172-26-11-229 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Sep 28 16:18:41 ip-172-26-11-229 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.
Vous devriez voir une sortie comme ci-dessus.
3. Installation de Nginx
Maintenant que PHP et php-fpm sont installés dans le système, nous devons installer nginx. Nginx nous permettra de configurer un hôte virtuel que nous pourrons utiliser pour servir le trafic d'un domaine.
Installez nginx à l'aide de cette commande :
sudo apt install nginx -y
Une fois l'installation terminée, Nginx sera démarré par défaut. Confirmez qu'il fonctionne comme prévu en vérifiant son état. Vous devriez voir une sortie comme celle-ci :
$ sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-09-28 16:28:30 UTC; 1min 2s ago
Docs: man:nginx(8)
Main PID: 56990 (nginx)
Tasks: 3 (limit: 4710)
Memory: 3.7M
CGroup: /system.slice/nginx.service
├─56990 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─56991 nginx: worker process
└─56992 nginx: worker process
Sep 28 16:28:30 ip-172-26-11-229 systemd[1]: Starting A high performance web server and a reverse pr>
Sep 28 16:28:30 ip-172-26-11-229 systemd[1]: Started A high performance web server and a reverse pro>
Pour confirmer que Nginx est réellement en cours d'exécution et accessible, utilisez cette commande :
curl http://server_ip/
Où server_ip
est l'IP de votre serveur. Si, pour une raison quelconque, vous ne connaissez pas l'adresse IP publique de votre serveur, utilisez ceci pour vérifier :
curl -4 icanhazip.com
Vous devriez voir la page par défaut de Nginx.
4. Configurer Nginx pour servir le fichier php
Maintenant que nous avons configuré et exécuté Nginx sur notre serveur, faisons en sorte qu'il serve des fichiers php. Dans cet exemple, nous allons configurer Nginx pour servir la page d'informations php.
Pour ce faire, nous devons configurer un hôte virtuel dans Nginx servant le trafic pour un domaine spécifique (nous utiliserons example.citizix.com
). Pour que cela fonctionne, vous devez mettre à jour les enregistrements DNS de ce domaine dans votre hôte DNS pour avoir A
les enregistrements pointent vers ce domaine ou sous-domaine. Consultez la documentation de votre fournisseur DNS pour savoir comment procéder.
Confirmez que le domaine peut être résolu correctement sur le serveur à l'aide de la commande dig :
❯ dig -t A example.citizix.com
; <<>> DiG 9.10.6 <<>> -t A example.citizix.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10212
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.citizix.com. IN A
;; ANSWER SECTION:
example.citizix.com. 300 IN A 172.67.197.11
;; Query time: 828 msec
;; SERVER: 192.168.157.227#53(192.168.157.227)
;; WHEN: Tue Sep 28 20:42:05 EAT 2021
;; MSG SIZE rcvd: 80
Nous devons maintenant suivre ces étapes pour que notre script simple fonctionne :
- Créez le répertoire pour stocker notre contenu statique (nous utiliserons
/var/www/example.citizix.com
)sudo mkdir -p /var/www/example.citizix.com
- Assurez-vous que le répertoire créé est accessible par l'utilisateur Nginx
sudo chown -R www-data:www-data /var/www/example.citizix.com sudo chmod -R 755 /var/www/example.citizix.com
- Ajouter un fichier d'index
/var/www/example.citizix.com/index.php
avec un contenu pour afficher les informations php dans le répertoire (/var/www/example.citizix.com
)
Modifiez le fichier :sudo vim /var/www/example.citizix.com/index.php
Ajoutez ce contenu :
<?php phpinfo() ?>
Enregistrez et fermez le fichier.
- Créer la configuration nginx dans le répertoire par défaut nginx
/etc/nginx/conf.d
. 1. Nous allons créer le fichier/etc/nginx/conf.d/example.citizix.com.conf
avec le contenu requis.sudo vim /etc/nginx/conf.d/example.citizix.com.conf
Ajoutez ce contenu :
server {
listen 80;
server_name example.citizix.com;
root /var/www/example.citizix.com;
index index.php;
location ~ \.php$ {
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
Confirmez que la configuration nginx est correcte avec cette commande :
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Vous devez maintenant redémarrer nginx et php-fpm en utilisant ces commandes :
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm
Confirmez que les services sont apparus :
sudo systemctl status nginx
sudo systemctl status php7.4-fpm
Vous devriez voir que les services ont redémarré avec succès !
Si tout se passe bien, vous devriez voir la page d'informations php comme indiqué dans la capture d'écran ci-dessous :

C'est tout! Jusqu'à présent, nous avons pu installer php 7.4 dans Ubuntu 20.04 et servir un fichier simple avec Nginx.