GNU/Linux >> Belajar Linux >  >> Debian

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

Versi final PHP 7.1 tersedia untuk diunduh di Github dan mirror PHP sekarang. PHP 7.1 adalah generasi berikutnya dari bahasa pemrograman PHP, hingga 2 kali lebih cepat dari PHP 5.6 dan 14 kali lebih cepat dari PHP 5.0 menurut catatan rilis. Versi PHP yang baru tidak 100% kompatibel dengan PHP 5.x karena beberapa API yang tidak digunakan lagi telah dihapus, jadi sebaiknya Anda mulai menguji kompatibilitas situs web Anda dengan rilis baru ini. Ini dapat dilakukan dengan mudah dan tanpa mempengaruhi semua situs di server Anda dengan menggunakan fitur versi multi PHP di ISPConfig 3. Versi PHP dapat dipilih di pengaturan situs web ISPConfig 3 untuk setiap situs satu per satu. Fitur ini bekerja dengan PHP-FPM dan FastCGI. Tutorial ini menunjukkan cara membuat PHP 7.1 baru sebagai versi PHP-FPM dan FastCGI di server Debian Jessie. Build PHP 7.1 ini mencakup banyak ekstensi yang dikompilasi dan Zend OPcache dan Memcached sebagai modul yang dapat dimuat.

1 Catatan Awal

Saya akan menginstal PHP 7.1 yang telah dirilis sebagai versi final beberapa hari yang lalu. Harap diperhatikan bahwa PHP-FPM dapat digunakan di server Apache dan Nginx, sedangkan FastCGI hanya tersedia untuk server Apache.

Dengan versi PHP yang lebih lama, PHP-FPM dan FastCGI telah saling eksklusif sehingga biner FPM dan FastCGI harus dibuat secara terpisah. Dengan PHP 7.1, biner tunggal yang mendukung mode FPM dan FCGI dapat dibuat.

2 Kompilasi PHP 7.1 dengan PHP-FPM dan Fastcgi

Unduh dan ekstrak PHP 7.1 dari Github:

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

Instal prasyarat untuk membangun PHP 7.1 dan editor nano yang akan saya gunakan untuk mengedit file konfigurasi:

apt-get install build-essential nano autoconf
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-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

(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-7.0.7#

)

Konfigurasi dan build PHP 7.1 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-7.1 --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-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --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/php7-build/php-7.1.16/php.ini-production /opt/php-7.1/lib/php.ini
cp /opt/php-7.1/etc/php-fpm.conf.default /opt/php-7.1/etc/php-fpm.conf
cp /opt/php-7.1/etc/php-fpm.d/www.conf.default /opt/php-7.1/etc/php-fpm.d/www.conf

Buka /opt/php-7.1/etc/php-fpm.conf dan sesuaikan pengaturan berikut (hapus; di depan baris pid):

nano /opt/php-7.1/etc/php-fpm.conf
[...]
pid = run/php-fpm.pid
[...]

Kemudian buka /opt/php-7.1/etc/php-fpm.d/www.conf dan sesuaikan baris mendengarkan, Anda harus menggunakan port yang tidak digunakan (mis. 8999; port 9000 mungkin sudah digunakan oleh PHP-FPM default Debian) :

nano /opt/php-7.1/etc/php-fpm.d/www.conf
[...]
listen = 127.0.0.1:8999
[...]

Saat Anda menggunakan beberapa versi PHP tambahan, pastikan untuk menggunakan port gratis, mis. 8998, 8997, dan seterusnya untuk versi berikutnya.

3 Buat skrip init dan file unit systemd

Debian mendukung Systemd serta skrip init tradisional. Sebagian besar sistem saat ini menggunakan Systemd, dalam hal ini lanjutkan dengan bab 3.2, untuk sistem dengan sistem init tradisional, ikuti bab 3.1 dan kemudian lanjutkan dengan bab 4. Jangan menginstal keduanya, skrip systemd dan init.d, pada sistem yang sama.

3.1 Buat skrip awal init.d

Pertama saya akan membuat skrip init untuk layanan php-fpm dan kemudian saya akan membuat unit systemd.

Pertama, buat skrip init untuk PHP-FPM:

nano /etc/init.d/php-7.1-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-7.1-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-7.1-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.1/sbin/php-fpm
php_fpm_CONF=/opt/php-7.1/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.1/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-7.1-fpm
insserv php-7.1-fpm

Akhirnya mulai PHP-FPM:

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

