Comment installer Laravel sur Ubuntu 20.04

Tout ce que vous devez savoir pour déployer une application Web Laravel sur une machine Ubuntu 20.04 LTS

Laravel est un framework PHP open source très populaire avec la syntaxe expressive et élégante utilisée pour concevoir des applications Web modernes et belles. Laravel vise à alléger le développement Web et à en faire une expérience agréable et créative, transformant les développeurs Web en artisans Web.

Dans ce guide, vous allez apprendre à installer Laravel avec la pile LAMP sur un serveur Ubuntu 20.04 pour que votre application Web soit opérationnelle.

Conditions préalables

Pour suivre ce guide, vous aurez besoin d'un serveur Ubuntu 20.04 LTS et d'être connecté en tant que sudo utilisateur. Avant de commencer, mettez à jour et mettez à niveau les packages Ubuntu 20.04 en exécutant :

mise à jour sudo apt && mise à jour sudo apt

Installation de la pile LAMP

LAMP est un acronyme pour L système d'exploitation inux, UNE serveur web pache, M base de données ySQL et P Langage de programmation HP. Nous sommes déjà sur Ubuntu 20.04 qui coche la pile Linux dans LAMP. Nous allons donc installer le reste des trois packages pour compléter la pile LAMP pour notre application Laravel.

Il n'y a pas de méta-paquet disponible pour installer la pile LAMP dans les référentiels Ubuntu 20.04. Mais nous pouvons utiliser une petite fonctionnalité intéressante de apte gestionnaire de packages appelé tâches. Les tâches sont désignées par le nom de la tâche disponible avec un cadet (^) en annexe.

sudo apt install lamp-server^

Cette commande recherchera dans les fichiers de liste de packages tous les champs « Tâche : » et installera tous les packages avec « lampe-serveur » dans leur champ de tâche. Ainsi, la pile LAMP composée de packages Apache, MySQL et PHP avec toutes leurs dépendances sera installée sur votre serveur Ubuntu.

Configurer le pare-feu

Une fois que vous avez installé la pile LAMP, vous devez également configurer le pare-feu simple (UFW) et modifier ses règles afin que vous puissiez accéder au serveur Apache depuis Internet.

UFW fournit des profils d'application simples qui peuvent être utilisés pour modifier les règles et basculer le trafic sur les ports réseau. Exécutez la commande suivante pour répertorier toutes les applications qui accèdent aux ports réseau :

liste des applications sudo ufw

Vous verrez une sortie comme celle-ci :

Applications disponibles : Apache Apache Full Apache Secure OpenSSH

Les ports réseau que ces profils ouvrent sur votre serveur Ubuntu 20.04 sont répertoriés ci-dessous :

  • Apache : ce profil n'ouvre que le port 80 (autorise le trafic HTTP)
  • Apache Full : ce profil ouvre à la fois 80 & 443 ports (autorise le trafic HTTP & HTTPS)
  • Apache Secure : ce profil n'ouvre que le port 443 (autorise le trafic HTTPS)
  • OpenSSH : ce profil ouvre le port 22 qui autorise le protocole SSH

Vous devez activer le profil « Apache complet » qui autorisera le trafic vers le serveur Web Apache à partir d'Internet. De plus, vous devrez également activer le profil « OpenSSH » qui autorise le trafic sur le port 22 (SSH) sur votre serveur Ubuntu 20.04. Si vous activez UFW sans autoriser le profil « OpenSSH », vous ne pourrez pas vous connecter à votre serveur en utilisant SSH.

Pour modifier la règle UFW et autoriser le trafic sur le port 80 et 22, Cours:

sudo ufw autorise 'Apache Full' sudo ufw autorise 'OpenSSH'

Activez ensuite le pare-feu UFW à l'aide de la commande suivante :

sudo ufw activer

Vous pouvez recevoir une invite disant « la commande peut perturber les connexions ssh existantes. Continuer les opérations (y|n)?”. presse Oui continuer car nous avons déjà ajouté une règle pour autoriser SSH dans UFW.

Vous pouvez maintenant accéder à la page Web par défaut d'Apache en utilisant l'adresse IP de votre serveur Ubuntu depuis Internet. Pour ce faire, ouvrez votre navigateur et tapez l'adresse IP de votre serveur Ubuntu 20.04 dans la barre d'URL et appuyez sur Entrée.

//Your_ubuntu_server_ip

