LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM en PhpMyAdmin) installeren in Gentoo Linux

Gentoo is een van de snelste Linux distributies vanwege zijn opbouw van bronnen oriëntatie en biedt door zijn softwarebeheerprogramma – Portage – bepaalde tools die nodig zijn om een compleet webontwikkelaarsplatform te bouwen dat zeer snel werkt en ook een hoge mate van aanpassing heeft.

Install Nginx in Gentoo Linux

Dit onderwerp leidt je stap voor stap door het installatieproces voor het bouwen van een compleet webomgevingsplatform met LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), en met behulp van USE-vlaggen die worden geleverd door Portage Package Management, dat een set pakketfunctionaliteit biedt in het compilatieproces – modules of instellingen die nodig zijn voor een webplatform, zullen de serverconfiguraties aanzienlijk aanpassen.

Vereisten

  1. Gentoo-installatie met een Hardened Profiel voor een server die aan het internet is blootgesteld – Gentoo Installatiehandleiding.
  2. Netwerk geconfigureerd met een statisch IP-adres.

Stap 1: Installeer Nginx Web Server

1. Voordat u doorgaat met de installatie van Nginx, zorg ervoor dat uw NIC is geconfigureerd met een statisch IP-adres en zorg ervoor dat Portage-bronnen en uw systeem up-to-date zijn.

$ sudo su -
# emerge --sync
# emerge --update --deep --with-bdeps=y @world
Update Gentoo Linux

2. Na voltooiing van het updateproces, ga verder met de installatie van Nginx door de gewenste instellingen en modules te kiezen door Nginx USE-vlaggen naar het make.conf-bestand van Portage te echoën. Lijst eerst de standaard installatiemodules van Nginx op door het volgende commando uit te voeren.

# emerge -pv nginx

Voor gedetailleerde module-informatie (USE-vlaggen voor pakketten) gebruik de equery-opdracht.

# equery uses nginx
List All Flag Modules

Installeer vervolgens Nginx met de volgende opdracht.

# emerge --ask nginx
Install Nginx Web Server

Als je extra modules nodig hebt (WebDAV, fancyindex, GeoIP, etc) naast de standaardmodules waar Nginx mee zal compileren, voeg ze allemaal op één regel toe in het Portage make.conf-bestand met de NGINX_MODULES_HTTP-richtlijn, compileer Nginx vervolgens opnieuw met nieuwe modules.

# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
# emerge --ask nginx
Compile Nginx for New Modules

3. Nadat Portage klaar is met het opkomende Nginx, start de http-daemon en verifieer dit door je browser te richten op http://localhost.

Verify Nginx Web Server

Stap 2: Installeer PHP

4. Om de PHP-dynamische webprogrammeertaal te gebruiken met de Nginx-server, installeer PHP-FastCGI Process Manager (FPM) door fpm en andere belangrijke PHP-extensies toe te voegen aan de Portage USE-vlaggen en zorg ervoor dat je de Apache-extensie verwijdert.

# emerge -pv php
Install PHP in Gentoo
# equery uses php
PHP Extension Selection
# 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. Voordat PHP-FPM wordt gestart, moeten enkele wijzigingen worden toegepast op het serviceconfiguratiebestand. Open het php-fpm-configuratiebestand en breng de volgende wijzigingen aan.

# nano /etc/php/fpm-php5.5/php-fpm.conf

Zoek en haal de volgende richtlijnen uit commentaar zodat ze er zo uitzien.

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. Nadat het PHP-FPM-configuratiebestand is bewerkt, wijzig je de rechten van het PHP-FPM-logbestand en start je de service.

# chmod 755 /var/log/php-fpm.log
# /etc/init.d/php-fpm start

Zelfs als de PHP-FPM-service is gestart, kan Nginx niet communiceren met de PHP-gateway, dus moeten enkele wijzigingen worden aangebracht in de Nginx-configuratiebestanden.

Stap 3: Nginx-configuraties bewerken

7. Het standaard sjabloon configuratiebestand van Nginx biedt alleen een basis-HTTP-socket voor localhost. Om dit gedrag te wijzigen en Virtual Hosts in te schakelen, opent u het bestand nginx.conf dat zich bevindt op het pad /etc/nginx/ en maakt u de volgende configuraties.

# nano /etc/nginx/nginx.conf

Zoek het eerste server blok dat overeenkomt met localhost en luistert op het IP-adres 127.0.0.1 en commentarieer al zijn instructies uit zodat het eruitziet zoals in de onderstaande schermafbeelding.

Disable Basic HTTP Configuration

Sluit het bestand nog niet af en ga naar de zeer onderkant en voeg de volgende instructie toe voor de laatste sluitende accolade “ } “.

