Php7 đã chính thức ra mắt với sự cả thiện về tốc độ ít nhất là 2 lần và tiết kiệm ram hơn. Tuy nhiên trước khi nâng cấp bạn nên xem thêm changelog về extension của php7 dưới đây xem coi website mình có tương thích không nhé !

php7

Removed Extensions

  • ereg
  • mssql
  • mysql
  • sybase_ct

Vậy những website nào có extension trên bạn không thể nâng cấp. Tất nhiên vẫn có thể thêm các extension trên vào php7 tuy nhiên mình sẽ hướng dẫn ở bài sau. Bây giờ bắt đầu việc compilation  từ source cho php-fpm 7 nào.

1. Cài các gói cần thiết cho việc compilation php-fpm7.

Các bạn dùng lệnh yum để cài đặt các gói tin trên hệ điều hành centos :

yum groupinstall 'Development Tools'
yum install libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel

2. Tải source php7.

Bạn truy cập vào link để chọn mirror để tải file cài đặt về hoặc bạn có thể tải trực tiếp bằng lệnh sau đây:

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

3. Compilation php-fpm7.

Mình khuyên các bạn trước khi compilation php cho một mã nguồn nào bạn nên xem coi mã nguồn cần những extension nào để compilation cho tối ưu dưới đây là một số link cho các mã nguồn phổ biến :

  • WordPress xem tại đây
  • Xenforo xem tại đây

Mình hướng dẫn compilation php7 hỗ trợ cho nhiều mã nguồn nên php sẽ không được tối ưu :

  • Để hiểu rõ các extension mà phiên bản php hiện hỗ trợ.
./configure --help
  • Tiến hành compilation các extension cần thiết cho php.
./configure  '--prefix=/opt/php-7' '--with-zlib-dir' '--with-freetype-dir' '--with-libxml-dir=/usr' '--enable-calendar' '--with-curl' '--with-mcrypt' '--with-gd' '--enable-inline-optimizatio '--with-bz2' '--with-zlib' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-pcntl' '--enable-mbregex' '--with-mhash' '--enable-zip' '--with-pcre-regex' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--with-openssl' '--with-fpm-user=nginx' '--with-fpm-group=nginx' '--with-libdir=lib64' '--enable-ftp' '--enable-opcache' '--enable-fpm' '--enable-mbstring'

Tùy chọn ‘–enable-fpm’ để yêu cầu phiên bản php hiện tại làm việc với php-fpm. Nếu như bản muốn xử dũng php-fpm với Apache thì dùng tùy chọn–with-fpm-user=apache’ và –with-fpm-group=apache’ còn nếu muốn xử dụng với nginx thì dùng ‘–with-fpm-user=nginx’ and –with-fpm-group=nginx’ . Ngoài ra còn có tùy chọn ‘–enable-opcache’ mình sẽ hướng các bạn cấu hình và tìm hiểu thêm ở bài hướng dẫn khác.

  • Hoàn tất cài đặt với lệnh sau
make
make install

4. Config cho php-fpm7.

  • Copy các file cấu hình cần thiết.
cp /usr/local/src/php7-build/php-7.0.6/php.ini-production /opt/php-7/lib/php.ini
cp /opt/php-7.0.6/etc/php-fpm.conf.default /opt/php-7/etc/php-fpm.conf
  • Mở file php-fpm.conf chỉnh lại các thông tin sau:
vi /opt/php-7/etc/php-fpm.conf
[...]
pid = run/php-fpm.pid
[...]
user = nginx
group = nginx
[...]
listen = 127.0.0.1:8999
[...]
include=/opt/php-7/etc/pool.d/*.conf
  • Tạo thư mục chứa file cấu hình.
mkdir /opt/php-7/etc/pool.d
  • Copy init script cho php-fpm.
cp /usr/local/src/php7-build/php-7.0.3/sapi/fpm/init.d.php-fpm /etc/init.d/php-7
chmod 755 /etc/init.d/php-7

5. Khởi động php-fpm.

chkconfig --levels 235 php-7 on
/etc/init.d/php-7 start

Vậy là bạn đã hoàn tất compilation php-fpm 7 . Nếu bạn nào gặp lỗi khi cài đặt có thể để lại comment ở dưới để mình hỗ trợ.

Comments

  1. nhật

    Mình đã compile như trên và thành công nhưng mình ko thể để nginx webserver load php page!? như vậy là sao! mình đang cần gấp lắm! Ad có thể rep giúp mình được không!

    1. Quí Trần

      Câu hỏi của bạn chung chung quá nên khó mà trả lời cho bạn được, mình cũng thử làm theo hướng dẫn trên thì website mình vẫn hoạt động được, trong trường hợp này, bạn có thể post error log của nginx lên đây mình xem thử nhé.

Leave a Reply

Your email address will not be published. Required fields are marked *