Cette page confirme que le serveur Web Apache fonctionne correctement et que les règles UFW sont correctement configurées.

Configuration de la base de données MySQL pour Laravel

Laravel 7 rend l'interaction avec les bases de données extrêmement simple à travers les différents backends de base de données qu'il prend en charge, tels que MySQL version 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ et SQL Server 2017+. Nous avons déjà le dernier package MySQL installé avec le lampe-sever^ tâche. Donc, dans cette section, nous allons configurer le serveur MySQL, puis voir comment configurer un nouvel utilisateur MySQL et une nouvelle base de données pour l'application Laravel.

Configurer MySQL

La base de données MySQL est livrée avec un script de sécurité préinstallé qui peut être utilisé pour supprimer certains paramètres par défaut non sécurisés. Il est recommandé d'exécuter ce script avant de déployer votre application Laravel.

sudo mysql_secure_installation

La commande ci-dessus exécutera le script de sécurité qui vous posera une série de questions pour configurer le serveur MySQL.

Tout d'abord, il vous sera demandé si vous souhaitez configurer le VALIDER LE MOT DE PASSE brancher. Ce plugin vérifie votre mot de passe et les classe comme sécurisés ou non sécurisés en fonction du niveau de politique de validation de mot de passe que vous choisirez bientôt. Alors appuyez sur Oui si vous souhaitez activer ce plugin.

Sortir: Sécuriser le déploiement du serveur MySQL. Connexion à MySQL à l'aide d'un mot de passe vide. COMPOSANT VALIDATE PASSWORD peut être utilisé pour tester les mots de passe et améliorer la sécurité. Il vérifie la force du mot de passe et permet aux utilisateurs de définir uniquement les mots de passe suffisamment sécurisés. Souhaitez-vous configurer le composant VALIDATE PASSWORD ? Appuyez sur y|Y pour Oui, toute autre touche pour Non : Oui

Définissez ensuite le niveau de politique de validation du mot de passe en entrant 0, 1 ou 2 selon la force avec laquelle vous souhaitez créer votre mot de passe pour vos bases de données.

Sortir: Il existe trois niveaux de politique de validation de mot de passe : FAIBLE Longueur >= 8 MOYENNE Longueur >= 8, numérique, casse mixte et caractères spéciaux FORT Longueur >= 8, numérique, casse mixte, caractères spéciaux et fichier dictionnaire Veuillez saisir 0 = FAIBLE, 1 = MOYEN et 2 = FORT : 2

Ensuite, il vous sera demandé de saisir un nouveau mot de passe pour l'utilisateur root MySQL. Entrez un mot de passe approprié pour votre racine MySQL. Le plugin VALIDATE PASSWORD vous donnera la force estimée de votre mot de passe en fonction de votre niveau de validation de mot de passe. presse Oui pour continuer avec le mot de passe que vous avez fourni.

Sortir: Veuillez définir le mot de passe pour root ici. Nouveau mot de passe : Saisissez à nouveau le nouveau mot de passe : Force estimée du mot de passe : 100 Souhaitez-vous continuer avec le mot de passe fourni ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : Oui

presse Oui pour le reste des invites, ils supprimeront certains utilisateurs anonymes et les bases de données de test, désactiveront la connexion root à distance et rechargeront les nouveaux paramètres du serveur MySQL. Lorsque vous avez terminé, testez votre base de données en exécutant :

sudo mysql

La commande ci-dessus ouvrira la console MySQL, se connectant à la base de données MySQL en tant que racine utilisateur. Vous verrez une sortie comme celle-ci :

Sortir: Bienvenue sur le moniteur MySQL. Les commandes se terminent par ; ou \g. Votre identifiant de connexion MySQL est la version 10 Server : 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle et/ou ses sociétés affiliées. Tous les droits sont réservés. Oracle est une marque déposée d'Oracle Corporation et/ou de ses filiales. Les autres noms peuvent être des marques déposées de leurs propriétaires respectifs. Tapez « aide ; » ou '\h' pour obtenir de l'aide. Tapez '\c' pour effacer l'instruction d'entrée actuelle. mysql>

Vous avez peut-être remarqué que vous n'aviez pas besoin d'entrer le mot de passe que vous avez défini pour l'utilisateur root MySQL. C'est parce que la méthode d'authentification par défaut pour l'utilisateur root de MySQL est cache_sha2_authentification à la place du mysql_native_password méthode qui utilise un mot de passe pour se connecter.

