GNU/Linux >> Belajar Linux >  >> Debian

Cara Membangun PHP 5.6 (PHP-FPM &FastCGI) dengan Zend OPcache Dan APCu Untuk ISPConfig 3 Di Debian 7 (Wheezy)

Versi 1.0
Penulis:Sampai Brehm , Falko Timme
Ikuti howtoforge di Twitter

ISPConfig 3 memiliki fitur bawaan untuk mendukung beberapa versi PHP pada satu server dan memilih versi PHP yang optimal untuk sebuah situs web. Fitur ini bekerja dengan PHP-FPM dan FastCGI. Tutorial ini menunjukkan bagaimana membangun PHP 5.6 sebagai PHP-FPM dan versi FastCGI pada server Debian Wheezy. Build PHP 5.5 ini termasuk Zend OPcache, dan APCu.

1 Catatan Awal

Saya akan menginstal PHP 5.6.36, versi PHP 5 terbaru pada saat penulisan ini. Saya juga akan menunjukkan bagaimana membangun beberapa ekstensi PHP tambahan seperti APCu dan memcache. Pemuat ioncube tidak tersedia untuk php 5.6 saat ini, jadi saya akan mengabaikan langkah itu.

Harap diperhatikan bahwa PHP-FPM dapat digunakan pada server Apache dan nginx, sedangkan FastCGI hanya tersedia untuk server Apache.

PHP-FPM dan FastCGI saling eksklusif dalam PHP 5.6, itu sebabnya saya menunjukkan dua cara membangun PHP, satu untuk PHP-FPM, satu untuk FastCGI, namun Anda dapat mengkompilasi PHP dua kali untuk mendapatkan keduanya, satu kali dengan --enable-fpm dan satu kali dengan --enable-cgi (pastikan untuk menggunakan direktori dasar yang berbeda, seperti /opt/php-5.6.36 untuk PHP-FPM dan /opt/phpfcgi-5.6.36 untuk FastCGI).

2 Membangun PHP 5.6.36 (PHP-FPM)

Unduh dan ekstrak PHP 5.6.36:

mkdir /opt/php-5.6.36
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de2.php.net/get/php-5.6.36.tar.bz2/from/this/mirror -O php-5.6.36.tar.bz2
tar jxf php-5.6.36.tar.bz2
cd php-5.6.36/

Instal prasyarat untuk membangun PHP5:

apt-get install build-essential
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

(Perintah terakhir diperlukan jika Anda membuat PHP dengan --with-imap, karena jika tidak ./configure akan berhenti dengan kesalahan berikut:

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.36#

)

Konfigurasi dan build PHP 5.6.36 sebagai berikut (Anda dapat menyesuaikan perintah ./configure dengan kebutuhan Anda, lihat

./configure --help

untuk melihat semua opsi yang tersedia; jika Anda menggunakan perintah ./configure yang berbeda, ada kemungkinan perpustakaan tambahan diperlukan, atau proses pembangunan akan gagal):

./configure --prefix=/opt/php-5.6.36 --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-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm

Sakelar terakhir (--enable-fpm) memastikan versi PHP ini akan bekerja dengan PHP-FPM.

make
make install

Salin php.ini dan php-fpm.conf ke lokasi yang benar:

cp /usr/local/src/php5-build/php-5.6.36/php.ini-production /opt/php-5.6.36/lib/php.ini
cp /opt/php-5.6.36/etc/php-fpm.conf.default /opt/php-5.6.36/etc/php-fpm.conf