Include /etc/nginx/sites-enabled/*.conf;
Enable Nginx Virtual Host

8. Maak vervolgens de sites-enabled en sites-available (voor ongebruikte virtuele hosts) Nginx-mappen en configuratiebestanden aan voor localhost op HTTP en HTTPS-protocollen.

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

Maak de volgende bestandsconfiguratie voor localhost aan.

# nano /etc/nginx/sites-available/localhost.conf

Voeg de volgende bestandsinhoud toe.

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
                        }
                }
Create Nginx Virtual Host Configuration

Voor localhost met SSL maak het volgende configuratiebestand aan.

# nano /etc/nginx/sites-available/localhost-ssl.conf

Voeg de volgende bestandsinhoud toe.

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;
                                }
                }
Create SSL Nginx Virtual Host

9. Het is nu tijd om twee scripts te maken op een uitvoerbaar systeempad ($PATH shellvariabele), die fungeren als commando’s om Nginx Virtual Hosts te activeren of te deactiveren.

Maak het eerste Bash-script met de naam n2ensite dat de configuratiebestanden voor virtuele hosts activeert door een symbolische koppeling te maken tussen de gespecificeerde hosts vanuit sites-available naar sites-enabled.

# nano /usr/local/bin/n2eniste

#!/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
Create Virtual Host Enable Script

10. Maak vervolgens het tweede script genaamd n2dissite aan, dat gespecificeerde actieve virtuele hosts zal verwijderen van het sites-enabled Nginx-pad met de volgende inhoud.

# nano /usr/local/bin/n2dissite

Voeg de volgende inhoud toe.

#!/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
Create Virtual Host Disable Script

11. Nadat het bewerken van de Bash-scripts is voltooid, voeg uitvoeringsrechten toe en activeer lokale virtuele hosts – gebruik de naam van het virtuele host-configuratiebestand zonder de .conf-extensie, start vervolgens Nginx en PHP-FPM-services opnieuw op om wijzigingen toe te passen.

# chmod +x /usr/local/bin/n2dissite
# chmod +x /usr/local/bin/n2ensite
# n2ensite localhost
# n2ensite localhost-ssl
# service nginx restart
# service php-fpm restart
Restart Nginx and PHP-FPM

12. Om configuraties te testen, maak een PHP-info-bestand op het standaard-rootpad voor webbestanden op localhost (/var/www/localhost/htdocs) en leid je browser om naar https://localhost/info.php of http://localhost/info.php.

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
Verify PHP Configuration

Met behulp van virtuele host-configuratiebestanden op localhost als sjablonen en Nginx n2enmod en n2dismod, kun je nu eenvoudig zoveel websites toevoegen als je wilt, maar zorg ervoor dat je geldige DNS-verwijzingen hebt voor een op het internet gerichte webserver of gebruik lokaal systeemhostsbestandvermeldingen.

Stap 4: Installeer MySQL/MariaDB + PhpMyAdmin

Gebruik dezelfde procedure om de MySQL-database en de PhpMyAdmin-webinterface voor MySQL te installeren zoals gepresenteerd in Installeren van LAMP op Gentoo.

13. Als je daarentegen MariaDB wilt gebruiken, een drop-in vervanging voor MySQL, gebruik dan de volgende commando’s om USE-vlaggen te verkrijgen en het te installeren.

# emerge -pv mariadb
# emerge --ask mariadb
Install MariaDB Database

Als je een pakketconflict krijgt met MySQL, voeg dan de volgende regels toe aan 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. Nadat de MySQL-database is geïnstalleerd, start u de service en beveiligt u deze met behulp van mysql_secure_installation (wijzig het rootwachtwoord, schakel rootinloggen buiten localhost uit, verwijder de anonieme gebruiker/testdatabase).

# service mysql start
# mysql_secure_installation

15. Ga naar de MySQL-database met het commando mysql -u root -p om de functionaliteit te testen en verlaat deze met het commando exit.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;
Verify MySQL Connectivity

16. Als u niet zo handig bent met MySQL-opdrachtregel, installeer dan de PhpMyAdmin-webinterface door de volgende opdrachten uit te voeren.

# emerge -pv dev-db/phpmyadmin
# echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
# emerge  --ask dev-db/phpmyadmin
Install PhpMyAdmin

17. Nadat PhpMyAdmin is geïnstalleerd, maakt u een configuratiebestand op basis van het voorbeeldconfiguratiebestand, wijzigt u het blowfish_secret-wachtwoord met een willekeurige tekenreeks en maakt u vervolgens een symbolische koppeling van /usr/share/webapps/phpmyadmin/phpmyadmin_versienummer/htdocs/ naar het pad van het documentroot van de virtuele hosts waar u toegang wilt krijgen tot de webinterface van PhpMyAdmin.

# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
# cp config.sample.inc.php  config.inc.php
# nano config.inc.php
Configure PHPMyAdmin
# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin
Create a PhpMyAdmin Symbolic Link

18. Om toegang te krijgen tot de MySQL-database via de webinterface van PhpMyAdmin, opent u een browser en gebruikt u het volgende URL-adres https://localhost/phpmyadmin.

Verify PhpMyAdmin Login

19. De laatste stap is om de services systeembreed in te schakelen, zodat ze na een herstart automatisch worden gestart.

# rc-update add nginx default
# rc-update add php-fpm default
# rc-update add mysql default
Enable Services System Wide

Nu hebben we een minimale omgeving opgezet voor webhosting, en als u alleen HTML, JavaScript en dynamisch gegenereerde PHP-pagina’s gebruikt en u geen SSL-websites nodig heeft, zou de bovenstaande configuratie voldoende moeten zijn voor u.

Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/