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
9 link
- 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/