GNU/Linux >> Linux Esercitazione >  >> Debian

Configura Nginx + php-FPM + apc + MariaDB su Debian 7 – Il server LEMP perfetto

Server web Debian

Debian è un'ottima scelta per la configurazione di server web Linux. Secondo le statistiche attuali, è il sistema operativo server più popolare seguito da vicino da centos.

Sono un grande fan dei comandi apt/dpkg/gdebi, che semplificano l'installazione e l'aggiornamento dei pacchetti sul sistema.

Per configurare un server web php completo e funzionale, è necessario installare un paio di cose extra che includono un server web e un database. In questo post configureremo nginx, php, php-fpm, apc e MariaDB.

Nginx è un moderno web server, progettato per gestire grandi quantità di traffico utilizzando la minor quantità di risorse in termini di RAM e CPU.

Prima di nginx il server web tradizionale utilizzato su Internet era Apache. Tuttavia, con l'aumento della popolazione di Internet, è cresciuta la necessità di un server web più veloce ed efficiente.

Nginx contro Apache

Apache in base alla progettazione è molto ingombrante e ha tonnellate di funzionalità, la maggior parte delle quali non sono necessarie per i siti Web tipici. Probabilmente è stato progettato per soddisfare le esigenze di tutti, ma questo ha finito per renderlo un server web grande e pesante con funzionalità per lo più inutilizzate.

Nginx d'altra parte è un server web molto elegante e veloce che si concentra interamente su velocità, scalabilità ed efficienza.

I dati tecnici su come farlo sono ampi e oltre lo scopo di questo post. Forse potremmo dare un'occhiata più tardi. Solo per tua informazione questo sito web funziona su nginx.

Ora, senza ulteriori discussioni, mettiamoci al lavoro.

1. Installa Nginx su Debian

Il pacchetto nginx è proprio lì nei repository debian, quindi non devi cercare da nessun'altra parte. Avvia apt-get e installalo.

# apt-get install nginx

Ora avvia il server nginx.

# servizio nginx startStarting nginx:nginx.

Ora accedi al server nginx dal browser aprendo l'URL

http://localhost/

e dovresti ricevere il messaggio di benvenuto

Benvenuto su nginx!

Note importanti

Ci sono alcune cose che dovresti memorizzare per gestire meglio il tuo server nginx. I file di configurazione di nginx si trovano nella seguente posizione

/etc/nginx/
[email protected]:/etc/nginx# lsconf.d koi-win naxsi.rules scgi_params uwsgi_paramsfastcgi_params mime.types nginx.conf siti disponibili win-utfkoi-utf naxsi_core.rules siti proxy_params abilitati

Non modificheremo direttamente il file nginx.conf. Invece creiamo un file di configurazione separato per ogni vhost/sito e lo salviamo nelle seguenti directory.

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

Questo è simile ad apache. La directory sites-enabled contiene le configurazioni per i vhost che devono essere abilitati. Contiene collegamenti simbolici ai file di configurazione corrispondenti nella directory dei siti disponibili.

Configura un host virtuale

Ora che abbiamo installato nginx, è il momento di configurare un host virtuale. Questo è ciò che faresti su un vero server web per configurare il tuo sito.

All'interno di /etc/nginx/sites-available vedresti un file chiamato default. È un file modello per creare i propri file di configurazione. Copialo e assegnagli un nome sul tuo sito.

# cp default [email protected]:/etc/nginx/sites-available# lsbinarytides.com default

Scegliamo di nominare i file di configurazione con il nome del sito, in modo che sia più facile da ricordare e mantenere.
Ora apri binarytides.com e modifica le cose secondo le tue necessità.
Vedresti un server blocco simile a questo

