Gentoo est l’une des distributions Linux les plus rapides en raison de son orientation vers la construction à partir des sources et offre, par le biais de son programme de gestion des 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 qui est également hautement personnalisable.

Ce sujet vous guidera à travers un processus d’installation étape par étape pour construire une plate-forme d’environnement Web complète avec LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), et avec l’aide des drapeaux USE fournis par la gestion de packages Portage, qui offre un ensemble de fonctionnalités de package lors du processus de compilation – des modules ou des paramètres nécessaires pour une plateforme web, qui ajusteront considérablement les configurations du serveur.
Exigences
- Installation de Gentoo avec un profil renforcé pour un serveur accessible depuis Internet – Guide d’installation de Gentoo.
- Réseau configuré avec une adresse IP statique.
Étape 1 : Installer le serveur Web Nginx
1. Avant d’essayer de procéder à l’installation de Nginx, assurez-vous que votre NIC 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 @world

2. Après la fin du processus de mise à jour, procédez à l’installation de Nginx en choisissant les paramètres et modules préférés en échoant les drapeaux USE de Nginx dans le fichier make.conf de Portage. Commencez par lister les modules d’installation par défaut de Nginx en exécutant la commande suivante.
# emerge -pv nginx
Pour des informations détaillées sur les modules (drapeaux USE pour les paquets), utilisez la commande equery.
# equery uses nginx

Ensuite, installez Nginx avec la commande suivante.
# emerge --ask nginx

Si vous avez besoin de modules supplémentaires (WebDAV, fancyindex, GeoIP, etc.) en plus de ceux par défaut que Nginx va compiler, ajoutez-les tous sur une seule ligne dans le fichier make.conf de Portage avec la directive NGINX_MODULES_HTTP, 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 nginx

3. Une fois que Portage a terminé d’installer Nginx, démarrez le démon http et vérifiez-le en redirigeant 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 aux 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 php
5. Avant de démarrer PHP-FPM, quelques modifications doivent être apportées au fichier de configuration du service. Ouvrez le fichier de configuration de php-fpm et apportez les modifications suivantes.
# nano /etc/php/fpm-php5.5/php-fpm.conf
Recherchez 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 = 20
6. Après avoir édité le fichier de configuration de PHP-FPM, modifiez les autorisations du fichier journal de PHP-FPM et démarrez le service.
# chmod 755 /var/log/php-fpm.log # /etc/init.d/php-fpm start
Même si le service PHP-FPM est démarré, Nginx ne peut pas communiquer avec la passerelle PHP, donc des modifications doivent être apportées aux fichiers de configuration de Nginx.
Étape 3 : Éditer les configurations de Nginx
7. Le fichier de configuration modèle par défaut de Nginx fournit simplement un socket HTTP de base pour localhost seulement. Pour modifier ce comportement et activer les hôtes virtuels, ouvrez le fichier nginx.conf situé dans le chemin /etc/nginx/ et effectuez les configurations suivantes.
# nano /etc/nginx/nginx.conf
Localisez le premier bloc server qui correspond à localhost et écoute sur l’adresse IP 127.0.0.1 et commentez toutes ses déclarations pour qu’elles ressemblent à celles de la capture d’écran ci-dessous.

Ne fermez pas encore le fichier et déplacez-vous tout en bas pour ajouter la déclaration suivante avant la dernière accolade fermante “ } “.
Include /etc/nginx/sites-enabled/*.conf;

8. Ensuite, créez les répertoires Nginx sites-enabled et sites-available (pour les hôtes virtuels inutilisés) et les fichiers de configuration pour localhost sur les protocoles HTTP et HTTPS.
# mkdir /etc/nginx/sites-available # mkdir /etc/nginx/sites-enabled
Créez le fichier de configuration suivant pour localhost.
# nano /etc/nginx/sites-available/localhost.conf
Ajoutez 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.conf
Ajoutez 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 exécutable du système (variable d’environnement $PATH), qui agissent comme des commandes pour activer ou désactiver les hôtes virtuels de 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 et sites-enabled.
# nano /usr/local/bin/n2eniste
Ajoutez 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/$1.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/$1.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 fi

10. Ensuite, créez le deuxième script appelé n2dissite, qui supprimera les hôtes virtuels actifs spécifiés du chemin Nginx sites-enabled avec le contenu suivant.
# nano /usr/local/bin/n2dissite
Ajoutez le contenu suivant.
#!/bin/bash avail=/etc/nginx/sites-enabled/$1.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/$1.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 fi

11. Après avoir terminé d’éditer les scripts Bash, ajoutez les autorisations d’exécution et activez les hôtes virtuels locaux – 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 changements.
# chmod +x /usr/local/bin/n2dissite # chmod +x /usr/local/bin/n2ensite # n2ensite localhost # n2ensite localhost-ssl # service nginx restart # service php-fpm restart

12. Pour tester les configurations, créez un fichier d’informations PHP sur le chemin racine par défaut de l’hôte local 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.php

En utilisant les fichiers de configuration des hôtes virtuels locaux comme modèles et les commandes n2enmod et n2dismod de Nginx, 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 utilisez des entrées localement dans le fichier hosts du 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 présentée dans l’installation de LAMP sur Gentoo.
13. Ensuite, si vous voulez utiliser MariaDB, un remplaçant de MySQL, utilisez les commandes suivantes pour obtenir les drapeaux USE et l’installer.
# emerge -pv mariadb # emerge --ask mariadb

En cas de conflit de package avec MySQL, ajoutez les lignes suivantes au fichier package.accept.keywords de Portage.
# 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 mariadb
14. Après l’installation de la base de données MySQL, démarrez le service et sécurisez-le en utilisant la commande mysql_secure_installation (changez le mot de passe root, désactivez la connexion root en dehors de localhost, supprimez l’utilisateur anonyme/la base de données de test).
# service mysql start # mysql_secure_installation
15. Connectez-vous à la base de données MySQL en utilisant la commande mysql -u root -p pour tester sa fonctionnalité et quittez-la avec la commande exit.
# mysql -u root -p MariaDB > show databases; MariaDB > exit;

16. Si vous n’êtes pas très à l’aise avec la ligne de commande MySQL, installez l’interface web PhpMyAdmin 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/phpmyadmin

17. Une fois l’installation de PhpMyAdmin terminée, créez un fichier de configuration basé sur le fichier de configuration d’exemple, changez la phrase secrète blowfish_secret avec une chaîne aléatoire, puis créez un lien symbolique depuis /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ vers le chemin de la racine du document de l’hôte virtuel auquel 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/phpmyadmin

18. Pour accéder à la base de données MySQL via l’interface web de PhpMyAdmin, ouvrez un navigateur et utilisez l’adresse URL suivante https://localhost/phpmyadmin.

19. La dernière étape consiste à activer les services au niveau du système, de manière à ce 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 default

Maintenant, nous avons mis en place un environnement minimal pour l’hébergement web et si vous n’utilisez que des pages dynamiques générées en HTML, JavaScript et PHP et que vous n’avez pas besoin de sites web SSL, la configuration ci-dessus devrait vous satisfaire.
Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/