Questa guida ti mostrerà come installare e configurare correttamente uno stack LAMP "alternativo" su Debian 8 usando NGINX, PHP Fast Process Manager e MariaDB.
Nginx
NGINX è un "proxy inverso prima, secondo il web server". È un'alternativa popolare e in crescita ad Apache, offrendo maggiore flessibilità e prestazioni migliori in molti casi. In questo tutorial, lo useremo come nostro web server.
Avvia il tuo client SSH preferito e accedi al tuo server. Per gli utenti Windows, "PuTTY" è un client SSH gratuito e leggero. Gli utenti Linux e Mac possono utilizzare il terminale incluso per impostazione predefinita con il proprio sistema operativo. Per questa esercitazione, assumeremo che tu abbia effettuato l'accesso al tuo server come utente "root".
Per cominciare, assicuriamoci che tutto sia aggiornato. Digitare quanto segue per verificare e quindi installare gli aggiornamenti.
apt-get update && apt-get upgrade
Modificheremo i nostri file di configurazione in vim. Vim non è installato di default, quindi installiamolo!
apt-get install vim
Ora è il momento di installare NGINX. Vorremmo installare l'ultima versione di NGINX dal repository Debian ufficiale di NGINX.
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
echo 'deb http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
echo 'deb-src http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
apt-get update && apt-get install nginx
Ora dobbiamo modificare un po 'la configurazione di NGINX. Passare alla directory di configurazione.
cd /etc/nginx
Una breve lezione di vim
Utilizzare i tasti freccia per navigare nel documento di testo. Per iniziare a fare le modifiche, premi il pulsante "Inserisci" sulla tastiera. Se la tua tastiera non ha un pulsante di inserimento, premi il tasto "i". Verso il fondo di Vim noterai che ora dice "INSERISCI". La modalità Inserisci ti consente di eliminare tramite backspace o inserire nuovi caratteri digitandoli.
Apriamo il nostro nginx.confe diamo un'occhiata in giro:
vi nginx.conf
Cambiamo l'utente predefinito, controlliamo il numero di processi di lavoro e disattiviamo il registro di accesso.
Le direttive "user" e "worker_processes" si trovano nella parte superiore. Prova i valori seguenti:
Tieni presente che dovrai impostare "worker_processes" sul numero di core della CPU disponibili sul tuo server. In questo esempio, abbiamo 1, che è l'impostazione predefinita NGINX.
user www-data;
worker_processes 1;
Vorremmo anche disabilitare il registro di accesso, al fine di migliorare le prestazioni di I / O. Navigare verso il basso con i tasti freccia fino a trovare "access_log". Modificalo come segue:
access_log off;
Infine, imposteremo "client_max_body_size" in modo che corrisponda ad alcune modifiche apportate a PHP in seguito. Salviamo il problema e facciamolo ora. Aggiungi appena sotto "access_log":
client_max_body_size 12m;
Al termine della modifica, premi "Esc" sulla tastiera. Vim non dirà più "INSERT" verso la fine del file.
Per salvare le modifiche e uscire da vim, premere la seguente sequenza di tasti:
SHIFT :(colon)
wq
Press "Enter"
Il precedente vim kung fu scriverà le tue modifiche su disco e uscirà da vim, riportandoti nella shell bash.
Ora, dobbiamo fare una configurazione specifica del sito per il nostro esempio! Elimineremo anche le altre configurazioni di esempio. Prova quanto segue:
cd conf.d
rm example_ssl.conf default.conf
vi my_site.conf
Faremo una breve e semplice www.confbase liberamente sulla configurazione NGINX predefinita, ma con alcune modifiche. Premi Inserisci e puoi copiare / incollare l'esempio seguente.
Non dimenticare di modificare la direttiva "root" per puntare alla directory principale del tuo sito Web e "nome_server" per corrispondere al tuo dominio.
server {
listen 80;
root /path/to/your/website;
index index.php index.html index.htm;
server_name mydomainname.com www.mydomainname.com;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
Ora abbiamo finito con la sezione di configurazione NGINX di questo tutorial. Riavveremo NGINX tra poco, subito dopo l'installazione di PHP.
PHP-FPM
PHP-FPM è PHP Fast Process Manager. È necessario quando si utilizza NGINX, perché a differenza di Apache, NGINX non esegue PHP come modulo. Ciò è stato fatto per ridurre il footprint di memoria di NGINX. Ricordi quella parte sul fatto che NGINX è innanzitutto un proxy inverso? Ecco dove entra in gioco; Le richieste PHP inviate a NGINX vengono inviate a PHP-FPM per eseguire il sollevamento di carichi pesanti.
Installiamo PHP-FPM.
apt-get install php5-fpm php5-mysqlnd
Nota che, a seconda di ciò che richiedono i tuoi script PHP, potresti dover installare altri moduli PHP non inclusi di default. Quelli popolari sono php5-gde php5-mcrypt. Puoi installarli con il seguente comando.
apt-get install php5-module_name_here
Ora che PHP-FPM è installato, desideriamo apportare alcune modifiche rapide per migliorare la sicurezza e la funzionalità.
cd /etc/php5/fpm
vi php.ini
Tempo per un'altra rapida lezione di vim! Il php.inifile è assolutamente enorme. La ricerca di alcuni valori chiave richiederà tutto il giorno. Quindi poiché sappiamo cosa stiamo cercando, cercheremo. Digita quanto segue:
/upload_max_filesize
Questo, per impostazione predefinita, è impostato su 2 megabyte. Se vuoi consentire agli utenti di caricare file nelle tue applicazioni PHP superiori a 2 megabyte, dovrai cambiarlo. 10M è probabilmente una scommessa sicura per ora, ma sono accettabili anche valori più alti. Questa impostazione varia tra le configurazioni. Per motivi di tutorial:
upload_max_filesize = 10M
Un altro evidente difetto di sicurezza. Scorri un po 'più in basso o cerca. Dobbiamo impostare "allow_url_fopen" su "Off". Ciò impedirà a PHP di eseguire i file PHP ospitati in REMOTELY, altrimenti noto come RFI (Remote File Inclusion). Molti server vengono hackerati in questo modo.
allow_url_fopen = Off
E poiché abbiamo cambiato "upload_max_filesize", ora dobbiamo cambiare "post_max_size". Questo valore dovrebbe essere un po 'più grande di "upload_max_filesize", perché dobbiamo tenere conto del sovraccarico associato alle nostre richieste elaborate da PHP.
Cerchiamo ancora una volta con "/ post_max_size".
post_max_size = 12M
Nota che dovrai tornare alla tua configurazione NGINX e modificare "client_max_body_size" se decidi di utilizzare valori maggiori di questi esempi per le dimensioni del tuo file PHP.
Questo è tutto per ora. Assicurati di non essere in modalità modifica premendo "Esc". Salva ed esci da vim.
SHIFT :(colon)
wq
Press 'Enter'
La configurazione di PHP-FPM è completa.
MariaDB
Anche in un mondo che si sposta continuamente verso NoSQL o MongoDB, alcuni di noi trovano ancora più semplice attenersi a MySQL. Ciò è particolarmente vero per molte applicazioni web. Fortunatamente, ora esistono numerosi sostituti "drop-in" per Oracle MySQL. Debian 8 ora include il sempre popolare MariaDB. MariaDB è un fork di Oracle MySQL basato sulla versione 5.5. MariaDB, a tutti gli effetti, lo chiama MariaDB 10. È considerato un sostituto COMPLETO di Oracle MySQL. Pensa a come MySQL, senza il marchio Oracle e alcune nuove funzionalità.
apt-get install mariadb-server
IMPORTANTE: devi assolutamente, positivamente, scegliere una password di root sicura per MariaDB. Salvalo in un posto sicuro. Dovrai inserirlo due volte durante l'installazione di MariaDB.
Modifichiamo leggermente la configurazione di MariaDB. Disattiveremo l'ascolto di MariaDB tramite l'interfaccia di rete. Invece, come in precedenza con PHP-FPM, ci limiteremo a utilizzare un socket UNIX. La maggior parte delle applicazioni PHP dovrebbe supportare la connessione al server di database tramite un socket UNIX anziché l'interfaccia di loopback locale.
cd /etc/mysql
vi my.cnf
Cerca "bind-address = 127.0.0.1". Commenta quella linea. Sopra o sotto, aggiungi "skip-networking".
#bind-address = 127.0.0.1
skip-networking
Abbiamo finito con MariaDB! Alla fine, potresti voler modificare la configurazione di MariaDB a seconda se utilizzerai principalmente i motori di archiviazione MyISAM o InnoDB, ma anche il numero di core CPU e RAM disponibili per il tuo server. Le impostazioni predefinite ci faranno funzionare nel frattempo.
Riavviamo ciascuno dei servizi per i quali sono stati modificati i file di configurazione in questo tutorial.
systemctl restart nginx.service
systemctl restart php5-fpm.service
systemctl restart mysql.service
Questo è tutto - abbiamo finito. A questo punto, hai un server LNMP (LEMP) perfettamente funzionante online!
Questa guida doveva servire come regola generale per iniziare con i servizi di cui sopra con modifiche minime. Per ulteriori informazioni, leggere la documentazione per i pacchetti di cui sopra. Mentre questo setup di esempio dovrebbe funzionare bene "out of the box", le regolazioni possono, e molto probabilmente dovranno essere fatte per soddisfare meglio le tue esigenze.
Aree raccomandate per la ricerca:
- Utilizzo e modifica del controllo cache di NGINX.
- Impostazioni del task manager PHP-FPM "statico", "dinamico" o "ondemand".
- Ottimizzazione delle prestazioni di MariaDB per ottenere il massimo dal tuo server di database.