Laravel est un framework d'applications Web populaire conçu pour les développeurs PHP. Laravel est bien connu dans la communauté PHP pour sa simplicité en tant qu'outil de création d'applications volumineuses et robustes. Laravel est également connu pour sa syntaxe expressive et élégante.
Depuis sa création, Laravel a évolué pour devenir l'un des frameworks d'applications Web les plus populaires et les plus puissants et de nombreuses grandes organisations commencent à réaliser le potentiel de ce framework et ont commencé à l'adopter.
Dans ce didacticiel, nous vous guiderons pour configurer Laravel dans Ubuntu 22.04.
Commençons par la configuration.
1 Prérequis
- Système d'exploitation Ubuntu 22.04
- Version PHP minimale de 8.0.
- Il serait préférable que votre serveur dispose d'au moins 2 Go de RAM
2 Mise à jour du système
Commençons par mettre à jour notre système.
sudo apt update -y && apt upgrade -y
3 Installer PHP et les extensions PHP
La version par défaut de PHP dans le référentiel Ubuntu 22.04 est PHP 8.1, nous pouvons donc procéder à l'installation de PHP sans ajouter de référentiels.
sudo apt-get install php php-fpm libapache2-mod-php php-dev php-zip php-curl php-pear php-mbstring php-mysql php-gd php-xml curl -y
Vérifiez la version PHP :
php -v
Output:
PHP 8.1.2 (cli) (built: Jul 21 2022 12:10:37) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
4 Installation et configuration de la base de données
Dans cette configuration, nous allons utiliser MariaDB comme système de gestion de base de données, mais vous pouvez choisir n'importe quel système de gestion de base de données pris en charge par Laravel, comme SQLite, MySQL, Postgres et SQL Server.
Installons MariaDB.
sudo apt install mariadb-server
Activez et démarrez MariaDB.
sudo systemctl enable mariadb --now
Vérifiez l'état de MariaDB.
sudo systemctl status mariadb
Output:
● mariadb.service - MariaDB 10.6.7 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-09-03 12:32:57 EDT; 2min 13s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 123075 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 9 (limit: 9456)
Memory: 57.2M
CPU: 425ms
CGroup: /system.slice/mariadb.service
└─123075 /usr/sbin/mariadbd
Sécurisons la base de données MariaDB.
sudo mysql_secure_installation
Suivez le guide de déploiement du serveur MariaDB :
Securing the MySQL server deployment.
Enter password for user root:
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.
Estimated strength of the password: 50
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Maintenant, redémarrez MariaDB.
sudo systemctl restart mariadb
Créons maintenant une base de données et un utilisateur de base de données pour notre application Laravel.
mysql -u root -p
MariaDB [(none)]> create database laravel;
MariaDB [(none)]> grant all privileges on laravel.* to 'laravel_user'@'localhost' identified by 'your_secure_password';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Remarque : N'oubliez pas de changer "votre_mot_de_passe_sécurisé ‘ à votre propre mot de passe.
5 Installation de Composer
Composer est un gestionnaire de packages de dépendances au niveau de l'application pour PHP qui fournit un format standard pour la gestion des dépendances des logiciels PHP et des bibliothèques requises. Composer est requis dans Laravel pour gérer facilement le package Laravel et les dépendances.
Installons composer.
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
Vérifiez l'installation.
composer --version
Output:
Composer version 2.4.1 2022-08-20 11:44:50
6 Installation du framework Laravel
Avant de commencer l'installation, changeons de répertoire.
cd /var/www/
Télécharger l'application Laravel. Au moment d'écrire ces lignes, la dernière version de Laravel est 9, nous pouvons donc télécharger Laravel 9 directement sans spécifier la version.
sudo composer create-project laravel/laravel mylara-app --prefer-dist
Sortie si l'installation a réussi :
79 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
INFO No publishable resources for tag [laravel-assets].
No security vulnerability advisories found
> @php artisan key:generate --ansi
INFO Application key set successfully.
Pour vérifier la version, allez dans le répertoire Laravel :
cd mylara-app
php artisan --version
output:
Laravel Framework 9.28.0
Remarque : si vous souhaitez installer une version spécifique, vous pouvez exécuter cette commande (l'exemple ci-dessous installera la version 8):
sudo composer create-project laravel/laravel lara8-app "8.*" –prefer-dist
Définissez la propriété sur www-data.
sudo chown -R www-data:www-data /var/www/mylara-app
Définissez tous les répertoires sur l'autorisation 755.
sudo find /var/www/mylara-app/ -type d -exec chmod 755 {} \;
Définissez tous les fichiers sur l'autorisation 644.
sudo find /var/www/mylara-app/ -type f -exec chmod 644 {} \;
Vérifiez l'application en exécutant le serveur de développement.
php artisan serve --host=0.0.0.0
Output:
INFO Server running on [http://0.0.0.0:8000].
Press Ctrl+C to stop the server
Vous devriez pouvoir accéder à votre serveur de développement Laravel sur http://ipaddress:8000 .
7 Configuration de la production de Laravel
Serveur Web Apache :
sudo apt install apache2
Activez et démarrez Apache.
systemctl enable apache2 --now
Créez un hôte virtuel.
sudo nano /etc/apache2/sites-available/laravel.conf
Ajoutez ce qui suit :
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/mylara-app/public
ServerName domain.com www.domain.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/laravel/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Remarque :N'oubliez pas de modifier le domaine dans la directive ServerName.
Enregistrez le fichier et quittez.
Activez l'hôte virtuel que nous avons créé.
sudo a2ensite laravel.conf
Activez également Apache mod_rewrite.
sudo a2enmod rewrite
Redémarrez le serveur Web Apache.
sudo systemctl restart apache2
Serveur Web Nginx :
Commençons par installer Nginx.
sudo apt install nginx -y
Activez et démarrez Nginx.
sudo systemctl enable nginx --now
Créez un bloc serveur.
sudo nano /etc/nginx/sites-available/laravel.conf
Ajoutez ce qui suit :
server {
server_name domain.com www.domain.com;
access_log /var/log/nginx/domain.com.access.log;
error_log /var/log/nginx/domain.com.error.log;
root /var/www/mylara-app/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
Remarque : N'oubliez pas de modifier le "domaine.com ".
Enregistrez le fichier et quittez.
Activez le fichier de configuration Nginx (bloc serveur).
sudo ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/
Redémarrez Nginx.
sudo systemctl restart nginx
8 Accéder à votre application Laravel
Après avoir configuré avec succès la production, vous devriez pouvoir accéder à votre application Laravel avec votre domaine sur http://domain.com .
9 Conclusion
Vous avez appris à configurer Laravel 9 sur Ubuntu 22.04 avec le serveur Web Nginx ou Apache.
Si vous souhaitez installer un certificat SSL pour sécuriser votre site Web, vous pouvez consulter notre article sur Let's Encrypt.