Installation de LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM et PhpMyAdmin) dans Gentoo Linux
Gentoo est l’une des distributions Linux les plus rapides en raison de son orientation build from sources et fournit par son programme de gestion de logiciels – Portage – certains outils nécessaires pour construire une plate-forme de développement web complète qui agit et fonctionne très rapidement et, également, a un haut degré de personnalisation.
Cette rubrique vous guidera à travers un processus d’installation étape par étape pour la construction d’une plate-forme d’environnement Web complète avec LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), et avec l’aide sur les drapeaux USE fournie par Portage Package Management, qui offre un ensemble de fonctionnalités de paquet sur le processus de compilation - modules ou paramètres nécessaires pour une plate-forme Web, modifiera considérablement les configurations du serveur.
Exigences
- Installation de Gentoo avec un profil renforcé pour un serveur connecté à Internet – Guide d’installation de Gentoo.
- Réseau configuré avec une adresse IP statique.
Étape 1 : Installer Nginx Web Server
1. Avant d’essayer de procéder à l’installation de Nginx, assurez-vous que votre carte réseau a été configurée avec une adresse IP statique et assurez-vous que les sources de Portage et votre système sont à jour.
$ sudo su -
emerge --sync
emerge --update --deep --with-bdeps=y @world2. Une fois le processus de mise à jour terminé, procédez à l’installation de Nginx en choisissant les paramètres et les modules préférés en faisant écho aux drapeaux Nginx USE dans le fichier make.conf de Portage. Listez d’abord les modules d’installation par défaut de Nginx en exécutant la commande suivante.
# emerge -pv nginxPour obtenir des informations détaillées sur les modules (indicateurs USE pour les paquets), utilisez la commande equery.
# equery uses nginxInstallez ensuite Nginx avec la commande suivante.
# emerge --ask nginxSi vous avez besoin de modules supplémentaires (WebDAV, fancyindex, GeoIP, etc.) en plus de ceux par défaut, avec lesquels Nginx compilera, ajoutez-les tous sur une seule ligne sur le fichier make.conf de Portage avec NGINX_MODULES_HTTP directive, puis recompilez Nginx avec les nouveaux modules.
# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
emerge --ask nginx3. Une fois que Portage a fini d’émerger Nginx, démarrez le démon http et vérifiez-le en dirigeant votre navigateur vers http://localhost.
Étape 2 : Installer PHP
4. Pour utiliser le langage de programmation web dynamique PHP avec le serveur Nginx, installez PHP-FastCGI Process Manager (FPM) en ajoutant fpm et d’autres extensions PHP importantes sur les drapeaux USE de Portage et assurez-vous de supprimer l’extension Apache.
# emerge -pv php# equery uses php# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
emerge --ask php5. Avant de démarrer PHP-FPM, certaines modifications doivent être appliquées au fichier de configuration du service. Ouvrez le fichier de configuration php-fpm et apportez les modifications suivantes.
# nano /etc/php/fpm-php5.5/php-fpm.confRecherchez et décommentez les directives suivantes pour qu’elles ressemblent à ceci.
error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000 ## Here you can use any HTTP socket (IP-PORT combination ) you want ##
pm.start_servers = 206. Une fois le fichier de configuration PHP-FPM modifié, modifiez les autorisations du fichier journal PHP-FPM et démarrez le service.
# chmod 755 /var/log/php-fpm.log
/etc/init.d/php-fpm startMême si le service PHP-FPM est démarré, Nginx ne peut pas communiquer avec la passerelle PHP, donc, certaines modifications doivent être effectuées sur les fichiers de configuration Nginx.
Étape 3 : Modifier les configurations Nginx
7. Le fichier de configuration du modèle par défaut de Nginx ne fournit qu’un socket HTTP de base pour l’hôte local uniquement. Pour modifier ce comportement et activer les hôtes virtuels, ouvrez le fichier nginx.conf situé sur le chemin /etc/nginx/ et effectuez les configurations suivantes.
# nano /etc/nginx/nginx.confLocalisez le premier bloc de serveur qui correspond à localhost et écoute l’adresse IP 127.0.0.1 et recommandez à toutes ses déclarations de ressembler à la capture d’écran ci-dessous.
Ne fermez pas encore le fichier et déplacez-vous tout en bas et ajoutez l’instruction suivante avant la dernière fermeture des accolades " } « .
Include /etc/nginx/sites-enabled/*.conf;8. Ensuite, créez des répertoires Nginx et des fichiers de configuration pour localhost sur les protocoles HTTP et HTTPS.
# mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabledCréez la configuration de fichier suivante pour localhost.
# nano /etc/nginx/sites-available/localhost.confAjoutez le contenu du fichier suivant.
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost_access_log main;
error_log /var/log/nginx/localhost_error_log info;
root /var/www/localhost/htdocs;
location / {
index index.html index.htm index.php;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
location ~ \.php$ {
# Test for non-existent scripts or throw a 404 error
# Without this line, nginx will blindly send any request ending in .php to php-fpm
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass 127.0.0.1:9000; ## Make sure the socket corresponds with PHP-FPM conf file
}
}Pour localhost avec SSL, créez le fichier de configuration suivant.
# nano /etc/nginx/sites-available/localhost-ssl.confAjoutez le contenu du fichier suivant.
server {
listen 443 ssl;
server_name localhost;
ssl on;
ssl_certificate /etc/ssl/nginx/nginx.pem;
ssl_certificate_key /etc/ssl/nginx/nginx.key;
access_log /var/log/nginx/localhost.ssl_access_log main;
error_log /var/log/nginx/localhost.ssl_error_log info;
root /var/www/localhost/htdocs;
location / {
index index.html index.htm index.php;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
location ~ \.php$ {
# Test for non-existent scripts or throw a 404 error
# Without this line, nginx will blindly send any request ending in .php to php-fpm
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}9. Il est maintenant temps de créer deux scripts sur un chemin d’accès exécutable système (variable shell ` PATH), qui agit comme des commandes pour activer ou désactiver les hôtes virtuels Nginx.
Créez le premier script Bash nommé n2ensite qui activera les fichiers de configuration des hôtes virtuels en créant un lien symbolique entre les hôtes spécifiés de sites-available à sites-enabled.
# nano /usr/local/bin/n2enisteAjoutez le contenu du fichier suivant.
#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi
avail=/etc/nginx/sites-available/\.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/sites-available/`
if [ "$#" != "1" ]; then
echo "Use script: n2ensite virtual_site"
echo -e "\nAvailable virtual hosts:\n$site"
exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/\.conf; then
echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart"
else
echo -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi10. Créez ensuite le deuxième script appelé n2dissite, qui supprimera les hôtes virtuels actifs spécifiés du chemin Nginx activé pour les sites avec le contenu suivant.
# nano /usr/local/bin/n2dissiteAjoutez le contenu suivant.
#!/bin/bash
avail=/etc/nginx/sites-enabled/\.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`
if [ "$#" != "1" ]; then
echo "Use script: n2dissite virtual_site"
echo -e "\nAvailable virtual hosts: \n$site"
exit 0
else
if test -e $avail; then
sudo rm $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi
if test -e $enabled/\.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi11. Après avoir terminé de modifier les scripts Bash, ajoutez les autorisations d’exécution et activez les hôtes virtuels localhost - utilisez le nom du fichier de configuration de l’hôte virtuel sans extension .conf, puis redémarrez les services Nginx et PHP-FPM pour appliquer les modifications.
# chmod +x /usr/local/bin/n2dissite
chmod +x /usr/local/bin/n2ensite
n2ensite localhost
n2ensite localhost-ssl
service nginx restart
service php-fpm restart12. Pour tester les configurations, créez un fichier d’informations PHP sur le chemin racine par défaut de localhost pour les fichiers Web (/var/www/localhost/htdocs) et redirigez votre navigateur sur https://localhost/info.php ou http://localhost/info.php.
echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.phpEn utilisant les fichiers de configuration des hôtes virtuels localhost comme modèles et Nginx n2enmod et n2dismod, vous pouvez facilement ajouter autant de sites Web que vous le souhaitez, mais assurez-vous d’avoir des pointeurs DNS valides pour un serveur Web accessible sur Internet ou d’utiliser les entrées localement sur le fichier d’hôtes système.
Étape 4 : Installer MySQL/MariaDB + PhpMyAdmin
Pour installer la base de données MySQL et l’interface Web PhpMyAdmin pour MySQL, utilisez la même procédure que celle décrite sur Installation de LAMP sur Gentoo.
13. En retour, si vous souhaitez utiliser MariaDB, remplacement direct pour MySQL, utilisez les commandes suivantes pour obtenir les drapeaux USE et l’installer.
# emerge -pv mariadb
emerge --ask mariadbEn cas de conflit de paquet avec MySQL, ajoutez les lignes suivantes à Portage package.accept.keywords.
# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
emerge --ask mariadb14. Une fois la base de données MySQL installée, démarrez le service et sécurisez-le à l’aide de mysql_secure_installation (modifiez le mot de passe root, désactivez la connexion root en dehors de l’hôte local, supprimez la base de données utilisateur/test anonyme).
# service mysql start
mysql_secure_installation15. Entrez dans la base de données MySQL à l’aide de la commande mysql -u root -p pour tester sa fonctionnalité et laissez-la avec la commande exit.
# mysql -u root -p
MariaDB > show databases;
MariaDB > exit;16. Si vous n’êtes pas trop doué avec la ligne de commande MySQL. installez PhpMyAdmin Web frontend en exécutant les commandes suivantes.
# emerge -pv dev-db/phpmyadmin
echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
emerge --ask dev-db/phpmyadmin17. Une fois l’installation de PhpMyAdmin terminée, créez un fichier de configuration basé sur un exemple de fichier de configuration, modifiez blowfish_secret phrase de passe avec une chaîne aléatoire, puis créez un lien symbolique de /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ vers le chemin racine du document des hôtes virtuels que vous souhaitez accéder à l’interface web de PhpMyAdmin.
# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
cp config.sample.inc.php config.inc.php
nano config.inc.php# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ /var/www/localhost/htdocs/phpmyadmin18. Pour accéder à la base de données MySQL via l’interface Web PhpMyAdmin, ouvrez un navigateur et utilisez l’adresse URL suivante https://localhost/phpmyadmin.
19. La dernière étape consiste à activer les services à l’échelle du système, pour qu’ils démarrent automatiquement après le redémarrage.
# rc-update add nginx default
rc-update add php-fpm default
rc-update add mysql defaultMaintenant, nous avons une configuration d’environnement minimale pour l’hébergement Web, et si vous n’utilisez que des pages générées dynamiquement HTML, JavaScript et PHP et que vous n’avez pas besoin de sites Web SSL, la configuration ci-dessus devrait être satisfaisante pour vous.






