Ainsi, par défaut, vous ne pouvez vous connecter qu'en tant qu'utilisateur root MySQL avec sudo utilisateurs activés qui agissent comme une sécurité supplémentaire pour le serveur MySQL. Mais la bibliothèque PHP MySQL ne prend pas en charge cache_sha2_authentification méthode. Par conséquent, nous devons utiliser mysql_native_password méthode lorsque nous créons un nouvel utilisateur pour Laravel car il utilise des mots de passe pour se connecter et interagir avec la base de données.

Créer un nouvel utilisateur et une nouvelle base de données MySQL

C'est toujours une bonne pratique de créer un nouvel utilisateur et une nouvelle base de données spécifiquement pour votre application au lieu d'utiliser l'utilisateur root MySQL et des bases de données de test. Nous allons donc configurer un nouvel utilisateur MySQL appelé laravel_user et une base de données appelée laravel. Si vous avez suivi le didacticiel jusqu'à présent, vous devriez avoir la console MySQL ouverte. Pour créer l'utilisateur appelé laravel_user exécutez la requête suivante dans la console MySQL :

Noter: Remplace le passer un test dans la requête MySQL ci-dessous avec un mot de passe fort.

CRÉER UN UTILISATEUR 'laravel_user'@'%' IDENTIFIÉ AVEC mysql_native_password PAR 'testpass' ;

Ensuite, créez une base de données appelée laravel pour notre application Laravel en exécutant cette requête :

CRÉER UNE BASE DE DONNÉES laravel;

Seul l'utilisateur root MySQL a des autorisations sur la nouvelle base de données laravel. Accordez toutes les autorisations sur le laravel base de données au laravel_user en exécutant:

GRANT ALL ON laravel.* TO 'laravel_user'@'%';

Donc, nous avons maintenant un nouvel utilisateur MySQL et une base de données, quittez la console MySQL en exécutant :

SORTIR;

Testez votre nouvel utilisateur MySQL en vous connectant à la console MySQL avec, pour ce faire, exécutez cette commande dans le terminal :

mysql -u laravel_user -p

Remarquez le -p flag dans la commande, il vous demandera le mot de passe que vous avez utilisé lors de la création du laravel_user (passer un test dans la requête). Après vous être connecté à la console MySQL en tant que laravel_user, confirmez que l'utilisateur a accès au laravel base de données en exécutant :

AFFICHER LES BASES DE DONNÉES ;
Sortir: +--------------------+ | Base de données | +--------------------+ | laravel | | information_schema | +--------------------+ 2 rangées en série (0,01 sec)

La sortie ci-dessus confirme que l'utilisateur MySQL laravel_user a des autorisations sur la base de données laravel. Quittez la console MySQL en utilisant le SORTIR; requête afin que nous puissions procéder à la création de l'application DemoApp Laravel.

Installation de Laravel

Le framework Laravel utilise Composer pour télécharger et gérer ses dépendances. Nous devons donc installer Composer sur notre machine Ubuntu 20.04 avant de pouvoir créer une application Laravel.

Installer le compositeur

Composer est un outil de gestion des dépendances pour PHP, qui facilite grandement l'installation et la mise à jour des frameworks et des bibliothèques PHP. Nous allons voir comment installer Composer rapidement dans ce tutoriel afin de pouvoir l'utiliser pour télécharger et gérer le framework Laravel.

Vous devez installer certains packages supplémentaires requis par Composer pour fonctionner, tels que php-cli pour exécuter des scripts PHP dans le terminal et décompresser pour aider Composer à extraire les packages. Installez-les tous les deux en exécutant :

sudo apt installer php-cli décompresser

Ensuite, pour installer Composer globalement, téléchargez le script d'installation de Composer avec boucle et installez-le à l'aide de la commande suivante :

curl -sS //getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Enfin, vérifiez que le composer s'est correctement installé en exécutant :

compositeur
 ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_ / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Compositeur version 1.10.8 2020-06- 24 21:23:30 Utilisation : commande [options] [arguments]

Cette sortie confirme que Composer fonctionne correctement sur votre serveur Ubuntu 20.04, vous pouvez commencer à l'utiliser pour installer et gérer des frameworks et des bibliothèques PHP.

Créer une application Laravel