Buka /opt/php-5.6.36/etc/php-fpm.conf dan sesuaikan pengaturan berikut - di baris listen Anda harus menggunakan port yang tidak digunakan (mis. 8999; port 9000 mungkin sudah digunakan oleh PHP-FPM default Debian ), dan Anda harus menambahkan baris include=/opt/php-5.6.36/etc/pool.d/*.conf di akhir:

vi /opt/php-5.6.36/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.36/etc/pool.d/*.conf

Buat direktori kumpulan untuk PHP-FPM:

mkdir /opt/php-5.6.36/etc/pool.d

Selanjutnya buat skrip init untuk PHP-FPM:

vi /etc/init.d/php-5.6.36-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-5.6.36-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-5.6.36-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-5.6.36/sbin/php-fpm
php_fpm_CONF=/opt/php-5.6.36/etc/php-fpm.conf
php_fpm_PID=/opt/php-5.6.36/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Jadikan skrip init dapat dieksekusi dan buat tautan startup sistem:

chmod 755 /etc/init.d/php-5.6.36-fpm
insserv php-5.6.36-fpm

Akhirnya mulai PHP-FPM:

/etc/init.d/php-5.6.36-fpm start

Selama tidak ada kumpulan di /opt/php-5.6.36/etc/pool.d, Anda akan mendapatkan peringatan ini yang dapat Anda abaikan:

[email protected]:/usr/local/src/php5-build/php-5.6.36# /etc/init.d/php-5.6.36-fpm start
Starting php-fpm [29-Aug-2014 13:21:12] WARNING: Nothing matches the include pattern '/opt/php-5.6.36/etc/pool.d/*.conf' from /opt/php-5.6.36/etc/php-fpm.conf at line 528.
done
[email protected]:/usr/local/src/php5-build/php-5.6.36#

Untuk mengaktifkan Zend OPcache, buka /opt/php-5.6.36/lib/php.ini...

vi /opt/php-5.6.36/lib/php.ini

... dan tambahkan baris berikut di akhir:

[...]
zend_extension=opcache.so

Itu saja - jika Anda mau, Anda sekarang dapat menginstal beberapa modul tambahan seperti APCu, memcache, memcached, dan ioncube.

Modul APCu, memcache, dan memcached dapat diinstal melalui PEAR yang harus kita instal dan inisialisasi terlebih dahulu:

apt-get -y install php-pear
cd /opt/php-5.6.36/etc
pecl -C ./pear.conf update-channels

APcu sekarang dapat diinstal sebagai berikut:

pecl -C ./pear.conf install channel://pecl.php.net/apcu-4.0.6

Terima semua nilai default. Setelah itu, buka /opt/php-5.6.36/lib/php.ini...

vi /opt/php-5.6.36/lib/php.ini

... dan tambahkan baris extension=apcu.so di akhir file (Anda juga dapat mengonfigurasi beberapa pengaturan APCu tambahan):

[...]
extension=apcu.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

Ekstensi memcache dapat diinstal sebagai berikut:

pecl -C ./pear.conf install memcache

Buka /opt/php-5.6.36/lib/php.ini...

vi /opt/php-5.6.36/lib/php.ini

... dan tambahkan baris extension=memcache.so di akhir file:

[...]
extension=memcache.so

Muat ulang PHP-FPM setelahnya:

/etc/init.d/php-5.6.36-fpm reload

Di ISPConfig 3.0.5, Anda dapat mengonfigurasi versi PHP baru di bawah Sistem> Versi PHP Tambahan. Pada tab Name, Anda cukup mengisi nama untuk versi PHP (mis. PHP 5.6.36) - versi PHP ini akan terdaftar di bawah nama ini di pengaturan situs web di ISPConfig:

Buka tab Pengaturan PHP-FPM (tab Pengaturan FastCGI dapat dikosongkan) dan isi kolom sebagai berikut:


Debian
  1. Cara menginstal PHP 7 (PHP-FPM &FastCGI) untuk ISPConfig 3 di Debian 8 (Jessie)

  2. Cara menginstal PHP 7 sebagai PHP-FPM &FastCGI untuk ISPConfig 3 di Debian 8 (Jessie)

  3. Cara menginstal PHP 5.6 sebagai tambahan PHP-FPM &FastCGI untuk ISPConfig 3.1 di Ubuntu 16.04

  1. Cara menginstal PHP 7.1.16 sebagai PHP-FPM &FastCGI untuk ISPConfig 3.1 di Debian 8 (Jessie)

  2. Cara menginstal PHP 7.1, 7.2 dan 5.6 sebagai PHP-FPM &FastCGI untuk ISPConfig 3 di Debian 9

  3. Cara mengkompilasi dan menginstal PHP 7.4 sebagai PHP-FPM &FastCGI untuk ISPConfig 3 di Ubuntu 18.04 LTS

  1. Cara menginstal PHP 5.6 dan 7.0 - 8.1 sebagai PHP-FPM &FastCGI untuk ISPConfig 3 dengan apt di Debian 8 hingga 11

  2. Menginstal Nginx dengan PHP (sebagai PHP-FPM) dan MariaDB (LEMP) di Debian 8

  3. Cara Menginstal Apache dengan PHP-FPM di Debian 10