Thứ năm, 14/01/2016 | 00:00 GMT+7

Cách nâng cấp lên PHP 7 trên CentOS 7

PHP 7, được phát hành vào ngày 3 tháng 12 năm 2015, hứa hẹn sẽ cải thiện tốc độ đáng kể so với các version trước của ngôn ngữ, cùng với các tính năng mới như gợi ý kiểu vô hướng. Hướng dẫn này giải thích cách nhanh chóng nâng cấp web server Apache hoặc Nginx chạy PHP 5.x (bất kỳ bản phát hành nào) lên PHP 7, sử dụng các gói do cộng đồng cung cấp.

Cảnh báo: Như với hầu hết các bản phát hành ngôn ngữ version chính, tốt nhất nên đợi một chút trước khi chuyển sang PHP 7 trong version production . Trong khi đó, đây là thời điểm thích hợp để kiểm tra các ứng dụng của bạn về khả năng tương thích với bản phát hành mới, thực hiện các điểm chuẩn và tự làm quen với các tính năng ngôn ngữ mới.

Nếu bạn đã cài đặt phpMyAdmin để quản lý database , bạn nên đợi các gói CentOS PHP 7 chính thức trước khi nâng cấp, vì các gói phpMyAdmin chưa hỗ trợ nâng cấp. Nếu bạn đang chạy bất kỳ dịch vụ hoặc ứng dụng nào khác với user đang hoạt động, thì cách an toàn nhất là trước tiên hãy kiểm tra quá trình này trong môi trường tổ chức.

Yêu cầu

Hướng dẫn này giả định bạn đang chạy PHP 5.x trên CentOS 7, sử dụng mod_php kết hợp với Apache hoặc PHP-FPM kết hợp với Nginx. Nó cũng giả định bạn có một user không phải root được cấu hình với các quyền sudo cho các việc quản trị.

Quá trình cài đặt PHP 5 được ghi lại trong các hướng dẫn sau:

Đăng ký vào Kho lưu trữ Dự án Cộng đồng IUS

Vì PHP 7.x chưa được đóng gói trong repositories lưu trữ chính thức cho các bản phân phối chính, nên ta sẽ phải dựa vào nguồn của bên thứ ba. Một số repository cung cấp các file PHP 7 RPM. Ta sẽ sử dụng kho lưu trữ IUS .

IUS cung cấp một lệnh cài đặt để đăng ký vào repository của họ và nhập các khóa GPG liên quan. Đảm bảo rằng bạn đang ở trong folder chính của bạn và truy xuất tập lệnh bằng curl :

  • cd ~
  • curl 'https://setup.ius.io/' -o setup-ius.sh

Chạy tập lệnh:

  • sudo bash setup-ius.sh

Nâng cấp mod_php với Apache

Phần này mô tả quá trình nâng cấp cho hệ thống sử dụng Apache làm web server và mod_php để thực thi mã PHP. Thay vào đó, nếu bạn đang chạy Nginx và PHP-FPM, hãy chuyển sang phần tiếp theo.

Bắt đầu bằng cách xóa các gói PHP hiện có. Nhấn y và nhấn Enter để tiếp tục khi được yêu cầu .

  • sudo yum remove php-cli mod_php php-common

Cài đặt các gói PHP 7 mới từ IUS. , nhấn yEnter khi được yêu cầu .

  • sudo yum install mod_php70u php70u-cli php70u-mysqlnd

Cuối cùng, khởi động lại Apache để tải version mod_php :

  • sudo apachectl restart

Bạn có thể kiểm tra trạng thái của Apache, được quản lý bởi đơn vị httpd systemd , sử dụng systemctl :

  • systemctl status httpd

Nâng cấp PHP-FPM với Nginx

Phần này mô tả quá trình nâng cấp cho hệ thống sử dụng Nginx làm web server và PHP-FPM để thực thi mã PHP. Nếu bạn đã nâng cấp hệ thống dựa trên Apache, hãy chuyển sang phần Thử nghiệm PHP.

Bắt đầu bằng cách xóa các gói PHP hiện có. Nhấn y và nhấn Enter để tiếp tục khi được yêu cầu .

  • sudo yum remove php-fpm php-cli php-common

Cài đặt các gói PHP 7 mới từ IUS. , nhấn yEnter khi được yêu cầu .

  • sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd

Sau khi cài đặt xong, bạn cần thực hiện một vài thay đổi cấu hình cho cả PHP-FPM và Nginx. Như đã cấu hình , PHP-FPM lắng nghe các kết nối trên socket TCP local , trong khi Nginx mong đợi một socket domain Unix , socket này ánh xạ đến một đường dẫn trên hệ thống file .

PHP-FPM có thể xử lý nhiều group quy trình con. Như được cấu hình, nó cung cấp một group duy nhất có tên là www , được định nghĩa trong /etc/php-fpm.d/www.conf . Mở file này bằng nano (hoặc editor bạn muốn ):

  • sudo nano /etc/php-fpm.d/www.conf

Tìm khối chứa hàm listen = 127.0.0.1:9000 , khối này yêu cầu PHP-FPM lắng nghe địa chỉ loopback tại cổng 9000. Comment dòng này bằng dấu chấm phẩy và bỏ ghi chú listen = /run/php-fpm/www.sock a vài dòng dưới đây.

/etc/php-fpm.d/www.conf
; The address on which to accept FastCGI requests. ; Valid syntaxes are: ;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on ;                            a specific port; ;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on ;                            a specific port; ;   'port'                 - to listen on a TCP socket to all addresses ;                            (IPv6 and IPv4-mapped) on a specific port; ;   '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. ;listen = 127.0.0.1:9000 ; WARNING: If you switch to a unix socket, you have to grant your webserver user ;          access to that socket by setting listen.acl_users to the webserver user. listen = /run/php-fpm/www.sock 

