Aller au contenu
Administration serveur

Hébergement PHP

Hébergement PHP

Introduction à PHP 8.1

PHP 8.1 est un version majeure du langage de programmation PHP. Il apporte de nombreuses améliorations et nouvelles fonctionnalités qui facilitent le développement web. En utilisant Ubuntu 23, nous sommes malheureusement limités à cette version de PHP lors de l’écriture de ces lignes.

Vérification des prérequis

Avant de commencer l'installation de PHP 8.1, il est important de s'assurer que votre système est à jour. Vous pouvez le faire en exécutant la commande suivante :

sudo apt update && sudo apt -y upgrade

Cette commande met à jour la liste des paquets disponibles et met à niveau les paquets installés sur votre système.

Installation

Une fois votre système à jour, vous pouvez procéder à l'installation de PHP 8.1 en utilisant la commande suivante :

sudo apt install php8.1

Cette commande installe PHP 8.1 sur votre système.

Installation des extensions PHP

PHP est souvent utilisé avec un certain nombre d'extensions qui fournissent des fonctionnalités supplémentaires. Vous pouvez installer ces extensions en utilisant la commande suivante :

sudo apt install php8.1-{bcmath,fpm,xml,mysql,zip,intl,gd,cli,bz2,curl,mbstring,opcache}

Cette commande installe les extensions suivantes :

  • bcmath : pour les calculs mathématiques de précision arbitraire
  • fpm : pour l'interface FastCGI Process Manager
  • xml : pour le traitement des documents XML
  • mysql : pour la connexion aux bases de données MySQL
  • zip : pour la manipulation des fichiers zip
  • intl : pour les fonctionnalités d'internationalisation
  • gd : pour la manipulation des images
  • cli : pour l'interface en ligne de commande de PHP
  • bz2 : pour la compression et la décompression des fichiers bzip2
  • curl : pour les requêtes HTTP
  • mbstring : pour le traitement des chaînes de caractères multibyte
  • opcache : pour l'optimisation et la mise en cache des scripts PHP

D'accord, je vais simplifier les titres et enlever les numéros de sous-section.

Installation de Composer

Composer est un outil de gestion de dépendances pour PHP. Il permet de déclarer les bibliothèques dont votre projet a besoin et il les gère pour vous.

Pour installer Composer, suivez les instructions ci-dessous :

  1. Téléchargement de l'installateur : Exécutez la commande suivante pour télécharger l'installateur de Composer dans le répertoire courant.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  1. Vérification de l'installateur : Pour vous assurer que l'installateur n'a pas été corrompu pendant le téléchargement, vérifiez le SHA-384 en exécutant cette commande :
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
  1. Exécution de l'installateur : Cette commande vérifie certains paramètres de php.ini, vous avertit s'ils sont incorrectement définis, et télécharge le dernier composer.phar dans le répertoire courant.
php composer-setup.php
  1. Suppression de l'installateur : Une fois l'installation terminée, vous n'avez plus besoin de l'installateur. Supprimez-le avec cette commande :
php -r "unlink('composer-setup.php');"
  1. Déplacement de composer.phar : Pour pouvoir appeler simplement composer à partir de n'importe quel répertoire, déplacez composer.phar dans un répertoire de votre PATH avec cette commande :
sudo mv composer.phar /usr/local/bin/composer

Maintenant, vous avez installé Composer sur votre système. Vous pouvez vérifier que l'installation a réussi en exécutant composer dans votre terminal. Vous devriez voir une sortie indiquant la version de Composer que vous avez installé.

Nous allons aussi installer 7zip pour accélérer l’installation de packages avec composer:

sudo apt install p7zip-full

Création et configuration d'un projet Laravel

Laravel est un framework web PHP qui facilite le développement d'applications modernes. Il offre une syntaxe expressive et élégante qui vise à rendre le développement web agréable et créatif.

Création d'un répertoire pour le projet

D’abord, nous allons ajouter nos utilisateurs au groupe www-data avec la commande suivante:

sudo usermod -aG www-data admin
sudo usermod -aG www-data deployer

Nous devons nous déconnecter et reconnecter pour que ces changements prennent effet.


Pour commencer, créez un répertoire pour votre projet. Nous allons utiliser /var/www/php comme exemple :

sudo mkdir -p /var/www/php
sudo chmod

Création d'un nouveau projet Laravel

Naviguez dans le répertoire que vous venez de créer et lancez la commande suivante pour créer un nouveau projet Laravel :

cd /var/www/php

sudo chown $USER:www-data /var/www/php

composer create-project laravel/laravel laravel.domain.com

Configuration du projet

Après avoir créé le projet, vous devez configurer les permissions de fichiers et Nginx.

Configuration des permissions de fichiers

Une fois que vous avez créé le projet, il est important de configurer correctement les permissions de fichiers. Laravel nécessite certaines permissions spécifiques pour fonctionner correctement.

Voici comment vous pouvez configurer les permissions de fichiers pour votre projet Laravel :

  1. Modification du propriétaire des fichiers : La première commande change le propriétaire des fichiers du projet. $USER est une variable d'environnement qui représente l'utilisateur actuel, et www-data est le groupe généralement utilisé par le serveur web.
sudo chown -R $USER:www-data /var/www/php/laravel.domain.com
  1. Modification des permissions des fichiers : La deuxième commande change les permissions des fichiers du projet. 755 signifie que le propriétaire peut lire, écrire et exécuter les fichiers, tandis que les autres utilisateurs peuvent seulement lire et exécuter les fichiers.
sudo chmod -R 755 /var/www/php/.domain.com
  1. Modification des permissions des répertoires storage et bootstrap/cache : Laravel a besoin d'écrire dans ces répertoires, donc vous devez leur donner les permissions appropriées. ug+rwx signifie que le propriétaire et le groupe peuvent lire, écrire et exécuter les fichiers.