Nous avons à peu près tout le nécessaire pour créer une application Laravel sur notre serveur Ubuntu 20.04, à l'exception de quelques extensions PHP. Installez ces extensions manquantes à l'aide de la commande suivante :

sudo apt installer php-mbstring php-xml php-bcmath php-zip php-json

Maintenant, nous pouvons installer Laravel et créer une nouvelle application Laravel à l'aide de Composer. Tout d'abord, assurez-vous que vous êtes dans le répertoire personnel de votre utilisateur :

disque ~

Créez ensuite un nouveau projet Laravel en utilisant le Composer's créer-projet commander:

compositeur create-project --prefer-dist laravel/laravel LaravelApp

La commande ci-dessus créera un nouveau projet appelé LaravelApp et installera et configurera également le framework Laravel pour vous. Vous verrez une sortie semblable à celle-ci :

Sortir: Création d'un projet "laravel/laravel" sur "./LaravelApp" Installation de laravel/laravel (v7.12.0) Installation de laravel/laravel (v7.12.0) : Téléchargement (100%) Projet créé dans /home/ath/LaravelApp @php - r "file_exists('.env') || copy('.env.example', '.env');" Chargement des référentiels composer avec les informations sur les packages Mise à jour des dépendances (y compris require-dev) Opérations sur les packages : 97 installations, 0 mises à jour, 0 suppressions Installation de voku/portable-ascii (1.5.2) : Téléchargement (100%) Installation de symfony/polyfill-ctype (v1 .17.1) : Téléchargement (100%) Installation de phpoption/phpoption (1.7.4) : Téléchargement (100%) Installation de vlucas/phpdotenv (v4.1.7) : Téléchargement (100%) Installation de symfony/css-selector (v5.1.2) : Téléchargement (100%) ....

Lorsque l'installation est terminée, allez dans le répertoire racine de l'application, puis exécutez le Laravel artisan commande pour vérifier que tous les composants sont installés correctement :

cd LaravelApp/ php artisan
Sortir: Laravel Framework 7.18.0 Utilisation : commande [options] [arguments] Options : -h, --help Afficher ce message d'aide -q, --quiet Ne pas afficher de message -V, --version Afficher la version de cette application --ansi Forcer la sortie ANSI --no-ansi Désactiver la sortie ANSI -n, --no-interaction Ne posez aucune question interactive --env[=ENV] L'environnement dans lequel la commande doit s'exécuter sous -v|vv|vvv, --verbose Augmenter la verbosité des messages : 1 pour la sortie normale, 2 pour la sortie plus détaillée et 3 pour le débogage....

Cette sortie confirme que l'installation a réussi et que tous les fichiers sont en place et que les outils de ligne de commande Laravel fonctionnent correctement. Cependant, nous devons encore configurer l'application pour configurer la base de données et quelques autres paramètres.

Configurer l'application Laravel

Les fichiers de configuration de Laravel sont situés dans un répertoire appelé configuration dans le répertoire racine de l'application. De plus, lorsque nous avons installé Laravel via Composer, il a créé un fichier d'environnement appelé « .env » dans le répertoire racine de l'application. Le fichier d'environnement inclut les configurations spécifiques à l'environnement et il a priorité sur les paramètres des fichiers de configuration normaux situés dans le répertoire config.

Remarque : le fichier de configuration de l'environnement contient des informations sensibles sur votre serveur telles que les mots de passe de base de données, les clés d'application Laravel, etc. Ainsi, il ne doit jamais être partagé publiquement.

Nous allons maintenant éditer le .env pour modifier la configuration et y ajouter les informations d'identification de la base de données. Ouvrez le fichier à l'aide de l'éditeur nano en exécutant :

nano.env

