GNU/Linux >> Linux Esercitazione >  >> Debian

Installazione di Nginx con PHP (come PHP-FPM) e MariaDB (LEMP) su Debian 8

Questo tutorial ti mostrerà l'installazione del server web Nginx su Debian 8. Nginx (pronunciato "engine x") è un server HTTP gratuito, open source e ad alte prestazioni. Nginx è noto per la sua stabilità, il ricco set di funzionalità, la configurazione semplice e il basso consumo di risorse. Questo tutorial mostra come installare Nginx con il supporto PHP (tramite PHP-FPM) e MariaDB come sostituto del drop-in MySQL. Questa configurazione viene spesso definita LEMP =L inux + nginx (pronunciato "e motore x") + M ySQL + P HP) .

Nota preliminare

In questo tutorial, utilizzo il nome host server1.example.com con l'indirizzo IP 192.168.1.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato. Dovresti avere un server Debian 8, userò il server minimo Debian come sistema di base per questo tutorial.

Aggiornamento del sistema

Si consiglia di aggiornare gli elenchi dei pacchetti e di installare eventuali aggiornamenti in sospeso prima di iniziare con l'installazione di Nginx. Esegui i seguenti comandi per installare eventuali aggiornamenti in sospeso.

apt-get update
apt-get upgrade -y

Userò l'editor nano in seguito per modificare i file di configurazione. Nano può essere installato con questo comando:

apt-get -y install nano 

Installazione di MariaDB (come sostituto del drop-in MySQL)

Per installare MariaDB, eseguiamo:

apt-get -y install mariadb-server mariadb-client

Ti verrà chiesto di fornire una password per l'utente root di MariaDB:questa password è valida per l'utente [email protected] e [email protected], quindi non è necessario specificare manualmente una password root MariaDB in seguito:

Nuova password per l'utente "root" di MariaDB:<-- yourrootsqlpassword
Ripeti la password per l'utente "root" di MariaDB:<-- yourrootsqlpassword

 

Installazione di Nginx

Nginx è disponibile come pacchetto per Debian Jessie che possiamo installare come segue:

apt-get -y install nginx

Avvia Nginx in seguito:

systemctl start nginx.service

Digita l'indirizzo IP o il nome host del tuo server web in un browser (ad es. http://192.168.1.100) e dovresti vedere la seguente pagina:

La radice del documento nginx predefinita su Debian 8 è /var/www/html.

Installazione di PHP

