Installer Laravel 6 sur Debian 10

01-10-2020

Bonjour, nous allons aujourd’hui installer Laravel 6.0 sur Debian 10, la totalité du tutoriel est réalisée avec un utilisateur ‘antony’, ajouté au groupe root. Le nom d’hôte utilisé est ‘laravel-tutoriel’.

Sommaire

Il est donc induit que les commandes utilisées lors de ce tutoriel seront à modifier pour y entrer les valeurs correspondantes à votre système.

1 - Prérequis

1.1 - Installation et configuration du paquet SSH

Le paquet SSH nous permet de nous connecter à distance à notre machine Linux. Cet outil peut nous aider à réaliser des opérations plus simples : copier-coller de commandes par exemple.

# Installation du package openssh-server
apt install openssh-server
# Activation du serveur SSH au démarrage
systemctl enable sshd
# Démarrage du serveur SSH
systemctl start sshd

1.2 - Installation ‘sudo’ et ajout de l’utilisateur au groupe

L’installation du package est essentielle à l’utilisation d’un utilisateur autre que root. L’utilisation de l’utilisateur root peut être un danger en permanence, ayant accès à n’importe dossier ou fichier du système, la modification ou suppression involontaire de fichiers importants peut arriver rapidement.

# Installation du paquet sudo
apt install sudo
# Ajout de l'utilisateur antony au groupe sudo
sudo adduser antony sudo

1.3 - Configuration du nom d’hôte

Nous décidons de modifier le nom d’hôte, car ce denier, entré dans la barre de notre navigateur, nous permettra de nous connecter à notre site Laravel, d’ici la fin de ce tutoriel.

# Changement du nom d'hôte
sudo hostnamectl set-hostname laravel-tutoriel
# Changement du nom d'hôte dans le fichier /etc/hosts
sudo nano /etc/hosts

1.4 - Installation et configuration de avahi-daemon

Avahi est un paquet, qui permet de découvrir de services et hôtes sur le réseau local : service de découvert Multicast DNS. Ce service est pratique, car lorsque nous souhaiterons accéder à notre site, il suffira simplement de rentrer dans un navigateur (dans le réseau local) : laravel-tutoriel.local

# Installation du paquet avahi-daemon
sudo apt install avahi-daemon
# Activation du service au démarrage
sudo systemctl enable avahi-daemon
# Démarrage du service
sudo systemctl start avahi-daemon

1.5 - Installation du paquet gnupg

Ce paquet permet la sécurisation des communications et du stockage de données, il permet aussi de chiffrer des données et de créer des signatures numériques. Il nous est utile ici pour l’installation de MySQL.

# Installation du paquet gnupg
sudo apt install gnupg

2 - Installation de composer

Composer est un gestionnaire de dépendance en PHP. Composer va nous permettre de créer un projet Laravel en version 6.0.

2.1 - Installation des dépendances

Pour que composer puisse fonctionner, ce dernier nécessite plusieurs dépendances :

  • php-xml : module DOM, SimpleXML, WDDX, XML et XSL,
  • php-cli : pour le bon fonctionnement,
  • php-mbstring : utile pour les fonctions utilisées,
  • git : téléchargement de projets depuis git,
  • unzip : extraction des projets précédents.
# Installation de paquets
sudo apt install php-xml php-cli php-mbstring git unzip

2.2 - Installation du paquet

Après avoir installé toutes les dépendances précédentes, l’installation de composer peut être réalisée sans risque.

# Installation du paquet composer
sudo apt install composer

3 - Création d’un projet Laravel

Nous décidons de nommer le projet laravel-tutoriel, ce dernier sera situé à la racine de l’utilisateur antony : /home/antony.

# Création d'un projet Laravel version 6.0 nommé laravel-tutoriel
composer create-project laravel/laravel=6.0 laravel-tutoriel --prefer-dist

Cette commande réunit les trois commandes suivantes :

# Récupération du dépôt Laravel sur GitHub
git clone https://github.com/laravel/laravel.git
# Installation des dépendances essentielles au bon fonctionnement du projet Laravel
composer install
# Génération de la clé
php artisan key:generate

