GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Utilizzo di PHP-FPM con Apache su Ubuntu 16.04

Questo tutorial mostra come installare un server web Apache su un server Ubuntu 16.04 con PHP 7 (tramite PHP-FPM) e supporto MySQL. PHP-FPM (FastCGI Process Manager) è un'implementazione PHP FastCGI alternativa con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, in particolare quelli più affollati.

1 Nota preliminare

In questo tutorial, userò 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.

Sto eseguendo tutti i passaggi di questo tutorial con i privilegi di root, quindi assicurati di aver effettuato l'accesso come root:

sudo su

2 Installazione di MySQL o MariaDB

Ubuntu fornisce MySQL e pacchetti MariaDB. MariaDB è un fork di MySQL fornito dallo sviluppatore MySQL originale Monty Widenius. Seguire il capitolo 2.1 o 2.2 per installare il server di database.

2.1 Installa MySQL 5.7

Innanzitutto, installiamo MySQL 5.7 in questo modo:

apt-get -y install mysql-server mysql-client

Ti verrà chiesto di fornire una password per l'utente root di MySQL:questa password è valida per l'utente [protetto tramite posta elettronica] e [protetto tramite posta elettronica], quindi non è necessario specificare manualmente una password di root MySQL in seguito:

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

Esegui mysql_secure_installation per proteggere il database MySQL e disabilitare l'accesso al database di test.

mysql_secure_installation

Ti verranno poste queste domande:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

2.2 Installa MariaDB

Eseguire il comando seguente per installare il server e il client MariaDB:

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

Ora impostiamo una password di root per MariaDB.

mysql_secure_installation

Ti verranno poste queste domande:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

3 Installazione di Apache

Apache 2.4 è disponibile come pacchetto Ubuntu. Abbiamo bisogno del pacchetto apache2 che possiamo installarlo in questo modo:

apt-get -y install apache2

Ora indirizza il tuo browser a http://192.168.1.100 e dovresti vedere la pagina segnaposto di Apache (Funziona!):

La radice del documento predefinita di Apache è /var/www/html su Ubuntu e il file di configurazione è /etc/apache2/apache2.conf. Ulteriori configurazioni sono archiviate in sottodirectory della directory /etc/apache2 come /etc/apache2/mods-enabled (per moduli Apache), /etc/apache2/sites-enabled (per host virtuali) e /etc/apache2/conf .d.

4 Installazione di PHP 7

Possiamo far funzionare PHP 7 in Apache2 tramite PHP-FPM e il modulo mod_fastcgi di Apache che installiamo come segue:

apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.0

PHP-FPM è un processo demone (con l'unità systemd php7.0-fpm.service) che esegue un server FastCGI sul socket /var/run/php/php7.0-fpm.sock.

Quindi, abilita i seguenti moduli Apache...

a2enmod actions fastcgi alias

... e riavvia Apache:

systemctl restart apache2.service

5 Configurazione di Apache

Per far funzionare Apache con PHP-FPM, abbiamo bisogno della seguente configurazione:

        <IfModule mod_fastcgi.c>
                AddHandler php7-fcgi .php
                Action php7-fcgi /php7-fcgi
                Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
                FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization
        </IfModule>

Puoi inserirlo nella configurazione globale di Apache (quindi è abilitato per tutti i vhost), ad esempio in /etc/apache2/conf.d/php7.0-fpm.conf (questo file non esiste, quindi devi crearlo) oppure puoi inserirlo in ogni vhost che dovrebbe usare PHP-FPM. Voglio usare PHP-FPM con il vhost predefinito, quindi apro il suo file di configurazione vhost /etc/apache2/sites-available/000-default.conf.

nano /etc/apache2/sites-available/000-default.conf

... e inserisci la seguente sezione da qualche parte tra :

        <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
<IfModule mod_fastcgi.c> SetHandler php7-fcgi .php Action php7-fcgi /php7-fcgi virtual Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization </IfModule>

Riavvia Apache in seguito:

systemctl restart apache2.service

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

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, PHP 7 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 PHP. MySQL non è elencato lì, il che significa che non abbiamo ancora il supporto MySQL in PHP.

Nota: Se hai installato il modulo apache PHP 7 (mod_php), questo può accadere ad es. quando inizi con una configurazione del server LAMP del tuo ISP e non con un server vuoto come ho fatto in questo tutorial, potresti dover disabilitare mod_php come mostrato di seguito.

a2dismod php7.0

e riavvia Apache:

systemctl restart apache2.service

6 Ottenere supporto MySQL/MariaDB in PHP 7

Per ottenere il supporto MySQL in PHP, possiamo installare il pacchetto php7.0-mysql. È 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 php7.0

Scegli quelli che ti servono e installali in questo modo:

apt-get install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php7.0-imap php7.0-mcrypt php7.0-ps php7.0-pspell php7.0-recode php7.0-snmp php7.0-sqlite php7.0-tidy php7.0-xmlrpc php7.0-xsl

Ora ricarica PHP-FPM:

systemctl reload php7.0-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 MySQLi:

7 phpMyAdmin

phpMyAdmin è un'interfaccia web attraverso la quale puoi gestire i tuoi database MySQL. È una buona idea installarlo:

apt-get -y install phpmyadmin

Vedrai le seguenti domande:

Web server to reconfigure automatically:<-- apache2 
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter

Successivamente, puoi accedere a phpMyAdmin da http://192.168.1.100/phpmyadmin/

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

NOTA: Questo capitolo mostra la configurazione di PHP-FPM su TCP. Mostrerò questo come esempio di configurazione e potrebbero esserci configurazioni in cui è necessario, ad es. quando il processo fastcgi viene eseguito su un secondo server, ma in generale è più veloce usare i socket. Quindi potresti voler saltare questo capitolo.

Per impostazione predefinita, PHP-FPM è in ascolto sul socket /var/run/php/php7.0-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/php/7.0/fpm/pool.d/www.conf

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

[...]
;listen = /var/run/php/php7.0-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 php7.0-fpm.service

Quindi esamina la tua configurazione di Apache e tutti i tuoi vhost e cambia la riga FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Autorizzazione a FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Autorizzazione, ad es. così:

nano /etc/apache2/sites-available/000-default.conf
[...]
 <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>

<IfModule mod_fastcgi.c>
AddHandler php7-fcgi .php
Action php7-fcgi /php7-fcgi virtual
Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Authorization
</IfModule> [...]

Infine ricarica Apache:

systemctl reload apache2.service

  • Apache:http://httpd.apache.org/
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MySQL:http://www.mysql.com/
  • Ubuntu:http://www.ubuntu.com/
  • phpMyAdmin:http://www.phpmyadmin.net/

Ubuntu
  1. Installazione di mod_pagespeed con Apache su Ubuntu/CentOS

  2. Come reimpostare la password di Ubuntu?

  3. Disabilitare l'account di root in Ubuntu?

  4. Come installare PHP-FPM con Apache su Ubuntu 20.04

  5. Come installare PHP-FPM con Apache su Ubuntu 22.04

Come reimpostare la password di root in Ubuntu 17.10

Installa phpMyAdmin con Apache su Ubuntu 20.04

Come modificare la password di root su Ubuntu 20.04

Come modificare la password sudo in Ubuntu

Come reimpostare la password di root dimenticata in Ubuntu 20.04

Come impostare l'autenticazione della password con Apache su Ubuntu 18.04