Cách cài đặt PHP 7.1.16 làm PHP-FPM & FastCGI cho ISPConfig 3.1 trên Debian 8 (Jessie)

theanh

Administrator
Nhân viên
Phiên bản cuối cùng của PHP 7.1 có thể tải xuống trên Githubvà các bản sao PHP hiện tại. PHP 7.1 là thế hệ tiếp theo của ngôn ngữ lập trình PHP, nhanh hơn PHP 5.6 tới 2 lần và nhanh hơn PHP 5.0 tới 14 lần theo ghi chú phát hành. Phiên bản PHP mới không tương thích 100% với PHP 5.x vì một số API không còn được sử dụng nữa đã bị xóa, vì vậy, bạn nên bắt đầu kiểm tra khả năng tương thích của các trang web của mình với bản phát hành mới này. Bạn có thể dễ dàng thực hiện việc này mà không ảnh hưởng đến tất cả các trang web trên máy chủ của mình bằng cách sử dụng tính năng nhiều phiên bản PHP trong ISPConfig 3. Có thể chọn phiên bản PHP trong cài đặt trang web ISPConfig 3 cho từng trang web riêng lẻ. Tính năng này hoạt động với PHP-FPM và FastCGI. Hướng dẫn này chỉ cách xây dựng PHP 7.1 mới dưới dạng phiên bản PHP-FPM và FastCGI trên Debian Jessieserver. Bản dựng PHP 7.1 này bao gồm nhiều tiện ích mở rộng được biên dịch và Zend OPcache và Memcached dưới dạng các mô-đun có thể tải.


1 Lưu ý sơ bộ​

Tôi sẽ cài đặt PHP 7.1 đã được phát hành dưới dạng phiên bản cuối cùng cách đây vài ngày. Xin lưu ý rằng PHP-FPM có thể được sử dụng trên cả máy chủ Apache và Nginx trong khi FastCGI chỉ khả dụng cho máy chủ Apache.

Với các phiên bản PHP cũ hơn, PHP-FPM và FastCGI loại trừ lẫn nhau nên nhị phân FPM và FastCGI phải được xây dựng riêng. Với PHP 7.1, một tệp nhị phân đơn hỗ trợ chế độ FPM và FCGI có thể được xây dựng.


2 Biên dịch PHP 7.1 với PHP-FPM và Fastcgi​

Tải xuống và giải nén PHP 7.1 từ Github:
Mã:
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
Mã:
cdphp-7.1.16/
Cài đặt các điều kiện tiên quyết để xây dựng PHP 7.1 và trình soạn thảo nano mà tôi sẽ sử dụng để chỉnh sửa các tệp cấu hình:
Mã:
apt-get install build-essential nano autoconf
Mã:
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-devlibxml2-devlibbz2-devlibcurl4-openssl-devlibjpeg-devlibpng12-devlibfreetype6-devlibkrb5-devlibpq-dev libxml2-devlibxslt1-dev
Mã:
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
(Lệnh cuối cùng là cần thiết nếu bạn xây dựng PHP với --with-imap, nếu không ./configure sẽ dừng lại với lỗi sau:
Mã:
đang kiểm tra crypt trong -lcrypt... có
cấu hình: lỗi: Không tìm thấy thư viện imap (libc-client.a). Vui lòng kiểm tra cài đặt c-client của bạn.
root@server1:/usr/local/src/php5-build/php-7.0.7#
)

Cấu hình và xây dựng PHP 7.1 như sau (bạn có thể điều chỉnh lệnh ./configure theo nhu cầu của mình, hãy xem
Mã:
./configure --help
để xem tất cả các tùy chọn có sẵn; nếu bạn sử dụng lệnh ./configure khác, có thể cần thêm các thư viện khác hoặc quá trình xây dựng sẽ không thành công):
Mã:
./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
Chuyển đổi cuối cùng (--enable-fpm) đảm bảo phiên bản PHP này sẽ hoạt động với PHP-FPM.
Mã:
make
make install
Sao chép php.ini và php-fpm.conf vào đúng vị trí:
Mã:
cp /usr/local/src/php7-build/php-7.1.16/php.ini-production /opt/php-7.1/lib/php.ini
Mã:
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
Mở /opt/php-7.1/etc/php-fpm.conf và điều chỉnh cài đặt sau (bỏ dấu ; trước dòng pid):
Mã:
nano /opt/php-7.1/etc/php-fpm.conf
Mã:
[...]pid = run/php-fpm.pid[...]
Sau đó mở /opt/php-7.1/etc/php-fpm.d/www.confvà điều chỉnh dòng listen, bạn phải sử dụng một cổng chưa sử dụng (ví dụ: 8999; cổng 9000 có thể đã được PHP-FPM mặc định của Debian sử dụng):
Mã:
nano/opt/php-7.1/etc/php-fpm.d/www.conf
Mã:
[...]listen = 127.0.0.1:8999[...]
Khi bạn sử dụng nhiều phiên bản PHP bổ sung, hãy đảm bảo sử dụng cổng miễn phí, ví dụ: 8998, 8997, v.v. cho các phiên bản tiếp theo.


3 Tạo tập lệnh init và tệp đơn vị systemd​

Debian hỗ trợ Systemd cũng như các tập lệnh init truyền thống. Hầu hết các hệ thống ngày nay sử dụng Systemd, trong trường hợp này, hãy tiến hành với chương 3.2, đối với các hệ thống có hệ thống init truyền thống, hãy làm theo chương 3.1 và sau đó tiến hành với chương 4. Không cài đặt cả tập lệnh systemd và init.d trên cùng một hệ thống.


3.1 Tạo tập lệnh khởi động init.d​

Đầu tiên, tôi sẽ tạo một tập lệnh init cho dịch vụ php-fpm và sau đó tôi sẽ tạo một đơn vị systemd.

Đầu tiên, hãy tạo một tập lệnh init cho PHP-FPM:
Mã:
nano /etc/init.d/php-7.1-fpm
Mã:
#! /bin/sh### BEGIN INIT INFO# Cung cấp: php-7.1-fpm# Bắt buộc-Bắt đầu: $all# Bắt buộc-Dừng: $all# Bắt đầu-Mặc định: 2 3 4 5# Dừng-Mặc định: 0 1 6# Mô tả ngắn: khởi động php-7.1-fpm# Mô tả: khởi động daemon PHP FastCGI Process Manager### END INIT INFOphp_fpm_BIN=/opt/php-7.1/sbin/php-fpmphp_fpm_CONF=/opt/php-7.1/etc/php-fpm.confphp_fpm_PID=/opt/php-7.1/var/run/php-fpm.pidphp_opts="--fpm-config $php_fpm_CONF"wait_for_pid () { try=0 while test $try -lt 35 ; do case "$1" trong '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 xong}case "$1" trong start) echo -n "Đang khởi động 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 "Đang tắt php-fpm một cách nhẹ nhàng " if [ ! -r $php_fpm_PID ] ; then echo " warning, no pid file found - php-fpm is not running ?" thoát 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid đã xóa $php_fpm_PID nếu [ -n "$try" ] ; sau đó echo " không thành công. Sử dụng force-exit" thoát 1 nếu không echo " xong" echo " xong" fi ;; buộc-quit) echo -n "Đang kết thúc php-fpm " nếu [ ! -r $php_fpm_PID ] ; sau đó echo " cảnh báo, không tìm thấy tệp pid - php-fpm không chạy ?" thoát 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid đã xóa $php_fpm_PID nếu [ -n "$try" ] ; sau đó echo " không thành công" thoát 1 nếu không echo " xong" fi ;; khởi động lại) $0 dừng $0 bắt đầu ;; tải lại) echo -n "Tải lại dịch vụ php-fpm " nếu [ ! -r $php_fpm_PID ] ; sau đó echo "cảnh báo, không tìm thấy tệp pid - php-fpm không chạy?" thoát 1 fi kill -USR2 `cat $php_fpm_PID` echo " xong" ;; *) echo " Sử dụng: $0 {bắt đầu|dừng|buộc thoát|khởi động lại|tải lại}" thoát 1 ;;esac
Làm cho tập lệnh init có thể thực thi và tạo các liên kết khởi động hệ thống:
Mã:
chmod 755 /etc/init.d/php-7.1-fpm
insserv php-7.1-fpm
Cuối cùng khởi động PHP-FPM:
Mã:
/etc/init.d/php-7.1-fpm start
Kết quả sẽ như sau:
Mã:
/etc/init.d/php-7.1-fpm start
Khởi động php-fpm xong

3.2 Tạo tập lệnh Systemd cho PHP 7.1​

Bây giờ hãy tạo tệp đơn vị systemd:
Mã:
nano/lib/systemd/system/php-7.1-fpm.service
có nội dung sau:
Mã:
[Unit]
Description=Trình quản lý quy trình FastCGI PHP 7.1
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
Kích hoạt dịch vụ và tải lại systemd:
Mã:
systemctl enable php-7.1-fpm.service
systemctl daemon-reload
Cuối cùng khởi động PHP-FPM:
Mã:
systemctl start php-7.1-fpm.service

