Recherche de site Web

Comment installer Nginx, MariaDB, PHP (pile LEMP) sur Ubuntu 18.04 Bionic Beaver Linux


Objectif

Installez Nginx Web Server (LEMP) sur Ubuntu 18.04. En particulier, ce guide d’installation du serveur web Linux vous montre comment installer Nginx, comment installer MariaDB et comment installer PHP.

Distributions

Ubuntu 18.04 Castor bionique

Exigences

Une installation fonctionnelle d’Ubuntu 18.04 avec les privilèges root

Difficulté

DOULEUR MOYENNE

Conventions

  • # – nécessite que les commandes Linux données soient exécutées avec les privilèges root, soit directement en tant qu’utilisateur root, soit en utilisant la commande sudo
  • $ – nécessite que des commandes Linux données soient exécutées en tant qu’utilisateur régulier non privilégié

Introduction

Si vous souhaitez exécuter des sites Web basés sur PHP sous Linux, Apache n’est pas votre seule option. Nginx est un serveur Web plus rapide et plus léger, assez facile à configurer et à faire fonctionner. De plus, il est excellent pour gérer d’autres tâches telles que l’équilibrage de charge, l’optimisation du serveur et agir en tant que proxy inverse. En fait, Nginx est un choix de premier ordre parmi les startups pour l’hébergement de leurs applications Web.

La configuration de Nginx pour héberger PHP sur Ubuntu 18.04 est très simple, et vous n’avez besoin que de quelques packages installés pour commencer.

Installation

Avant de pouvoir faire quoi que ce soit, vous devez d’abord installer tout ce dont vous avez besoin. Il n’y a que quelques forfaits dont vous avez besoin. De plus, Ubuntu 18.04 dispose de versions assez récentes de tout dans ses dépôts par défaut, vous n’avez donc pas à vous soucier de la recherche de dépôts externes.

sudo apt install mariadb-server nginx php-fpm php-mysql

Lors de l’installation, il vous sera demandé de configurer un compte administrateur pour MariaDB/MySQL. Choisissez une phrase de passe sécurisée et facile à mémoriser.

Vous devriez prendre une minute pour démarrer et activer PHP-FPM maintenant aussi.

REMARQUE : Mettez à jour les commandes ci-dessous avec la version de PHP que vous avez installée ! Pour vérifier votre version de PHP, exécutez la commande php --version.

sudo systemctl start php7.1-fpm
sudo systemctl enable php7.1-fpm

Configurer votre base de données

Vous pouvez maintenant vous connecter à votre base de données nouvellement créée.

mysql -u root -p

Entrez le mot de passe que vous avez configuré lors de l’installation.

Vous serez déposé dans la console MySQL. Vous pouvez faire tout ce dont vous avez besoin à partir de là. Avant toute chose, créez votre base de données réelle.

mysql> CREATE DATABASE `bionic_lemp`;

Ensuite, faites un usage régulier pour exécuter la base de données.

mysql> CREATE USER `site_admin`@`localhost` IDENTIFIED BY 'your_password';

Enfin, accordez à votre nouvel utilisateur les privilèges nécessaires pour utiliser réellement la base de données.

mysql> GRANT ALL ON bionic_lemp.* TO `site_admin`@`localhost`;

Lorsque vous avez terminé, videz les privilèges et quittez la console.

mysql> FLUSH PRIVILEGES;
mysql> exit;

Configurer Nginx

Toutes les configurations Nginx se trouvent dans /etc/nginx. Ils sont décomposés pour simplifier le processus de configuration. Les deux dont vous devez vous soucier sont le fichier principal nginx.conf et le fichier spécifique au site que vous allez créer pour votre site Web. Celui-ci, vous le mettrez dans le répertoire sites-available.

Créez un nouveau fichier pour votre site dans /etc/nginx/sites-available. Le chemin complet doit être quelque chose comme /etc/nginx/sites-available/votre-site.

Commencez le fichier en créant un bloc serveur. Nginx utilise des blocs de serveur pour désigner une nouvelle instance d’application web à écouter.

server {
}

