Installazione di LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM e PhpMyAdmin) in Gentoo Linux

Gentoo è una delle distribuzioni Linux più veloci grazie alla sua orientamento alla compilazione dai sorgenti e fornisce, tramite il suo programma di gestione del software – Portage – determinati strumenti necessari per costruire una piattaforma completa per sviluppatori web che agisce e funziona molto rapidamente, e inoltre offre un alto grado di personalizzazione.

Install Nginx in Gentoo Linux

Questo argomento ti guiderà attraverso un processo di installazione passo dopo passo per la creazione di una piattaforma completa per l’ambiente Web con LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) e con l’aiuto dei flag USE forniti dal Gestore dei pacchetti Portage, che offre un insieme di funzionalità dei pacchetti nel processo di compilazione – moduli o impostazioni necessari per una piattaforma web, che ottimizzeranno notevolmente le configurazioni del server.

Requisiti

  1. Installazione di Gentoo con un Profilo protetto per un server esposto su Internet – Guida all’installazione di Gentoo.
  2. Rete configurata con un indirizzo IP statico.

Passo 1: Installare il Server Web Nginx

1. Prima di procedere con l’installazione di Nginx, assicurati che la tua scheda di rete sia configurata con un indirizzo IP statico e assicurati che le fonti di Portage e il tuo sistema siano aggiornati.

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

2. Dopo che il processo di aggiornamento è terminato, procedi con l’installazione di Nginx scegliendo le impostazioni e i moduli preferiti eseguendo l’eco dei flag USE di Nginx nel file make.conf di Portage. Prima elenca i moduli di installazione predefiniti di Nginx eseguendo il seguente comando.

# emerge -pv nginx

Per informazioni dettagliate sui moduli (USE flags per i pacchetti) utilizzare il comando equery.

# equery uses nginx
List All Flag Modules

Quindi installare Nginx con il seguente comando.

# emerge --ask nginx
Install Nginx Web Server

Se sono necessari moduli aggiuntivi (WebDAV, fancyindex, GeoIP, ecc.) oltre a quelli predefiniti, che Nginx compilerà, aggiungerli tutti su una singola riga nel file di configurazione di Portage make.conf con la direttiva NGINX_MODULES_HTTP, quindi ricompilare Nginx con i nuovi moduli.

# 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. Dopo che Portage ha finito di emergere Nginx, avviare il demone http e verificarlo dirigendo il tuo browser su http://localhost.

Verify Nginx Web Server

Passaggio 2: Installare PHP

4. Per utilizzare il linguaggio di programmazione web dinamico PHP con il server Nginx, installare PHP-FastCGI Process Manager (FPM) aggiungendo fpm e altre importanti estensioni di PHP nelle flag USE di Portage e assicurarsi di rimuovere l’estensione di Apache.

# 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. Prima di avviare PHP-FPM è necessario apportare alcune modifiche al file di configurazione del servizio. Aprire il file di configurazione di php-fpm e apportare le seguenti modifiche.

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

Trovare e decommentare le seguenti direttive in modo che assomiglino a queste.

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. Dopo che il file di configurazione di PHP-FPM è stato modificato, modificare i permessi del file di log di PHP-FPM e avviare il servizio.

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

Anche se il servizio PHP-FPM è avviato, Nginx non può comunicare con il gateway PHP, pertanto, sono necessarie alcune modifiche ai file di configurazione di Nginx.

Passaggio 3: Modificare le Configurazioni di Nginx

7. Il file di configurazione del modello predefinito di Nginx fornisce solo un socket HTTP di base per localhost. Per modificare questo comportamento e abilitare gli Host virtuali, aprireil file nginx.conf posizionato sul percorso /etc/nginx/ e apportare le seguenti configurazioni.

# nano /etc/nginx/nginx.conf

Trovare il primo blocco server che corrisponde a localhost e ascolta l’indirizzo IP 127.0.0.1 e commentare tutte le sue istruzioni in modo che assomiglino allo screenshot sottostante.

Disable Basic HTTP Configuration