4 Bật Zend OPcache​

Để bật Zend OPcache, hãy mở /opt/php-7.1/lib/php.ini...
Mã:
nano /opt/php-7.1/lib/php.ini
... và thêm dòng sau vào cuối:
Mã:
[...]zend_extension=opcache.so
Phần mở rộng Memcache và APCu hiện chưa thể cài đặt trên PHP 7.1, vì vậy tôi sẽ bỏ qua phần cài đặt của chúng. Tôi sẽ cập nhật hướng dẫn sau khi các phần mở rộng pecl tương thích với PHP 7.1.

Kiểm tra phiên bản PHP:
Mã:
cd/opt/php-7.1/bin
./php --version
Đầu ra sẽ tương tự như ảnh chụp màn hình này.



Xin lưu ý: Ảnh chụp màn hình là từ PHP 7.1.16, hướng dẫn được cập nhật liên tục cho các phiên bản PHP 7.1 mới, nhưng chúng tôi không chụp ảnh màn hình mới mỗi lần, vì vậy phiên bản PHP 7.1 mà bạn sẽ thấy trên máy chủ của mình có thể mới hơn. Phiên bản hiện tại của hướng dẫn này dành chophp-7.1.16.


5 Bật Memcache (tùy chọn)​

Trong chương này, tôi sẽ biên dịch và bật tiện ích mở rộng PHP Memcached.

Bước đầu tiên là cài đặt góilibmemcached-dev từ Debian.
Mã:
apt-get install libmemcached-dev
Sau đó, tạo một thư mục, tải xuống tiện ích mở rộng PHP memcache từ Github, giải nén tệp lưu trữ và vào thư mục chứa các tệp đã giải nén.
Mã:
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
giải nén php7.zip
cd php-memcached-php7
Chuẩn bị nguồn bằng cách chạy lệnh phpize từ PHP 7.1.
Mã:
/opt/php-7.1/bin/phpize
Cấu hình và xây dựng tiện ích mở rộng memcache PHP.
Mã:
./configure --with-php-config=/opt/php-7.1/bin/php-config
make
make install
Để bật tiện ích mở rộng Memcache, hãy mở /opt/php-7.1/lib/php.ini...
Mã:
nano /opt/php-7.1/lib/php.ini
... và thêm dòng sau vào end:
Mã:
[...]extension=memcached.so

2.1 Cài đặt tiện ích mở rộng xDebug (tùy chọn)​

Mô-đun xDebug là tiện ích mở rộng gỡ lỗi cho PHP. Cài đặt là tùy chọn.

Cài đặt xDebug bằng các lệnh sau.
Mã:
cd /opt/php-7.1/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug
Sau đó chỉnh sửa tệp php.ini bằng trình chỉnh sửa:
Mã:
nano /opt/php-7.1/lib/php.ini
và thêm dòng sau vào cuối tệp:
Mã:
zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Cuối cùng, khởi động lại daemon php-fpm:
Mã:
service php-7.1-fpm restart

7 Kích hoạt PHP 7.1 trong ISPConfig​

Trong ISPConfig 3, bạn có thể cấu hình phiên bản PHP mới trong Hệ thống > Phiên bản PHP bổ sung. Trên tab Name, bạn chỉ cần điền tên cho phiên bản PHP (ví dụ: PHP 7.1) - phiên bản PHP này sẽ được liệt kê dưới tên này trong cài đặt trang web trong ISPConfig:



Đi tới tab FastCGI Settings và điền vào các trường như sau:
Mã:
[B]Đường dẫn đến tệp nhị phân PHP FastCGI:[/b]/opt/php-7.1/bin/php-cgi
[B]Đường dẫn đến thư mục php.ini:[/b]/opt/php-7.1/lib


Sau đó, chuyển đến tab PHP-FPM Settings và điền vào các trường như sau:
Mã:
[B]Đường dẫn đến tệp khởi tạo PHP-FPM script:[/b]/etc/init.d/php-7.1-fpm
[B]Đường dẫn đến thư mục php.ini:[/b]/opt/php-7.1/lib
[B]Đường dẫn đến thư mục nhóm PHP-FPM:[/b]/opt/php-7.1/etc/php-fpm.d



7 Liên kết​

 
Back
Bên trên