Phiên bản cuối cùng của PHP 7 có thể tải xuống trên Githubvà các bản sao PHP hiện tại. PHP7 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 mới dưới dạng phiên bản PHP-FPM và FastCGI trên máy chủ Debian Jessie. Các bản dựng PHP 7 này bao gồm Zend OPcache.
Với các phiên bản PHP cũ hơn, PHP-FPM và FastCGI đã loại trừ lẫn nhau nên phải xây dựng nhị phân FPM và FastCGI riêng biệt. Với PHP 7, một tệp nhị phân đơn hỗ trợ chế độ FPM và FCGI có thể được xây dựng.
Cài đặt các điều kiện tiên quyết để xây dựng PHP 7 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:
(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:
)
Cấu hình và xây dựng PHP 7.0.0 như sau (bạn có thể điều chỉnh lệnh ./configure theo nhu cầu của mình, hãy xem
để 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):
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.
Sao chép php.ini và php-fpm.conf vào đúng vị trí:
Mở /opt/php-7.0.32/etc/php-fpm.conf và điều chỉnh cài đặt sau (xóa dấu ; trước dòng pid):
Sau đó mở /opt/php-7.0.32/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):
Trước tiên, hãy tạo một tập lệnh init cho PHP-FPM:
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:
Và bây giờ tạo tệp đơn vị systemd
với nội dung sau:
Kích hoạt dịch vụ và tải lại systemd:
Cuối cùng khởi động PHP-FPM.
Đối với các hệ thống có hệ thống init truyền thống, hãy chạy:
Kết quả sẽ là:
Trên các máy chủ sử dụng systemd, hãy sử dụng lệnh này lệnh thay thế:
Để bật Zend OPcache, hãy mở /opt/php-7.0.32/lib/php.ini...
... và thêm dòng sau vào cuối:
Phần mở rộng Memcache và APCu hiện chưa thể cài đặt trên PHP 7, vì vậy tôi sẽ bỏ qua việc cài đặt chúng. Tôi sẽ cập nhật hướng dẫn sau khi các tiện ích mở rộng pecl tương thích với PHP 7.
Kiểm tra phiên bản PHP:
Đầ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.0.0, hướng dẫn được cập nhật liên tục cho các phiên bản PHP 7 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 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 là dành chophp-7.0.32.
Đi tới tab FastCGI Settings và điền vào các trường như sau:
Sau đó, chuyển đến tab PHP-FPM Settings và điền vào các trường như sau:
1 Lưu ý sơ bộ
Tôi sẽ cài đặt PHP 7 hiện đang ở giai đoạn Beta tại thời điểm viết bài nà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 phải xây dựng nhị phân FPM và FastCGI riêng biệt. Với PHP 7, 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 với PHP-FPM và Fastcgi
Tải xuống và giải nén PHP 7 từ Github:
Mã:
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
Mã:
cdphp-7.0.32/
Mã:
apt-get install build-essential nano
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
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.32#
Cấu hình và xây dựng PHP 7.0.0 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
Mã:
./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-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
Mã:
make
make install
Mã:
cp /usr/local/src/php7-build/php-7.0.32/php.ini-production /opt/php-7.0.32/lib/php.ini
Mã:
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
Mã:
nano /opt/php-7.0.32/etc/php-fpm.conf
Mã:
[...]pid = run/php-fpm.pid[...]
Mã:
nano/opt/php-7.0.32/etc/php-fpm.d/www.conf
Mã:
[...]listen = 127.0.0.1:8999[...]
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. Trước 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.Trước tiên, hãy tạo một tập lệnh init cho PHP-FPM:
Mã:
nano /etc/init.d/php-7.0.32-fpm
Mã:
#! /bin/sh### BEGIN INIT INFO# Cung cấp: php-7.0.32-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# Mặc định-Dừng: 0 1 6# Mô tả ngắn: khởi động php-7.0.32-fpm# Mô tả: khởi động daemon PHP FastCGI Process Manager### 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 () { 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 ] ; 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 -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 ;; force-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
Mã:
chmod 755 /etc/init.d/php-7.0.32-fpm
insserv php-7.0.32-fpm
Mã:
nano/lib/systemd/system/php-7.0.32-fpm.service
Mã:
[Unit]
Description=The PHP 7 FastCGI Process Manager
After=network.target
[Service]
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
[Cài đặt]
WantedBy=multi-user.target
Mã:
systemctl enable php-7.0.32-fpm.service
systemctl daemon-reload
Đối với các hệ thống có hệ thống init truyền thống, hãy chạy:
Mã:
/etc/init.d/php-7.0.32-fpm start
Mã:
/etc/init.d/php-7.0.32-fpm start
Đang khởi động php-fpm xong
Mã:
systemctl start php-7.0.32-fpm.service
Mã:
nano /opt/php-7.0.32/lib/php.ini
Mã:
[...]zend_extension=opcache.so
Kiểm tra phiên bản PHP:
Mã:
cd/opt/php-7.0.32/bin
./php --version
Xin lưu ý: Ảnh chụp màn hình là từ PHP 7.0.0, hướng dẫn được cập nhật liên tục cho các phiên bản PHP 7 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 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 là dành chophp-7.0.32.
4 Bật PHP 7 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.0.0) - 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.0.32/bin/php-cgi
[B]Đường dẫn đến thư mục php.ini:[/b]/opt/php-7.0.32/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 lệnh khởi tạo PHP-FPM:[/b]php-7.0.32-fpm
[B]Đường dẫn đến thư mục php.ini:[/b]/opt/php-7.0.32/lib
[B]Đường dẫn đến thư mục nhóm PHP-FPM:[/b]/opt/php-7.0.32/etc/php-fpm.d
5Liên kết
- PHP: http://www.php.net/
- ISPConfig: http://www.ispconfig.org/
- Debian: http://www.debian.org/