Non chiudere ancora il file e spostarsi in fondo e aggiungere l’affermazione seguente prima delle ultime parentesi graffe di chiusura “ } “.

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

8.Successivamente creare le directory sites-enabled e sites-available (per gli Host virtuali non utilizzati) di Nginx, insieme ai file di configurazione per localhost sui protocolli HTTP e HTTPS.

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

Creare il seguente file di configurazione per localhost.

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

Aggiungere il seguente contenuto al file.

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

Per localhost con SSL creare il seguente file di configurazione.

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

Aggiungere il seguente contenuto al file.

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.È ora il momento di creare due script su un percorso eseguibile di sistema (variabile shell $PATH) che fungono da comandi per attivare o disattivare gli Host virtuali di Nginx.

Creare il primo script Bash chiamato n2ensite che abiliterà i file di configurazione degli Host virtuali creando un link simbolico tra gli hosts specificati in sites-available e sites-enabled.

# nano /usr/local/bin/n2eniste

Aggiungere il seguente contenuto al file.

#!/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. Quindi crea il secondo script chiamato n2dissite, che eliminerà gli Host Virtuali attivi specificati dal percorso Nginx sites-enabled con il seguente contenuto.

# nano /usr/local/bin/n2dissite

Aggiungi il seguente contenuto.

#!/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. Dopo aver finito di modificare gli script Bash, aggiungi i permessi di esecuzione e attiva gli Host Virtuali localhost: usa il nome del file di configurazione dell’Host Virtuali senza estensione .conf, quindi riavvia i servizi Nginx e PHP-FPM per applicare le modifiche.

# 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. Per testare le configurazioni, crea un file di informazioni PHP nel percorso radice predefinito localhost per i file web (/var/www/localhost/htdocs) e reindirizza il tuo browser su https://localhost/info.php o http://localhost/info.php.

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

Utilizzando i file di configurazione degli Host Virtuali localhost come modelli e Nginx n2enmod e n2dismod puoi ora aggiungere facilmente quante più siti web desideri, ma assicurati di avere puntatori DNS validi per un server web rivolto a Internet o utilizza voci localmente nel file hosts di sistema.

Passaggio 4: Installare MySQL/MariaDB + PhpMyAdmin

Per installare il database MySQL e l’interfaccia Web PhpMyAdmin per MySQL, utilizza la stessa procedura presentata in Installare LAMP su Gentoo.

13. In alternativa, se desideri utilizzare MariaDB, sostituto di MySQL, utilizza i seguenti comandi per ottenere i flag USE e installalo.

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

Se riscontri un conflitto di pacchetti con MySQL, aggiungi le seguenti righe a 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. Dopo l’installazione del database MySQL avvia il servizio e assicurati di proteggerlo usando mysql_secure_installation (cambia la password di root, disabilita il login di root al di fuori di localhost, rimuovi l’utente anonimo/il database di test).

# service mysql start
# mysql_secure_installation

15. Accedi al database MySQL usando il comando mysql -u root -p per testarne la funzionalità e poi esci usando il comando exit.

# mysql -u root -p

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

16. Se non ti trovi bene con la riga di comando di MySQL, installa l’interfaccia web PhpMyAdmin eseguendo i seguenti comandi.

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

17. Dopo aver completato l’installazione di PhpMyAdmin, crea un file di configurazione basato sul file di configurazione di esempio, cambia la passphrase di blowfish_secret con una stringa casuale, quindi crea un collegamento simbolico da /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ alla directory radice del documento di Host Virtual a cui desideri accedere per l’interfaccia web di 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. Per accedere al database MySQL tramite l’interfaccia web di PhpMyAdmin, apri un browser e utilizza il seguente indirizzo URL: https://localhost/phpmyadmin.

Verify PhpMyAdmin Login

19. L’ultimo passaggio è abilitare i servizi a livello di sistema, in modo che si avvii automaticamente dopo il riavvio.

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

Ora abbiamo un ambiente minimo configurato per l’hosting web, e se utilizzi solo pagine generate dinamicamente con HTML, JavaScript e PHP e non hai bisogno di siti web SSL, la configurazione sopra dovrebbe essere sufficiente per te.

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