Hasilnya seharusnya:

/etc/init.d/php-7.1-fpm start
Starting php-fpm done

3.2 Buat  skrip Systemd untuk PHP 7.1

Sekarang buat file unit systemd:

nano /lib/systemd/system/php-7.1-fpm.service

dengan isi sebagai berikut:

[Unit]
Description=The PHP 7.1 FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/opt/php-7.1/var/run/php-fpm.pid
ExecStart=/opt/php-7.1/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.1/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Aktifkan layanan dan muat ulang systemd:

systemctl enable php-7.1-fpm.service
systemctl daemon-reload

Akhirnya mulai PHP-FPM:

systemctl start php-7.1-fpm.service

4 Aktifkan Zend OPcache

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

nano /opt/php-7.1/lib/php.ini

... dan tambahkan baris berikut di akhir:

[...]
zend_extension=opcache.so

Ekstensi Memcache dan APCu belum dapat diinstal pada PHP 7.1, jadi saya akan melewatkan instalasinya untuk saat ini. Nanti saya update tutorialnya kalau ekstensi pecl sudah compatible dengan PHP 7.1.

Uji versi PHP:

cd /opt/php-7.1/bin
./php --version

Outputnya harus mirip dengan tangkapan layar ini.

Harap diperhatikan: Tangkapan layar berasal dari PHP 7.1.16, tutorial diperbarui terus-menerus untuk versi PHP 7.1 baru, tetapi kami tidak mengambil tangkapan layar baru setiap kali, jadi versi PHP 7.1 yang akan Anda lihat di server mungkin lebih baru. Versi tutorial saat ini adalah untuk php-7.1.16.

5 Aktifkan Memcache (opsional)

Dalam bab ini, saya akan mengkompilasi dan mengaktifkan ekstensi PHP Memcached.

Langkah pertama adalah menginstal paket libmemcached-dev dari Debian.

apt-get install libmemcached-dev

Kemudian buat direktori, unduh ekstensi memcache PHP dari Github, buka paket arsip dan masuk ke direktori yang berisi file yang belum dibongkar.

mkdir /usr/local/src/php7-build/php-memcache
cd /usr/local/src/php7-build/php-memcache
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
unzip php7.zip
cd php-memcached-php7

Siapkan sumbernya dengan menjalankan perintah phpize dari PHP 7.1.

/opt/php-7.1/bin/phpize

Konfigurasikan dan buat ekstensi memcache PHP.

./configure --with-php-config=/opt/php-7.1/bin/php-config
make
make install

Untuk mengaktifkan ekstensi Memcache, buka /opt/php-7.1/lib/php.ini...

nano /opt/php-7.1/lib/php.ini

... dan tambahkan baris berikut di akhir:

[...]
extension=memcached.so

2.1 Instal ekstensi xDebug (opsional)

Modul xDebug adalah ekstensi debug untuk PHP. Instalasi bersifat opsional.

Instal xDebug dengan perintah ini.

cd /opt/php-7.1/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug

Kemudian edit file php.ini dengan editor:

nano /opt/php-7.1/lib/php.ini

dan tambahkan baris berikut di akhir file:

zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so

Terakhir restart daemon php-fpm:

service php-7.1-fpm restart

7 Aktifkan PHP 7.1 di ISPConfig

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

Buka tab FastCGI Settings dan isi kolom sebagai berikut:

Path to the PHP FastCGI binary: /opt/php-7.1/bin/php-cgi
Path to the php.ini directory: /opt/php-7.1/lib

Lalu, buka tab Setelan PHP-FPM dan isi kolom sebagai berikut:

Path to the PHP-FPM init script: /etc/init.d/php-7.1-fpm
Path to the php.ini directory: /opt/php-7.1/lib
Path to the PHP-FPM pool directory: /opt/php-7.1/etc/php-fpm.d

  • PHP:http://www.php.net/
  • ISPConfig:http://www.ispconfig.org/
  • Debian:http://www.debian.org/

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

  2. Cara Menginstal PHP 7.4 di Debian 10

  3. Cara Menginstal PHP 8 di Debian 10

  1. Cara Menginstal PHP 8.0 di Debian 11

  2. Cara Menginstal PHP 7.2 di Debian 9

  3. Cara Menginstal PHP 7.3 di Debian 10

  1. Cara Menginstal PHP di Debian 9

  2. Cara Menginstal PHP 8.0 di Debian 10 / Debian 9

  3. Cara Menginstal PHP di Debian 11