Il y a beaucoup de variables de configuration dans ce .env déposer. Nous n'avons pas besoin de modifier chacun d'eux, car Composer a configuré la plupart des paramètres automatiquement. Voici donc la liste de certaines variables de configuration principales que vous devez connaître :

  • NOM DE L'APPLICATION: Le nom de l'application utilisé pour la notification et les messages, nous allons donc le définir sur « LaravelApp ».
  • APP_ENV: Cette variable est utilisée pour indiquer l'environnement actuel de l'application. Il peut être défini sur des environnements locaux, de développement, de test ou de production. Nous allons le mettre dans l'environnement de développement pour le moment.
  • APP_KEY: Clé d'application unique utilisée pour créer des sels et des hachages pour l'application Web. Il est généré automatiquement lorsque vous installez Laravel via Composer, il n'est donc pas nécessaire de le modifier.
  • APP_DEBUG: Il peut être défini sur vrai ou faux, selon si vous souhaitez afficher les erreurs côté client. Définissez-le sur false lorsque vous passez à l'environnement de production.
  • APP_URL: URL ou IP de base de l'application, remplacez-la par votre nom de domaine si vous en avez un pour votre application Laravel ou conservez-la intacte pour le moment.
  • DB_BASE DE DONNÉES: Nom de la base de données que vous souhaitez utiliser avec l'application Laravel. Nous allons utiliser la base de données MySQL « laravel » que nous avons créée lors de la configuration de MySQL.
  • DB_USERNAME: Nom d'utilisateur pour se connecter à la base de données. Nous allons utiliser l'utilisateur MySQL 'laravel_user' que nous avons créé.
  • DB_MOT DE PASSE: Le mot de passe pour se connecter à la base de données.
 APP_NAME= LaravelApp APP_ENV= développement APP_KEY= base64:Application_unique_key APP_DEBUG=vrai APP_URL= //domaine_ou_IP LOG_CHANNEL=pile DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME= laravel_user DB_PASSWORD= passer un test

Apporter des modifications au .env fichier en conséquence et lorsque vous avez terminé de modifier, enregistrez et quittez le fichier en utilisant CTRL+X puis appuyez Oui et appuyez sur Entrée pour confirmer. Maintenant, il ne reste plus qu'à configurer le serveur Apache et créer un hôte virtuel pour notre application Laravel.

Configuration du serveur Web Apache

Nous avons installé Laravel dans le dossier local du répertoire personnel de l'utilisateur. Bien que cela fonctionne parfaitement pour le développement local, il est recommandé d'avoir le répertoire d'application Web situé dans /var/www. La raison pour laquelle nous n'avons pas installé Laravel dans /var/www est directement parce qu'il appartient à root et Composer ne doit pas être utilisé avec sudo.

Utilisez donc le mv commande pour déplacer le dossier de l'application Laravel et son contenu vers /var/www:

sudo mv ~/Laravel/ /var/www

Le répertoire LaravelApp appartient à l'utilisateur, vous pouvez donc toujours éditer et apporter des modifications aux fichiers sans utiliser le sudo commander. Mais le serveur Web Apache a besoin d'accéder au cache et aux répertoires de stockage de l'application, car Laravel y stocke les fichiers générés par l'application. Remplacez le propriétaire de ces dossiers par le www-données utilisateur utilisant le chown commander:

sudo chown -R www-data.www-data /var/www/LaravelApp/storage sudo chown -R www-data.www-data /var/www/LaravelApp/bootstrap/cache

Après avoir changé le propriétaire de ces répertoires, activez le mod_rewrite car il est requis par Laravel de transformer correctement les URL à interpréter par sa fonction de routage via .htaccess déposer.

sudo a2enmod réécriture

Ensuite, nous devons configurer un hôte virtuel pour l'application Laravel. Les configurations d'hôte virtuel se trouvent à /etc/apache2/sites-disponible. Nous allons éditer le fichier hôte virtuel par défaut pour déployer l'application Laravel. Ouvrez le fichier de configuration de l'hôte virtuel par défaut à l'aide de l'éditeur nano :

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

Changer la racine du document de /var/www/html à /var/www/LaravelApp/public et ajoutez l'extrait suivant sous la ligne DocumentRoot :

 AutoriserTout remplacer 

Ton 000-default.conf devrait ressembler à quelque chose comme ça maintenant avec peu de commentaires.

 ServerAdmin webmaster@localhost DocumentRoot /var/www/LaravelApp/public AllowOverride All ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combiné 

Redémarrez le serveur Web Apache en exécutant la commande suivante :

sudo systemctl redémarrer apache2

Allez maintenant dans votre navigateur et tapez l'adresse IP de votre serveur Ubuntu 20.04. Vous verrez la page de démarrage de Laravel au lieu de la page d'accueil par défaut d'Apache.

En supposant que vous ayez suivi ce guide jusqu'à présent, vous devriez avoir une application Laravel fonctionnelle avec une base de données MySQL appelée laravel pour ça. À partir de là, vous pouvez commencer à développer vous-même votre application Laravel. Pour en savoir plus sur le framework Laravel et son utilisation, visitez la page de documentation de Laravel.