Les premières choses que vous devez mettre dans votre bloc de serveur sont les lignes d’écoute. Ils indiquent à Nginx sur quel port écouter.

listen 80 default;
listen [::]:80 default;

Celles-ci couvriront à la fois les connexions IPv4 et IPv6. Supprimer la valeur par défaut spécifie qu’il s’agit du serveur par défaut. Vous ne pouvez avoir qu’un seul par défaut, alors assurez-vous de sélectionner le bon, si vous hébergez plusieurs sites.

Ensuite, indiquez à Nginx quel nom de domaine associer au site. Si vous ne faites cela que localement, utilisez localhost. Sinon, utilisez votre nom de domaine.

server_name your-site.com;

Si vous souhaitez que Nginx redirige automatiquement les requêtes avec le www vers le même bloc de serveur. Ajoutez le bloc suivant avant le début de votre bloc de serveur actuel.

server {
    listen       80;
    server_name  www.your-site.com;
    return       301 http://your-site.com$request_uri;
}

Ensuite, spécifiez le répertoire racine de votre site et le nom du fichier d’index du site. Ces lignes indiquent à Nginx de rechercher le site dans /var/www/votre-site et de commencer par n’importe quel fichier appelé index.php ou index.html.

root /var/www/your-site/;
index index.php index.html;

Il est également judicieux de configurer des journaux d’erreurs individuels pour chacun de vos sites. Spécifiez-les ici aussi.

access_log /var/log/nginx/your-site.access_log;
error_log/var/log/nginx/your-site.error_log;

Créez un bloc d’emplacement pour dire à Nginx de générer une erreur 404 chaque fois que des fichiers ne sont pas trouvés. Les blocs de localisation vont à l’intérieur des blocs de serveur et indiquent à Nginx comment gérer des types de fichiers spécifiques à certains endroits.

location / {
	try_files $uri $uri/ =404;
}

La dernière chose que vous devez faire est de dire à Nginx comment gérer vos fichiers PHP. Créez un autre bloc d’emplacement pour cela.

REMARQUE : Mettez à jour la configuration ci-dessous avec votre version PHP installée ! Pour vérifier votre version de PHP, exécutez la commande php --version.

location ~ \.php$ {
	include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}

C’est tout ce dont vous avez besoin. Enregistrez et quittez le fichier. C’est aussi probablement une bonne idée de créer ce répertoire de site maintenant.

sudo /var/www/your-site

Donnez à Nginx la propriété aussi.

sudo chown -R www-data:www-data /var/www/your-site

Maintenant, supprimez le lien symbolique pour la configuration par défaut dans /etc/nginx/sites-enabled.

sudo rm /etc/nginx/sites-enabled/default

Ensuite, créez un nouveau lien symbolique pour la configuration de votre site.

sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/

Redémarrez Nginx pour que les modifications prennent effet.

sudo systemctl restart nginx

Testez-le

La meilleure façon de tester que tout fonctionne est de mettre un simple script PHP dans le répertoire de votre site et de le connecter à votre base de données. Créez le fichier suivant à l’adresse /var/www/votre-site/index.php.

<?php echo '<h1>Page loaded with PHP!</h1>';
$conn = mysqli_connect('localhost', 'site_admin', 'your_password');

if(!$conn){
	die('<h2>Error: </h2>' . mysqli_connect_error());
}else{
	echo '<h2>Successfully Connected to MySQL Database!</h2>';
}
?>

Accédez à votre site à l’aide de votre navigateur Web. Si vous voyez le message de réussite indiquant que vous vous êtes connecté avec succès à MySQL, votre serveur est correctement configuré.

Réflexions finales

La configuration de Nginx prend un certain temps, mais cela en vaut la peine. Il n’est pas seulement plus rapide que les autres serveurs Web, il vous offre de nombreuses options et un contrôle précis. Il est également facile de configurer Nginx pour héberger des applications Web écrites dans d’autres langages comme Python et Ruby à côté de vos applications PHP. Nginx est facilement l’un des meilleurs choix pour les applications Web modernes.

Articles connexes: