Recherche de site Web

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 vers la construction à partir des sources et fournit, via son programme de gestion de logiciels - Portage - certains outils nécessaires pour créer une plate-forme complète de développement Web qui agit et fonctionne très rapidement et présente également un haut degré de personnalisation.

Cette rubrique vous guidera à travers un processus d'installation étape par étape pour créer une plate-forme d'environnement Web complète avec LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), et avec l'aide de indicateurs USE fournis par Portage Package Management, qui offrent un ensemble de fonctionnalités de package lors du processus de compilation - les modules ou les paramètres nécessaires à une plate-forme Web, modifieront considérablement les configurations du serveur.

Exigences

  1. Installation de Gentoo avec un profil renforcé pour un serveur connecté à Internet – Guide d'installation de Gentoo.
  2. Réseau configuré avec une adresse IP statique.

Étape 1 : Installer le serveur Web Nginx

1. Avant de tenter 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 @world

2. Une fois le processus de mise à jour terminé, procédez à l'installation de Nginx en choisissant les paramètres et modules préférés en faisant écho aux indicateurs Nginx USE dans le fichier Portage make.conf. . Répertoriez d’abord 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 (indicateurs USE pour les packages), utilisez la commande equery.

equery uses nginx

Installez ensuite 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, avec lesquels Nginx compilera, ajoutez-les tous sur une seule ligne dans le fichier Portage make.conf avec NGINX_MODULES_HTTP , puis recompilez Nginx avec de 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 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 indicateurs Portage USE 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, 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.conf

Recherchez et décommentez les directives suivantes pour ressembler à 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. 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 start

Même si le service PHP-FPM est démarré, Nginx ne peut pas communiquer avec la passerelle PHP, certaines modifications doivent donc être apportées aux fichiers de configuration Nginx.

Étape 3 : Modifier les configurations Nginx

7. Le fichier de configuration du modèle par défaut de Nginx fournit simplement un socket HTTP de base pour localhost 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.conf

Localisez le premier bloc server qui correspond à localhost et écoute sur l'adresse IP 127.0.0.1 et faites en sorte que toutes ses instructions ressemblent à la capture d'écran ci-dessous.

Ne fermez pas encore le fichier, déplacez-vous tout en bas et ajoutez l'instruction suivante avant la dernière accolade fermante " } ".

Include /etc/nginx/sites-enabled/*.conf;

8. Créez ensuite des répertoires Nginx et des fichiers de configuration sites activés et sites disponibles (pour les hôtes virtuels inutilisés) pour localhost sur les protocoles HTTP et HTTPS. .

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

Créez la configuration de fichier suivante 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 système (variable shell ` PATH), qui agissent 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 disponibles à sites activés.

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. Créez ensuite le deuxième script appelé n2dissite, qui supprimera les hôtes virtuels actifs spécifiés du chemin Nginx compatible avec les sites 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é la modification des 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 l'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 restart

12. 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.php

En 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 que vous disposez de pointeurs DNS valides pour un site Internet. -face au serveur Web ou utilisez les entrées localement sur le fichier d'hôtes 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 Installation de LAMP sur Gentoo.

13. En retour, si vous souhaitez utiliser MariaDB, remplacement instantané de MySQL, utilisez les commandes suivantes pour obtenir les indicateurs USE et l'installer.

emerge -pv mariadb
emerge --ask mariadb

Dans le cas où vous rencontrez un conflit de package 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 mariadb

14. 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 localhost, supprimez l'utilisateur anonyme/la base de données de test).

service mysql start
mysql_secure_installation

15. Entrez dans la base de données MySQL à l'aide de 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 doué 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 un exemple de fichier de configuration, modifiez la phrase secrète blowfish_secret avec une chaîne aléatoire, puis créez un lien symbolique à partir de /usr. /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ vers le chemin racine du document des hôtes virtuels 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 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 default

Nous disposons désormais d'une configuration d'environnement minimale pour l'hébergement Web, et si vous utilisez uniquement 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 vous satisfaire.