Questo tutorial mostra come costruire PHP 5.6 come PHP-FPM e una versione FastCGI su Ubuntu 16.04 (Xenial Xerus). Ubuntu 16.04 viene fornito con PHP 7 per impostazione predefinita, ma ci sono ancora molti siti Web che non supportano PHP 7. Questo tutorial ti mostrerà come installare PHP 5.6 come versione PHP aggiuntiva su Ubuntu 16.04 in modo da poter passare da una versione all'altra per ogni sito web individualmente in ISPConfig.
1 Nota preliminare
Installerò PHP 5.6 in /opt in modo che il PHP 7 principale di Ubuntu non sia interessato e PHP 7 rimarrà il PHP predefinito del nostro server mentre PHP 5.6 è disponibile come opzione in ISPConfig (impostazioni del sito Web). Tieni presente che PHP-FPM può essere utilizzato su entrambi i server Apache e Nginx mentre FastCGI è disponibile solo per i server Apache in ISPConfig.
Con le versioni precedenti di PHP, PHP-FPM e FastCGI si escludevano a vicenda, quindi un binario FPM e FastCGI doveva essere compilato separatamente. Con PHP 5.6 è possibile creare un singolo binario che supporti la modalità FPM e FCGI.
2 Compila PHP 5.6 con PHP-FPM e Fastcgi
Installa i prerequisiti per costruire PHP 5.6, wget e il nano editor che userò per modificare i file di configurazione:
apt-get install build-essential wget nano
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
(L'ultimo comando è necessario se crei PHP con --with-imap, perché altrimenti ./configure si fermerà con il seguente errore:
checking for crypt in -lcrypt... yes
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
[email protected]:/usr/local/src/php5-build/php-5.6.30#
)
Scarica ed estrai PHP 5.6 da php.net:
mkdir /opt/php-5.6.30
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de.php.net/get/php-5.6.30.tar.bz2/from/this/mirror -O php-5.6.30.tar.bz2
tar jxf php-5.6.30.tar.bz2
cd php-5.6.30/
Configura e compila PHP 5.6.30 come segue (puoi adattare il comando ./configure alle tue esigenze, dai un'occhiata a
./configure --help
per vedere tutte le opzioni disponibili; se utilizzi un comando ./configure diverso, è possibile che siano necessarie librerie aggiuntive o il processo di compilazione non riuscirà):
./configure --prefix=/opt/php-5.6.30 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-gettext --with-xmlrpc --with-xsl --with-kerberos --enable-fpm
La stringa sopra è solo un lungo comando, non aggiungere interruzioni di riga. L'ultima opzione (--enable-fpm) assicura che questa versione di PHP funzioni con PHP-FPM.
make
make install
Copia php.ini e php-fpm.conf nelle posizioni corrette:
cp /usr/local/src/php5-build/php-5.6.30/php.ini-production /opt/php-5.6.30/lib/php.ini
cp /opt/php-5.6.30/etc/php-fpm.conf.default /opt/php-5.6.30/etc/php-fpm.conf
Crea la directory del file del pool php-fpm.d.
mkdir /opt/php-5.6.30/etc/php-fpm.d
Apri /opt/php-5.6.30/etc/php-fpm.conf e regola la seguente impostazione (rimuovi; davanti alla riga pid):
nano /opt/php-5.6.30/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...] user = www-data group = www-data [...] listen = 127.0.0.1:8999 [...] include=/opt/php-5.6.30/etc/php-fpm.d/*.conf
2.1 Installare l'estensione xDebug (opzionale)
Il modulo xDebug è un'estensione di debug per PHP. L'installazione è facoltativa.
Installa xDebug con questi comandi.
cd /opt/php-5.6.30/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug
Quindi modifica il file php.ini con un editor:
nano /opt/php-5.6.30/lib/php.ini
e aggiungi la seguente riga alla fine del file:
zend_extension=/opt/php-5.6.30/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
3 Crea il file dell'unità systemd
Ubuntu 16.04 usa systemd come sistema di inizializzazione. Creerò un file di unità systemd per poter avviare/arrestare e riavviare il servizio PHP-FPM.
nano /lib/systemd/system/php-5.6.30-fpm.service
con il seguente contenuto:
[Unit]
Description=The PHP 5.6 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-5.6.30/var/run/php-fpm.pid
ExecStart=/opt/php-5.6.30/sbin/php-fpm --nodaemonize --fpm-config /opt/php-5.6.30/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Abilita il servizio e ricarica systemd:
systemctl enable php-5.6.30-fpm.service
systemctl daemon-reload
Finalmente avvia PHP-FPM.
systemctl start php-5.6.30-fpm.service
Per abilitare Zend OPcache, apri /opt/php-5.6.30/lib/php.ini...
nano /opt/php-5.6.30/lib/php.ini
... e aggiungi la seguente riga alla fine:
[...] zend_extension=opcache.so
Testare la versione PHP:
cd /opt/php-5.6.30/bin
./php --version
L'output dovrebbe essere simile a questo screenshot.
4 Abilita PHP 5.6 in ISPConfig
In ISPConfig 3.1, puoi configurare la nuova versione PHP in Sistema> Versioni PHP aggiuntive. Nella scheda Nome, inserisci semplicemente un nome per la versione PHP (ad es. PHP 5.6.30):questa versione PHP sarà elencata con questo nome nelle impostazioni del sito Web in ISPConfig:
Vai alla scheda Impostazioni FastCGI e compila i campi come segue:
Path to the PHP FastCGI binary: /opt/php-5.6.30/bin/php-cgi
Path to the php.ini directory: /opt/php-5.6.30/lib
Quindi vai alla scheda Impostazioni PHP-FPM e compila i campi come segue:
Path to the PHP-FPM init script: php-5.6.30-fpm
Path to the php.ini directory: /opt/php-5.6.30/lib
Path to the PHP-FPM pool directory: /opt/php-5.6.30/etc/php-fpm.d
5 Link
- PHP:http://www.php.net/
- Configurazione ISP:http://www.ispconfig.org/
- Ubuntu:http://www.ubuntu.com/