4 - Installation et configuration du serveur apache

Sans serveur Apache, notre site Laravel est inacessible.

4.1 - Installation du package apache2

# Installation du paquet apache2
sudo apt install apache2

4.2 - Configuration du service apache2

Nous activons pour qu’il soit activé dès le démarrage, puis ensuite nous l’activons pour une utilisation directe.

# Activation du service au démarrage
sudo systemctl enable apache2
# Démarrage du service
sudo systemctl start apache2

4.3 - Modification de la configuration du serveur Apache

Nous créons un nouveau fichier de configuration pour notre site laravel-tutoriel. Cette configuration est à créer dans le dossier /etc/apache2/sites-available.

# Création et modification du site laravel-tutoriel
sudo nano /etc/apache2/sites-available/laravel-tutoriel.local.conf

Dans ce fichier, nous spécifions :

  • Le nom du serveur : laravel-tutoriel.local,
  • Le chemin du dossier public de notre site Laravel : /home/antony/laravel-tutoriel/public,
  • Les trois lignes présentent dans la balise Directory permettent de sécuriser et d’optimiser notre site,
  • Les chemins des fichiers de logs et d’erreurs éventuelles du serveur Apache.
<VirtualHost *:80>
    ServerName laravel-tutoriel.local
    DocumentRoot /home/antony/laravel-tutoriel/public

    <Directory /home/antony/laravel-tutoriel/public>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Actuellement, notre site est disponible, mais le seul site activé est le site par défaut. Nous allons alors activé le premier, puis désactiver le second.

# Activation de notre site
sudo a2ensite laravel-tutoriel.local
# Désactivation du site par défaut
sudo a2dissite 000-default
# Redémarrage du serveur Apache
systemctl reload apache2

Si les commandes a2ensite et a2dissite sont introuvables, utiliser les commandes suivantes :

sudo /usr/sbin/a2ensite laravel-tutoriel.local
sudo /usr/sbin/a2dissite 000-default

Notre site est maintenant disponible sur le réseau local, en tapant le nom d’hôte de notre machine ici : laravel-tutoriel.local.

Cependant, il y a une erreur, le module php n’est pas disponible.

Page sans PHP

Nous devons alors installer des modules PHP pour notre serveur Apache.

# Téléchargement des paquets PHP pour le serveur Apache
sudo apt install libapache2-mod-php php-common php-mysql
# Activation de PHP 7.3 au serveur Apache
sudo a2enmod php7.3
# Activation de la réécriture
sudo a2enmod rewrite
# Redémarrage du serveur Apache
sudo systemctl restart apache2

5 - Mise en place des permissions

Nous avons maintenant un nouveau problème, le serveur n’a pas la permission pour ouvrir les logs.

Page sans permissions

Pour résoudre ce problème, nous allons taper cinq commandes.

La première consiste à nous rendre propriétaire du projet, et à appartenir au groupe www-data. On peut remarquer, comme vu précédemment, que le dossier laravel-tutoriel est à la racine du dossier de l’utilisateur antony.

Les deuxième et troisième commandes consistent à accorder à l’utilisateur et groupe www-data de nouvelles permissions aux fichiers et dossiers présents dans notre projet laravel-tutoriel.

Pour les deux dernières commandes, nous nous plaçons dans le dossier laravel-tutoriel, elles doivent permettre à notre machine Debian 10 de lire et d'écrire dans le stockage et le cache de notre projet.

# Changement de propriétaire
sudo chown -R antony:www-data /home/antony/laravel-tutoriel

# Ajout des permissions aux fichiers
sudo find /home/antony/laravel-tutoriel -type f -exec chmod 664 {} \;

# Ajout des permissions aux dossiers
sudo find /home/antony/laravel-tutoriel -type d -exec chmod 775 {} \;

# Se placer dans le dossier

sudo chgrp -R www-data storage bootstrap/cache

sudo chmod -R ug+rwx storage bootstrap/cache

