GNU/Linux >> Belajar Linux >  >> Debian

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

Versi final PHP 7 tersedia untuk diunduh di Github dan mirror PHP sekarang. PHP7 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 baru sebagai versi PHP-FPM dan FastCGI di server Debian Jessie. Build PHP 7 ini termasuk Zend OPcache.

1 Catatan Awal

Saya akan menginstal PHP 7 yang saat ini dalam versi Beta pada saat penulisan ini. 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, biner tunggal yang mendukung mode FPM dan FCGI dapat dibuat.

2 Kompilasi PHP 7 dengan PHP-FPM dan Fastcgi

Unduh dan ekstrak PHP 7 dari Github:

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

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

apt-get install build-essential nano
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 libjpeng6-dev libjpeng6-dev libjpeng 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:

memeriksa crypt di -lcrypt... yes
configure:error:Cannot find imap library (libc-client.a). Harap periksa penginstalan c-client Anda.
[email protected]:/usr/local/src/php5-build/php-7.0.32#

)

Konfigurasi dan build PHP 7.0.0 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.0.32 --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- optimasi --with-bz2 --with-zlib --enable-socket --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.0.32/php.ini-production /opt/php-7.0.32/lib/php.ini
cp /opt/php-7.0.32/etc/php-fpm.conf.default /opt/php-7.0.32/etc/php-fpm.conf
cp /opt/php-7.0. 32/etc/php-fpm.d/www.conf.default /opt/php-7.0.32/etc/php-fpm.d/www.conf

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

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

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

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

3 Buat skrip init dan file unit systemd

Debian mendukung Systemd serta skrip init tradisional. 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.0.32-fpm
#! /bin/sh### BEGIN INFO INIT# Menyediakan:php-7.0.32-fpm# Required-Start:$all# Required-Stop:$all# Default-Start:2 3 4 5# Default-Stop:0 1 6# Deskripsi Singkat:memulai php-7.0.32-fpm# Deskripsi:memulai daemon Manajer Proses FastCGI PHP### END INIT INFOphp_fpm_BIN=/opt/php-7.0.32/sbin/php-fpmphp_fpm_CONF=/opt/php -7.0.32/etc/php-fpm.confphp_fpm_PID=/opt/php-7.0.32/var/run/php-fpm.pidphp_opts="--fpm-config $php_fpm_CONF"wait_for_pid () { coba=0 saat menguji $coba -lt 35; lakukan case "$1" di 'created') if [ -f "$2" ]; lalu coba='' break fi;; 'dihapus') jika [ ! -f "$2" ]; lalu coba='' break fi;; esac echo -n . try=`expr $try + 1` sleep 1 done}case "$1" di awal) echo -n "Memulai php-fpm " $php_fpm_BIN $php_opts if [ "$?" !=0 ]; lalu echo "gagal" exit 1 fi wait_for_pid dibuat $php_fpm_PID if [ -n "$try" ]; lalu echo "gagal" exit 1 else echo "selesai" fi;; stop) echo -n "Dengan anggun mematikan php-fpm " if [ ! -r $php_fpm_PID ]; lalu echo "peringatan, tidak ada file pid yang ditemukan - php-fpm tidak berjalan?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid dihapus $php_fpm_PID if [ -n "$try" ]; lalu echo " gagal. Gunakan force-exit" exit 1 else echo " selesai" echo " selesai" fi;; force-quit) echo -n "Mengakhiri php-fpm " jika [ ! -r $php_fpm_PID ]; lalu echo "peringatan, tidak ada file pid yang ditemukan - php-fpm tidak berjalan?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid dihapus $php_fpm_PID if [ -n "$try" ]; lalu echo "gagal" exit 1 else echo "selesai" fi;; restart) $0 stop $0 start;; reload) echo -n "Muat ulang layanan php-fpm " jika [ ! -r $php_fpm_PID ]; lalu echo "peringatan, tidak ada file pid yang ditemukan - php-fpm tidak berjalan?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done";; *) echo "Penggunaan:$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.0.32-fpm
insserv php-7.0.32-fpm

Dan sekarang buat file unit systemd

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

dengan konten berikut:

[Unit]
Description=Pengelola Proses FastCGI PHP 7
After=network.target

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

[Instal]
WantedBy=multi-pengguna.target

Aktifkan layanan dan muat ulang systemd:

systemctl mengaktifkan php-7.0.32-fpm.service
systemctl daemon-reload

Akhirnya mulai PHP-FPM.

Untuk sistem dengan sistem init tradisional, jalankan:

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

Hasilnya seharusnya:

/etc/init.d/php-7.0.32-fpm start
Memulai php-fpm selesai

Di server yang menggunakan systemd, gunakan perintah ini sebagai gantinya:

systemctl start php-7.0.32-fpm.service

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

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

... dan tambahkan baris berikut di akhir:

[...]zend_extension=opcache.so

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

Uji versi PHP:

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

Outputnya harus mirip dengan tangkapan layar ini.

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

4 Aktifkan PHP 7 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.0.0) - versi PHP ini akan terdaftar di bawah nama ini di pengaturan situs web di ISPConfig:

Buka tab FastCGI Settings dan isi kolom sebagai berikut:

Jalur ke biner PHP FastCGI: /opt/php-7.0.32/bin/php-cgi
Jalur ke direktori php.ini: /opt/php-7.0.32/lib

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

Jalur ke skrip init PHP-FPM: php-7.0.32-fpm
Jalur ke direktori php.ini: /opt/php-7.0.32/lib
Jalur ke direktori kumpulan PHP-FPM: /opt/php-7.0.32/etc/php-fpm.d

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

Debian
  1. Cara Menginstal PHP 8.0 di Debian 11

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

  3. Cara Menginstal PHP di Debian 11

  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.2 di Debian 9

  3. Cara Menginstal PHP 7.3 di Debian 10

  1. Cara Menginstal PHP di Debian 9

  2. Cara Menginstal PHP 7.4 di Debian 10

  3. Cara Menginstal PHP 8 di Debian 10