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.

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
- Installazione di Gentoo con un Profilo protetto per un server esposto su Internet – Guida all’installazione di Gentoo.
- 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

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

Quindi installare Nginx con il seguente comando.
# emerge --ask nginx

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

3. Dopo che Portage ha finito di emergere Nginx, avviare il demone http e verificarlo dirigendo il tuo browser su http://localhost.

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

# 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. 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.

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;

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 } }

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; } }

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

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

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

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

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

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;

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

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

# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ /var/www/localhost/htdocs/phpmyadmin

18. Per accedere al database MySQL tramite l’interfaccia web di PhpMyAdmin, apri un browser e utilizza il seguente indirizzo URL: https://localhost/phpmyadmin.

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

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/