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
- Sommaire
- 1 - Prérequis
- 2 - Installation de composer
- 3 - Création d’un projet Laravel
- 4 - Installation et configuration du serveur apache
- 5 - Mise en place des permissions
- 6 - Installation et configuration de MySQL
- 7 - SSHFS - Optionnel
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.
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.
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 :
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\
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.
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 !
Merci d’avoir suivi ce tutoriel ! A bientôt !
CASTANER Antony