server { #ascolta 80; ## ascolta ipv4; questa riga è predefinita e implica #listen [::]:80 default_server ipv6only=on; ## ascolta la radice ipv6 /usr/share/nginx/www; indice indice.html indice.htm; # Rendi il sito accessibile da http://localhost/ server_name localhost;

La prima cosa da configurare qui è il nome_server. Assegna un nome al tuo sito. Ad esempio

nome_server binarytides.comornome_server binarytides.com www.binarytides.com

Quando qualcuno apre binarytides.com nel suo browser, l'intestazione http contiene questo nome host che nginx raccoglierebbe e cercherà un blocco di server corrispondente. Quando viene trovato un blocco server corrispondente, utilizzerà la configurazione di quel particolare blocco server.

Un'altra cosa da configurare è la directory principale web per questo sito/vhost. Tieni presente che per impostazione predefinita è /usr/share/nginx/www che potresti voler cambiare in qualcos'altro.

La convenzione generale consiste nell'avere una directory separata per ogni vhost. Ad esempio

/usr/share/nginx/www/binarytides.com//usr/share/nginx/www/google.com/

Quindi crea una directory appropriata e punta l'impostazione radice nel file di configurazione nella directory.

...root /usr/share/nginx/www/binarytides.com;...

Dopo aver apportato queste modifiche, salva il file di configurazione e crea un collegamento simbolico alla directory /etc/nginx/sites-enabled.

[email protected]:/etc/nginx/sites-available# lsbinarytides.com [email protected]:/etc/nginx/sites-available# cd [email protected]:/etc/nginx# cd sites-enabled/[email protected]:/etc/nginx/sites-enabled# ln -s ../sites-available/[email protected]:/etc/nginx/sites-enabled# lsbinarytides.com [email protected]:/etc/nginx/sites-enabled#

Ora prova la tua nuova configurazione

# nginx -tnginx:[avviso] nome del server in conflitto "localhost" su 0.0.0.0:80, ignorenginx:la sintassi del file di configurazione /etc/nginx/nginx.conf è oknginx:file di configurazione /etc/nginx/nginx. conf test è riuscito

L'ultima riga dell'output deve dire riuscita, altrimenti verrebbe visualizzato un errore. Potrebbe mostrare alcuni avvisi che possono essere corretti in seguito.

Infine riavvia nginx per rendere effettiva la nuova configurazione

# servizio nginx restartRestarting nginx:nginx:[warn] nome del server in conflitto "localhost" su 0.0.0.0:80, [email protected]:/etc/nginx/sites-enabled#

Quindi la nuova configurazione è entrata in vigore. Ora crea un nuovo file index.html nella nuova radice web di questo host virtuale e aprilo dal browser e dovrebbe funzionare.

2. Installa php e php-fpm

La prossima cosa da installare è l'interprete php e php-fpm. Php-FPM è un gestore di processi fastcgi dedicato per php che può interfacciarsi o connettersi con qualsiasi server web compatibile e gestire i processi php per elaborare le richieste php.

Nginx <==comunica ==> Php-FPM <==gestisce ==> processo figlio php

Installa prima i pacchetti necessari.

# apt-get install php5 php5-fpm

Installerà automaticamente le dipendenze necessarie. Puoi installare il pacchetto php5-cli anche se hai bisogno del comando php per eseguire gli script php.

Php-fpm viene eseguito come un server separato e nginx comunica con esso tramite un socket. Quindi l'esecuzione di php è totalmente al di fuori del server. Inoltre, poiché fpm mantiene persistente il processo php, supporta completamente APC.

Ora individua i file di configurazione di php fpm. I file si trovano in

/etc/php5/fpm/

Un pool è un insieme di processi php in esecuzione con lo stesso utente/gruppo. Quindi, se vuoi che i file php di ciascun sito vengano eseguiti con un'autorizzazione utente separata, devi creare pool separati di fpm. Per semplicità mostriamo solo un singolo pool qui.

I file di configurazione del pool si trovano all'interno della directory pool.d. Naviga in

[email protected]:/etc/php5/fpm/pool.d# lswww.conf

Apri il file www.conf che è di nuovo un modello da utilizzare e crea file di configurazione separati per ogni pool.
Sembra qualcosa del genere

; Avvia un nuovo pool chiamato 'www'.; la variabile $pool può essere utilizzata in qualsiasi direttiva e sarà sostituita da; nome della piscina ("www" qui)[www]; Per prefisso del pool; Si applica solo alle seguenti direttive:; - 'slowlog'; - 'ascolta' (unixsocket); - 'chroot'; - 'chdir'; - 'php_values'; - 'php_admin_values'; Quando non è impostato, si applica invece il prefisso globale (o /usr).; Nota:questa direttiva può anche essere relativa al prefisso globale.; Valore predefinito:nessuno;prefisso =/percorso/a/pool/$pool; Utente/gruppo di processi Unix; Nota:l'utente è obbligatorio. Se il gruppo non è impostato, il gruppo dell'utente predefinito; verrà utilizzato.utente =www-datagroup =www-data; L'indirizzo su cui accettare le richieste FastCGI.; Le sintassi valide sono:; 'ip.add.re.ss:port' - per ascoltare su un socket TCP un indirizzo specifico; un porto specifico;; 'port' - per ascoltare su un socket TCP tutti gli indirizzi su a; porto specifico;; '/percorso/a/unix/socket' - per ascoltare su un socket unix.; Nota:questo valore è obbligatorio.listen =/var/run/php5-fpm.sock; Imposta listen(2) backlog.; Valore predefinito:128 (-1 su FreeBSD e OpenBSD);listen.backlog =128

La cosa sopra è composta principalmente da commenti e le 4 righe più importanti sono

1. [www] questo è il nome della piscina2. user =www-data questo è l'utente con i cui permessi verrebbe eseguito lo script php3. gruppo =www-dataquesto è il gruppo4. listen =/var/run/php5-fpm.sockthis è il socket per comunicare con questo pool. Questo socket deve essere dato a nginx affinché nginx possa parlare con fpm

Collega fpm con nginx

Non cambieremo molto qui. Basta annotare il percorso della presa. Dobbiamo inserirlo nel file di configurazione di nginx. Torna alla configurazione di nginx e aprila di nuovo.

Contiene una sezione per la configurazione di php fpm che assomiglia a questa

# passa gli script PHP al server FastCGI in ascolto su 127.0.0.1:9000##location ~ \.php$ {# fastcgi_split_path_info ^(.+\.php)(/.+)$;# # NOTA:dovresti avere "cgi.fix_pathinfo =0;" in php.ini## # Solo con php5-cgi:# fastcgi_pass 127.0.0.1:9000;# # Con php5-fpm:# fastcgi_pass unix:/var/run/php5-fpm.sock;# fastcgi_index index.php;# includi fastcgi_params;#}

Decommentalo e fallo sembrare così

posizione ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$;# # NOTA:dovresti avere "cgi.fix_pathinfo =0;" in php.ini# # Solo con php5-cgi:# fastcgi_pass 127.0.0.1:9000; # Con php5-fpm:fastcgi_pass unix:/var/run/php5-fpm.sock; indice_fastcgi index.php; includi fastcgi_params;}

Verifica PHP

Ora metti un file nella web root con la chiamata phpinfo.

<?phpphpinfo();

E quindi apri il file nel browser e il blocco delle informazioni php dovrebbe apparire, dicendo che php è configurato e funziona correttamente.

Un'altra cosa che puoi fare è aggiungere index.php all'elenco dei file di indice. In modo che quando si accede a una directory, se non viene specificato alcun file, viene chiamato index.php.

root /usr/share/nginx/www/binarytides.com;index index.html index.htm index.php;

Configura apc - cache php alternativa

APC è un ottimo modo per velocizzare l'esecuzione di script php. Apc compila il codice php e mantiene l'opcode in memoria e lo utilizza la prossima volta senza compilare nuovamente lo stesso codice php dal file. Questo accelera drasticamente l'esecuzione. Oltre alla cache del codice operativo, apc offre anche una cache utente per archiviare in memoria i dati grezzi per l'applicazione php.

Php a partire dalla versione 5.5 ha una nuova funzionalità chiamata OPcache che fa la stessa cosa di apc opcode cache, deprecando così apc.

Configurare apc è molto semplice e veloce. Basta installare il pacchetto apc per php

# apt-get install php-apc

Quindi riavvia php fpm

# riavvio del servizio php5-fpm

Ora controlla di nuovo la pagina phpinfo e dovrebbe avere anche i dettagli apc. Il file di configurazione apc si trova in

/etc/php5/fpm/conf.d/20-apc.ini

La configurazione può essere leggermente modificata per prestazioni ottimali per le tue esigenze. Ecco il tipo di configurazione che uso

extension=apc.so apc.enabled=1apc.shm_size=128Mapc.ttl=3600apc.user_ttl=7200apc.gc_ttl=3600apc.max_file_size=1M

Controllare l'elenco dei parametri di configurazione di apc per ulteriori informazioni.

3. Installa MariaDB su Debian

Ora arriva l'ultimo e ultimo componente dello stack LEMP. Questo è il database MariaDB e non mysql. Bene, ormai dovresti sapere che MySQL è nelle mani di Oracle e non più un'appartenenza alla comunità. Quindi i principali corpi hanno iniziato a passare a mariadb. La cosa buona è che mariadb è binario compatibile con mysql con molte funzionalità aggiuntive. Quindi, se stai già utilizzando mysql per le tue applicazioni php, passare a mariadb sarebbe assolutamente senza problemi.

MariaDB non è presente in debian repository. Per ottenere i repository visita la seguente pagina

https://downloads.mariadb.org/mariadb/repositories/

Seleziona Debian come distribuzione, Wheezy come versione e versione 10.0 di mariadb. Quindi seleziona uno specchio sul lato destro. Ora scorri verso il basso fino alla fine della pagina per trovare i dettagli del repository.

Ecco i comandi che ho ricevuto

sudo apt-get install python-software-propertiessudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943dbsudo add-apt-repository 'deb http://mirrors.fe.up.pt/ pub/mariadb/repo/10.0/debian wheezy main'

Ora aggiorna la cache apt e installa i pacchetti mariadb

sudo apt-get aggiornamentiudo apt-get install mariadb-server mariadb-client

Durante l'installazione mariadb chiederebbe la password dell'utente root. Inserisci la password e assicurati di non dimenticarla.

Al termine dell'installazione, controlla la tua versione di mariadb

# mysql -Vmysql Ver 15.1 Distrib 10.0.3-MariaDB, per debian-linux-gnu (x86_64) usando readline 5.1

Nota che il nome del comando è lo stesso di mysql. Ma il nome mariadb è presente nelle informazioni sulla versione.

Il server web è pronto

Quindi ora il server web LEMP è pronto per l'uso. Potresti voler installare un paio di extra extra come phpmyadmin per gestire meglio il tuo database. Phpmyadmin è presente nel repository debian, quindi installalo direttamente da lì.

Hai qualche domanda? Sentiti libero di commentare qui sotto.


Debian
  1. Come configurare un server LEMP su Debian 10 Buster

  2. Aggiorna ISPConfig Perfect Server da Debian 10 a Debian 11

  3. La configurazione perfetta - Debian Sarge (3.1)

  4. Come installare LEMP (Linux, Nginx, MySQL e PHP-FPM) su un VPS Debian 8

  5. Come installare il social network Elgg su Debian 9

Come installare Nginx, MariaDB, PHP (LEMP Stack) su Debian 11

Come installare lo stack LEMP su Debian 10 Buster Server/Desktop

Come installare Nginx con PHP-FPM su Debian 11

Il server perfetto - Debian Squeeze (Debian 6.0) con BIND, Dovecot e Nginx [ISPConfig 3]

Il server perfetto - Debian Wheezy (nginx, BIND, Dovecot, ISPConfig 3)

Come configurare la cache Nginx sul server LEMP