cd /var/www/php/.domain.com
sudo chmod -R ug+rwx storage bootstrap/cache
  1. Sécurisation du fichier .env : Le fichier .env contient des informations sensibles comme les identifiants de la base de données. Vous devez donc le sécuriser. 740 signifie que le propriétaire peut lire et écrire le fichier, mais ne peut pas l'exécuter, tandis que les autres utilisateurs ne peuvent pas lire, écrire ni exécuter le fichier.
sudo chmod 740 .env

En configurant correctement les permissions de fichiers, vous vous assurez que Laravel fonctionne correctement et que vos informations sensibles sont sécurisées. Vous pourrez mettre à jour le projet ou utiliser les commandes artisan puisque vous êtes le propriétaire et le serveur aura accès aux fichiers.

Pour la configuration de Nginx, vous devez créer un nouveau fichier de configuration pour votre site. Vous pouvez le faire en éditant un nouveau fichier dans /etc/nginx/sites-available/ et en ajoutant la configuration appropriée pour votre site. Par exemple laravel.domain.com dont voici le contenu:

server {
    listen 80;
    listen [::]:80;
    server_name laravel.domain.com;
    root /var/www/php/laravel.domain.com/public;
 
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
 
    index index.php;
 
    charset utf-8;
 
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
 
    error_page 404 /index.php;
 
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
 
    location ~ /\.(?!well-known).* {
        deny all;
    }
}

N’oubliez pas de créer le lien symbolique vers le dossier sites-enabled et de relancer nginx si la configuration est correcte comme vu précédemment.

Si tout a fonctionné, vous devriez voir apparaitre la page d’accueil du projet Laravel si vous entrez l’URL configurée dans votre navigateur.

Installation de Node.js et npm

Node.js est une plateforme construite sur le moteur JavaScript V8 de Chrome qui permet d'exécuter du code JavaScript côté serveur. npm est le gestionnaire de paquets par défaut pour Node.js. Nous en aurons besoin pour constuire les assets du frontend de notre application.

Pour installer Node.js et npm, suivez les instructions ci-dessous :

  1. Mise à jour des paquets : Commencez par mettre à jour la liste des paquets disponibles pour votre système.
sudo apt-get update
  1. Installation des prérequis : Installez les paquets nécessaires pour télécharger et importer la clé GPG de Nodesource.
sudo apt-get install -y ca-certificates curl gnupg
  1. Création du répertoire pour la clé GPG : Créez un répertoire pour stocker la clé GPG de Nodesource.
sudo mkdir -p /etc/apt/keyrings
  1. Téléchargement et importation de la clé GPG : Téléchargez la clé GPG de Nodesource et importez-la.
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
  1. Création du dépôt deb : Créez le dépôt deb pour Node.js. Vous pouvez spécifier la version majeure de Node.js que vous souhaitez installer en changeant la valeur de NODE_MAJOR.
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

Notez que vous pouvez changer NODE_MAJOR en fonction de la version de Node.js que vous souhaitez installer. Par exemple, vous pouvez choisir parmi les versions 16, 18 ou 20.

  1. Mise à jour des paquets et installation de Node.js : Mettez à jour à nouveau la liste des paquets disponibles pour votre système, puis installez Node.js.
sudo apt-get update
sudo apt-get install nodejs -y

Félicitations, vous avez installé Node.js et npm sur votre système. Vous pouvez vérifier que l'installation a réussi en exécutant node -v et npm -v dans votre terminal. Ces commandes afficheront les versions de Node.js et npm que vous avez installées.

Ajout de l'authentification

Laravel Breeze est un package minimaliste qui vous permet d'implémenter facilement l'authentification dans votre application Laravel. Vous pouvez l'installer en utilisant Composer :

sudo composer require laravel/breeze --dev
sudo php artisan breeze:install

Choisissez les options suivantes:

Le script installera les dépendances PHP et JavaScript du projet et lancera le script de build des assets frontend.

Connexion à une base de données

Créez d’abord une nouvelle base de données laravel et un utilisateur qui lui sera dédié.

Pour connecter votre application Laravel à une base de données, vous devez modifier le fichier .env de votre projet. Vous pouvez y spécifier le type de base de données, l'hôte, le nom de la base de données, l'utilisateur et le mot de passe.

Vous devrez ensuite lancer la commande de migration de la base de données:

php artisan migrate

Vous pouvez maintenant aller sur l’application et utiliser le formulaire dédié à la création de compte. Si tout fonctionne, vous devriez pouvoir accéder au Dashboard une fois le compte créé :

Optimisation du projet

Pour terminer l'installation, vous pouvez optimiser votre projet Laravel en exécutant les commandes suivantes :

composer install --optimize-autoloader --no-dev
php artisan optimize

Ces commandes réduisent le temps de chargement de votre application en optimisant la mise en cache et l'autoloader de Composer.

Et voilà ! Vous avez créé et configuré un nouveau projet Laravel. Vous pouvez maintenant commencer à développer votre application.

Sources

https://laravel.com/docs/10.x/deployment

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-laravel-with-nginx-on-ubuntu-22-04

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-22-04

https://computingforgeeks.com/how-to-install-php-8-2-on-ubuntu/?expand_article=1

https://getcomposer.org/download/

https://github.com/oerdnj/deb.sury.org/wiki/Managing-Multiple-Versions

https://linux.how2shout.com/how-to-install-7-zip-on-ubuntu-22-04-lts-jammy-linux/

https://github.com/nodesource/distributions

https://www.reddit.com/r/laravel/comments/ymmvif/laravel_project_who_should_own_root_folder/