Possiamo far funzionare PHP5 in nginx tramite PHP-FPM (PHP-FPM (FastCGI Process Manager) è un'implementazione PHP FastCGI alternativa con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, soprattutto quelli più frequentati) che installiamo come segue:

apt-get -y install php5-fpm

PHP-FPM è un processo demone (con il file dell'unità systemd php5-fpm.service) che esegue un server FastCGI sul socket /var/run/php5-fpm.sock.

Configurazione di nginx

La configurazione di nginx è in /etc/nginx/nginx.conf che apriamo ora:

nano /etc/nginx/nginx.conf

La configurazione è di facile comprensione (puoi saperne di più qui:http://wiki.nginx.org/NginxFullExample e qui:http://wiki.nginx.org/NginxFullExample2)

Per prima cosa imposta keepalive_timeout su un valore ragionevole come 2 secondi:

[...]
    keepalive_timeout   2;
[...]

Gli host virtuali sono definiti nei contenitori del server {}. Il vhost predefinito è definito nel file /etc/nginx/sites-available/default - modifichiamolo come segue:

nano /etc/nginx/sites-available/default
[...]
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]

nome del server _; lo rende un vhost catchall predefinito (ovviamente puoi anche specificare un nome host qui come www.example.com).

Ho aggiunto index.php alla riga dell'indice. radice /var/www/html; significa che la radice del documento è la directory /var/www/html.

La parte importante per PHP è la stanza posizione ~ \.php$ {}. Decommentalo come mostrato sopra per abilitarlo.

Ora salva il file e ricarica Nginx:

systemctl reload nginx.service

Quindi apri /etc/php5/fpm/php.ini...

nano /etc/php5/fpm/php.ini

... e imposta cgi.fix_pathinfo=0:

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

Ricarica PHP-FPM:

systemctl reload php5-fpm.service

Ora crea il seguente file PHP nella radice del documento /var/www/html/:

nano /var/www/html/info.php
<?php
phpinfo();
?>

Ora chiamiamo quel file in un browser (es. http://192.168.1.100/info.php):

Come vedi, PHP5 funziona e funziona tramite FPM/FastCGI, come mostrato nella riga dell'API del server. Se scorri più in basso, vedrai tutti i moduli che sono già abilitati in PHP5. MySQL non è elencato lì, il che significa che non abbiamo ancora il supporto MariaDB / MySQL in PHP.

Ottenere il supporto per MySQL/MariaDB in PHP

Per ottenere il supporto MySQL in PHP, possiamo installare il pacchetto php5-mysqlnd. È una buona idea installare alcuni altri moduli PHP e potresti averne bisogno per le tue applicazioni. Puoi cercare i moduli PHP disponibili in questo modo:

apt-cache search php5

Scegli quelli che ti servono e installali in questo modo:

apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

APCu è un cacher di codice operativo PHP gratuito e aperto per la memorizzazione nella cache e l'ottimizzazione del codice intermedio PHP che estende l'opcache PHP. Sostituisce la cache APC. ed è simile ad altri cacher di codice operativo PHP, come eAccelerator e Xcache. Si consiglia vivamente di averne uno installato per velocizzare la tua pagina PHP.

L'APCu può essere installato come segue:

apt-get install php5-apcu

Ora ricarica PHP-FPM:

systemctl reload php5-fpm.service

Ora ricarica http://192.168.1.100/info.php nel tuo browser e scorri di nuovo verso il basso fino alla sezione dei moduli. Ora dovresti trovare molti nuovi moduli lì, incluso il modulo MySQL:

Fare in modo che PHP-FPM utilizzi una connessione TCP (opzionale)

Per impostazione predefinita, PHP-FPM è in ascolto sul socket /var/run/php5-fpm.sock. È anche possibile fare in modo che PHP-FPM utilizzi una connessione TCP. Per fare ciò, apri /etc/php5/fpm/pool.d/www.conf...

nano /etc/php5/fpm/pool.d/www.conf

... e fai in modo che la linea di ascolto appaia come segue:

[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]

Ciò renderà PHP-FPM in ascolto sulla porta 9000 sull'IP 127.0.0.1 (localhost). Assicurati di utilizzare una porta che non è in uso sul tuo sistema.

Quindi ricarica PHP-FPM:

systemctl reload php5-fpm.service

Quindi passa attraverso la tua configurazione Nginx e tutti i tuoi vhost e cambia la riga fastcgi_pass unix:/var/run/php5-fpm.sock; a fastcgi_pass 127.0.0.1:9000;, ad es. così:

nano /etc/nginx/sites-available/default
[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
} [...]

Infine, ricarica Nginx:

systemctl reload nginx.service

Immagine della macchina virtuale

Questo tutorial è disponibile come macchina virtuale pronta per l'uso in formato OVA / OVF per gli abbonati Howtoforge. Il formato VM è compatibile con VMWare e Virtualbox e probabilmente alcuni altri strumenti che possono importare questo formato. Puoi trovare il link per il download nel menu a destra in alto. Fare clic sul nome del file per avviare il download.

I dettagli di accesso della VM sono:

Accesso SSH

Nome utente:root
Password:howtoforge

Accesso a MariaDB

Nome utente:root
Password:howtoforge

Si prega di modificare le password dopo il primo avvio.

La VM è configurata per l'IP statico 192.168.1.100, l'IP può essere modificato nel file /etc/network/interfaces.

  • nginx:http://nginx.net/
  • Wiki di nginx:http://wiki.codemongers.com/Main
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MariaDB: https://mariadb.org/
  • Debian:http://www.debian.org/

Debian
  1. Installazione di Nginx con PHP e MariaDB (come sostituto di MySQL) - LEMP -su Ubuntu 15.10 (Wiley Werewolf)

  2. Come installare Phorum con Nginx su Debian 9

  3. Come installare Etherpad con Nginx e SSL su Debian 11

  4. Come installare e configurare PHP e Nginx (LEMP) su Debian 11

  5. Installa Pagekit su un VPS Debian 7 con Nginx, PHP-FPM e MariaDB

Come installare Nginx, MariaDB, PHP (stack LEMP) su Debian 9

Installa Lighttpd con PHP FPM e MariaDB (LLMP) su Debian 9

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

Installa Nginx con PHP e MySQL (LEMP) più SSL su Debian 10

Come installare Nginx con PHP-FPM su Debian 10

Come installare phpBB con LEMP (Nginx, MariaDB e PHP) su Debian 11 Bullseye