Ricerca nel sito web

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


Gentoo è una delle distribuzioni Linux più veloci grazie al suo orientamento alla creazione da sorgenti e fornisce tramite il suo programma di gestione software – Portage – alcuni strumenti necessari per costruire una piattaforma completa per sviluppatori web che agisce e funziona molto velocemente e, inoltre, ha un alto grado di personalizzazione.

Questo argomento ti guiderà attraverso un processo di installazione passo passo per creare una piattaforma di ambiente Web completa con LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) e con l'aiuto su flag USE forniti da Portage Package Management, che offre una serie di funzionalità del pacchetto durante il processo di compilazione – moduli o impostazioni necessarie per una piattaforma web, modificheranno notevolmente le configurazioni del server.

Requisiti

  1. Installazione Gentoo con un profilo rinforzato per un server rivolto a Internet – Guida all'installazione di Gentoo.
  2. Rete configurata con un indirizzo IP statico.

Passaggio 1: installare il server Web Nginx

1. Prima di tentare di procedere con l'installazione di Nginx assicurati che la tua scheda NIC sia stata 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. Al termine del processo di aggiornamento, procedere con l'installazione di Nginx scegliendo le impostazioni e i moduli preferiti eseguendo i flag USE Nginx nel file make.conf di Portage . Per prima cosa elenca i moduli di installazione predefiniti di Nginx eseguendo il comando seguente.

emerge -pv nginx

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

equery uses nginx

Quindi installa Nginx con il seguente comando.

emerge --ask nginx

Se hai bisogno di moduli aggiuntivi (WebDAV, fancyindex, GeoIP, ecc.) oltre a quelli predefiniti, con cui Nginx verrà compilato, aggiungili tutti su un'unica riga nel file make.conf di Portage con NGINX_MODULES_HTTP direttiva, quindi ricompilare Nginx con 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 terminato l'emergere di Nginx, avviare il demone http e verificarlo indirizzando il browser a http://localhost.

Passaggio 2: installa PHP

4. Per utilizzare il linguaggio di programmazione web dinamico PHP con il server Nginx, installa PHP-FastCGI Process Manager (FPM) aggiungendo fpm e altre importanti estensioni PHP sui flag USE di Portage e assicurati di rimuovere l'estensione 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. Apri il file di configurazione php-fpm e apporta le seguenti modifiche.

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

Trova e rimuovi il commento dalle seguenti direttive in modo che abbiano questo aspetto.

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 PHP-FPM è stato modificato, modifica le autorizzazioni del file di registro PHP-FPM e avvia 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, quindi è necessario apportare alcune modifiche ai file di configurazione di Nginx.

Passaggio 3: modifica le configurazioni Nginx

7. Il file di configurazione del modello predefinito di Nginx fornisce solo un socket HTTP di base solo per localhost. Per modificare questo comportamento e abilitare gli host virtuali, aprire il file nginx.conf situato nel percorso /etc/nginx/ ed effettuare le seguenti configurazioni.

nano /etc/nginx/nginx.conf

Individua il primo blocco server che corrisponde a localhost e ascolta l'indirizzo IP 127.0.0.1 e raccomanda che tutte le sue dichiarazioni appaiano come nello screenshot qui sotto.

Non chiudere ancora il file e spostati fino in fondo e aggiungi la seguente istruzione prima dell'ultima chiusura delle parentesi graffe “ } “.

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

8. Successivamente crea le directory Nginx sites-enabled e sites-available (per gli host virtuali non utilizzati) e i file di configurazione per localhost sui protocolli HTTP e HTTPS .

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

Crea la seguente configurazione di file per localhost.

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

Aggiungi il seguente contenuto del 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

Aggiungi il seguente contenuto del 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 del sistema (` variabile della shell PATH), che agiscono come comandi per attivare o disattivare gli host virtuali Nginx.

Crea il primo script Bash denominato n2ensite che abiliterà i file di configurazione degli host virtuali creando un collegamento simbolico tra gli host specificati da siti disponibili a siti abilitati.

nano /usr/local/bin/n2eniste

Aggiungi il seguente contenuto del 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 abilitato per i siti 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 terminato la modifica degli script Bash, aggiungi i permessi di esecuzione e attiva gli host virtuali localhost: utilizza il nome del file di configurazione dell'host virtuale 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 sul percorso root predefinito dell'host locale per i file web (/var/www/localhost/htdocs) e reindirizza il 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 ora puoi aggiungere facilmente tutti i siti Web che desideri, ma assicurati di disporre di puntatori DNS validi per Internet -server Web o utilizzare le voci localmente sul file host del sistema.

Passaggio 4: installa MySQL/MariaDB + PhpMyAdmin

Per installare il database MySQL e l'interfaccia Web PhpMyAdmin per MySQL utilizzare la stessa procedura presentata in Installazione di LAMP su Gentoo.

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

emerge -pv mariadb
emerge --ask mariadb

Nel caso in cui riscontri un conflitto tra 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 aver installato il database MySQL, avvia il servizio e proteggilo utilizzando mysql_secure_installation (cambia password root, disabilita l'accesso root all'esterno dell'host locale, rimuovi utente anonimo/database di test).

service mysql start
mysql_secure_installation

15. Accedi al database MySQL utilizzando il comando mysql -u root -p per testarne la funzionalità e lascialo con il comando exit.

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Se non sei molto bravo con la riga di comando MySQL. installare il frontend 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. Al termine dell'installazione di PhpMyAdmin, crea un file di configurazione basato sul file di configurazione di esempio, modifica la passphrase blowfish_secret con una stringa casuale, quindi crea un collegamento simbolico da /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ al percorso root del documento Host virtuali a cui desideri accedere all'interfaccia web 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 PhpMyAdmin, aprire un browser e utilizzare il seguente indirizzo URL https://localhost/phpmyadmin.

19. Il passaggio finale consiste nell'abilitare i servizi a livello di sistema per avviarli automaticamente dopo il riavvio.

rc-update add nginx default
rc-update add php-fpm default
rc-update add mysql default

Ora disponiamo di una configurazione dell'ambiente minima per l'hosting Web e se utilizzi solo pagine generate dinamicamente HTML, JavaScript e PHP e non hai bisogno di siti Web SSL, la configurazione sopra dovrebbe essere soddisfacente per te.