Tiếp theo, hãy tìm khối chứa các giá trị listen.acl_users và bỏ ghi chú listen.acl_users = nginx :

/etc/php-fpm.d/www.conf
; When POSIX Access Control Lists are supported you can set them using ; these options, value is a comma separated list of user/group names. ; When set, listen.owner and listen.group are ignored ;listen.acl_users = apache,nginx ;listen.acl_users = apache listen.acl_users = nginx ;listen.acl_groups = 

Thoát và lưu file . Trong nano , bạn có thể thực hiện điều này bằng cách nhấn Ctrl-X để thoát, y để xác nhận và Enter để xác nhận tên file cần overrides .

Tiếp theo, hãy đảm bảo Nginx đang sử dụng đường dẫn socket chính xác để xử lý các file PHP. Bắt đầu bằng cách mở /etc/nginx/conf.d/default.conf :

  • sudo nano /etc/nginx/conf.d/php-fpm.conf

php-fpm.conf định nghĩa ngược dòng , có thể được tham chiếu bởi các chỉ thị cấu hình Nginx khác. Bên trong khối ngược dòng, sử dụng dấu # để comment ra server 127.0.0.1:9000; và bỏ ghi chú server unix:/run/php-fpm/www.sock; :

/etc/nginx/conf.d/php-fpm.conf
# PHP-FPM FastCGI server # network or unix domain socket configuration  upstream php-fpm {         #server 127.0.0.1:9000;         server unix:/run/php-fpm/www.sock; } 

Thoát và lưu file , sau đó mở /etc/nginx/conf.d/default.conf :

  • sudo nano /etc/nginx/conf.d/default.conf

Tìm một khối bắt đầu bằng location ~ \.php$ { . Trong khối này, hãy tìm chỉ thị fastcgi_pass . Comment hoặc xóa dòng này và thay thế nó bằng fastcgi_pass php-fpm , sẽ tham chiếu ngược dòng được xác định trong php-fpm.conf :

/etc/nginx/conf.d/default.conf
  location ~ \.php$ {       try_files $uri =404;       fastcgi_split_path_info ^(.+\.php)(/.+)$;       # fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;       fastcgi_pass php-fpm;       fastcgi_index index.php;       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;       include fastcgi_params;   } 

Thoát và lưu file , sau đó khởi động lại PHP-FPM và Nginx để các lệnh cấu hình mới có hiệu lực:

  • sudo systemctl restart php-fpm
  • sudo systemctl restart nginx

Bạn có thể kiểm tra trạng thái của từng dịch vụ bằng systemctl :

  • systemctl status php-fpm
  • systemctl status nginx

Thử nghiệm PHP

Với một web server được cấu hình và các gói mới được cài đặt, ta sẽ có thể xác minh PHP đang hoạt động. Bắt đầu bằng cách kiểm tra version PHP đã cài đặt tại dòng lệnh:

  • php -v
Đầu ra
PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies 

Bạn cũng có thể tạo một file thử nghiệm trong root tài liệu của web server . Mặc dù vị trí của nó phụ thuộc vào cấu hình server của bạn, nhưng folder root thường được đặt thành một trong các folder sau:

  • /var/www/html
  • /var/www/
  • /usr/share/nginx/html

Sử dụng nano , mở một file mới có tên là info.php trong folder root của tài liệu. Theo mặc định, trên Apache, nó sẽ là:

  • sudo nano /var/www/html/info.php

Trên Nginx, bạn có thể sử dụng:

  • sudo nano /usr/share/nginx/html/info.php

Dán mã sau:

info.php
<?php phpinfo(); 

Thoát khỏi editor , lưu info.php . Bây giờ, hãy tải địa chỉ sau vào trình duyệt của bạn:

http://server_domain_name_or_IP/info.php 

Bạn sẽ thấy trang thông tin PHP 7, trang này liệt kê version đang chạy và cấu hình. Khi bạn đã kiểm tra kỹ điều này, cách an toàn nhất là xóa info.php :

  • sudo rm /var/www/html/info.php

Đến đây bạn đã có một bản cài đặt PHP 7 đang hoạt động. Từ đây, bạn có thể cần xem bài đăng trên blog Chuẩn bị sẵn sàng cho PHP 7 của Erika Heidi và xem qua hướng dẫn di chuyển chính thức .


Tags:

Các tin liên quan

Cách nâng cấp lên PHP 7 trên Ubuntu 14.04
2015-12-15
Cách triển khai nhiều ứng dụng PHP bằng Ansible trên Ubuntu 14.04
2015-06-28
Cách triển khai ứng dụng PHP nâng cao bằng Ansible trên Ubuntu 14.04
2015-06-02
Cách triển khai một ứng dụng PHP cơ bản bằng Ansible trên Ubuntu 14.04
2015-04-14
Cách chia sẻ các phiên PHP trên nhiều server Memcached trên Ubuntu 14.04
2014-07-22
Cách sử dụng Framework PHP miễn phí béo
2014-03-06
Cách tự động hóa quy trình triển khai ứng dụng PHP bằng Capistrano trên Ubuntu 13
2014-02-26
Cách triển khai ứng dụng Kohana PHP trên VPS Debian 7 / Ubuntu 13 với Nginx và PHP-FPM
2013-12-30
Cách cài đặt và thiết lập Kohana, Khung phát triển ứng dụng web PHP
2013-12-30
Cách tùy chỉnh MediaWiki bằng tệp LocalSettings.php
2013-09-16