Après tapé ces cinq commandes, et rafraîchi notre page web, nous obtenons :

Ca marche

6 - Installation et configuration de MySQL

Notre projet est maintenant fonctionnel, cependant nous n’avons pas encore de base de données pour notre projet. Pour cela, nous allons de voir installer et configurer MySQL.

Cette partie requiert l’installation du paquet gnupg.

6.1 - Installation MySQL PPA

Pour installer MySQL, nous devons d’abord télécharger son apt repository, car il n’est pas présent sur Debian 10.

# Téléchargement du paquet 
wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
# Ajout du paquet au gestionnaire de paquet
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb

La version de MySQL choisie est la 8.0, vous pouvez la modifier à l’aide de la commande suivante :

# Reconfiguration de la version MySQL
sudo dpkg-reconfigure mysql-apt-config

6.2 - Installation du paquet MySQL

Après avoir mis à jour notre système, nous pouvons installer MySQL.

# Mise à jour du système
sudo apt update
# Installation du paquet mysql-server
sudo apt install mysql-server

A la suite de ces deux commandes, il va vous être demandé d’entrer un mot de passe à deux reprises. Cela sera le mot de passe de l’utilisateur root pour MySQL. Ensuite, il est recommandé de sélectionner la première option : Use Strong Password Encryption.

6.3 - Création d’un nouvel utilisateur et d’une base de données

Nous nous connectons à MySQL en tant que root :

mysql -u root -p

Notre projet Laravel requiert une base de données et de même, nous allons aussi créer un utilisateur pour l’utilisation de cette dernière.

Après avoir créé notre base de données, nous allons accorder des droits à notre nouvel utilisateur

# Création d'une base de données
CREATE DATABASE laravel_db;

# Création d'un utilisateur
CREATE USER 'antony'@'localhost' IDENTIFIED BY 'antony_password';

# Ajout des permissions à l'utilisateur antony pour la base de données laravel_db
GRANT ALL PRIVILEGES ON laravel_db.* TO 'antony'@'localhost'; 

6.4 - Mettre à jour le fichier d’environnement du projet

Maintenant que nous avons créé notre base de données, nous devons la renseigner dans le fichier d’environnement de notre projet Laravel.

# Modification du .env de notre projet
sudo nano laravel-tutoriel/.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=antony
DB_PASSWORD=antony_password

7 - SSHFS - Optionnel

SSHFS permet le partage de dossiers et fichiers de manière sécurisée à l’aide du protocole SFTP de SSH. Ici, cela nous permet d’accéder à notre projet Laravel, présent sur notre machine debian, depuis une machine Windows.

7.1 - Debian - Installation

Du côté de notre machine Debian, nous devons installer le paquet sshfs.

# Installation du paquet sshfs
sudo apt install sshfs

7.2 - Windows - Installation

Du côté de notre machine Windows, nous devons installer deux éléments :

7.3 - Windows - Configuration

Après avoir installé les deux éléments précédents, nous devons configurer notre connexion avec notre machine Debian.

Ensuite, nous devons :

  • Ouvrir l’Explorateur de fichier,
  • Cliquer avec clic-droit sur PC,
  • Choisir Ajouter un emplacement réseau.

Nous entrons l’emplacement suivant, constitué de :

  • Nom du protocole,
  • Nom de l’utilisateur,
  • Nom d’hôte.
\\sshfs\antony@laravel-tutoriel\

Ajouter un emplacement

Une fenêtre doit s’ouvrir et vous demander votre mot de passe pour accéder à votre machine Debian à l’aide de l’utilisateur antony.

Mot de passe

A la suite de cette opération, nous avons la possibilité de renommer ce nouvel emplacement, ce qui est optionnel.

Vous avez maintenant accès à votre machine Debian, à votre projet Laravel, depuis votre machine Windows !

Accès machine Debian

Merci d’avoir suivi ce tutoriel ! A bientôt !

CASTANER Antony

#CASTANER_Antony#Linux#Debian#PHP#Laravel

Installation de l'hyperviseur Proxmox