PHP-FPM (FastCGI Process Manager) là một sự thay thế PHP FastCGI để thực hiện một số tính năng bổ sung hữu ích cho các trang web có bất kỳ kích thước nào, đặc biệt là các trang có lượng truy cập lớn. PHP-FPM được hình thành dựa trên sự mở rộng của CGI và hiện đang được đông đảo người dùng lựa chọn.
Điều kiện để cài đặt Php-Fpm
- Một Vps/ Dedicated server mới
- Đã cài đặt Hệ điều hành CentOS
- RAM tối thiểu 1GB
- HDD/SSD tối thiểu 15GB
- Đặc quyền đăng nhập Root
- Đã cài đặt Nginx trên CentOS
Trong bài viết này, chúng tôi sẽ hướng dẫn cài đặt và cấu hình PHP, PHP-FPM 7.3 trên CentOS 7.
Cập nhật hệ thống
Cập nhật các gói cài đặt trong kho lưu trữ bằng lệnh:
# yum -y update
-y là một tham số tùy chọn. Nó phục vụ để tránh các câu hỏi xác nhận ở các bước tiếp theo.
Cài đặt gói bổ sung EPEL
PHP-FPM không có sẵn trong CentOS, vì vậy bạn cần cài đặt EPEL (Extra Packages for Enterprise Linux) có sẵn trên máy chủ của mình. EPEL được sử dụng miễn phí và cung cấp nhiều gói mã nguồn mở. Ở bước này chúng ta cần cài đặt 2 repositories.
Cái đầu tiên là EPEL, Chạy lệnh sau:
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Cái thứ hai là REMI, Chạy lệnh sau:
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Cài đặt Gói yum-utils
Bây giờ chúng ta cần cài đặt gói yum-utils bằng cách chạy lệnh:
# yum install yum-utils
Cài đặt Php và Php-Fpm
Ở bước này chúng ta sẽ cài đặt PHP, PHP-FPM 7.3. Trước tiên cần Vô hiệu hóa phiên bản PHP 5.4 mặc định bằng cách chạy lệnh:
# yum-config-manager --disable remi-php54
Tiến hành cài đặt PHP 7.3, chạy lệnh:
# yum-config-manager --enable remi-php73
Ghi chú: Nếu muốn chạy các phiên bản PHP khác thì chạy lệnh tương ứng: sudo yum-config-manager --enable remi-php71 sudo yum-config-manager --enable remi-php72
Bây giờ cài đặt các mô-đun cần thiết cho PHP 7.3:
# yum -y install php php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-pdo php-pecl-apcu php-pecl-apcu-devel
Quản lý và tác vụ Php-Fpm
Dừng PHP-FPM bằng lệnh sau:
# systemctl stop php-fpm
Khởi động lại PHP-FPM bằng lệnh sau:
# systemctl restart php-fpm
Kiểm tra trang thái PHP-FPM bằng lệnh sau:
# systemctl status php-fpm
Để kiểm tra phiên bản PHP đã cài đặt, chạy lệnh:
# php -v
Cấu hình Php-Fpm
Mở tệp www.conf:
# nano /etc/php-fpm.d/www.conf
Tìm dòng:
; RPM: apache Choosed to be able to access some dir as httpd user = apache ; RPM: Keep a group allowed to write in log dir. group = apache
Đổi apache sang nginx
; RPM: apache Choosed to be able to access some dir as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx
Tìm dòng:
;listen.owner = nobody ;listen.group = nobody ;listen.mode = 0660
Đổi nobody sang nginx và bỏ dấu ( ; ) đầu câu:
listen.owner = nginx listen.group = nginx listen.mode = 0660
Tìm dòng:
listen = 127.0.0.1:9000
Đổi thành:
listen = /var/run/php-fpm/php-fpm.sock
Sau khi cấu hình xong, bấm ctrl+ O và Enter để lưu lại, bấm ctrl+ X để thoát.
Cấu hình Php
Mở tệp php.ini bằng lệnh sau:
# nano /etc/php.ini
Tìm dòng:
;cgi.fix_pathinfo=1
Đổi thành:
cgi.fix_pathinfo=0 (ngăn chặn người ngoài thực hiện các yêu cầu không được phép từ PHP).
Tìm dòng:
;date.timezone =
Đổi thành:
date.timezone = Asia/Ho_Chi_Minh
Tìm dòng:
memory_limit = 128M
Đổi thành:
memory_limit = 256M (thông số này phù hợp với WordPress, nếu là Magento thì tăng lên 2048)
Tìm dòng:
upload_max_filesize = 2M
Đổi thành:
upload_max_filesize = 100M (tùy chỉnh tăng giới hạn tải lên tập tin trong php)
Tìm dòng:
expose_php = On
Đổi thành:
expose_php = Off (ẩn php version khi dùng lệnh curl -I http://example.com)
Tìm dòng:
; max_input_vars = 1000
Đổi thành:
max_input_vars = 5000 (thông số này phù hợp với WordPress & WPML)
Sau khi cấu hình xong, bấm ctrl+ O và Enter để lưu lại, bấm ctrl+ X để thoát.
Cấu hình Opcache
Mở thư mục Opcache:
# nano /etc/php-zts.d/10-opcache.ini
Tìm dòng:
;opcache.save_comments=1
Bỏ dấu ( ; ) đầu câu:
opcache.save_comments=1
Sau khi cấu hình xong, bấm ctrl+ O và Enter để lưu lại, bấm ctrl+ X để thoát.
Sau khi hoàn tất các cấu hình, khởi động PHP bằng lệnh sau:
# systemctl start php-fpm
Kích hoạt chế độ tự động bật lại php-fpm sau khi reboot máy chủ:
# systemctl enable php-fpm
Kiểm tra tình trạng Php
Tiếp theo, mở tệp trong thư mục /etc/nginx/conf.d:
# nano /etc/nginx/conf.d/default.conf
Xoá toàn bộ nội dung bên trong và thay thế bằng nội dung sau:
server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.php index.html index.htm; location / { # try_files $uri $uri/ =404; #try_files $uri $uri/ /index.php?$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Lưu ý: Các chữ tô màu có thể cần thay đổi.
Sau khi thay đổi xong, bấm ctrl+ O và nhấn Enter để lưu lại, bấm ctrl+ X để thoát khỏi bảng điều khiển Linux.
Khởi động lại Nginx để áp dụng cấu hình:
# systemctl restart nginx
Tiếp theo, thay thế quyền sở hữu thư mục mặc định của Nginx:
# sudo chown -R nginx.nginx/usr/share/nginx/html/
Lệnh trên thay đổi quyền sở hữu gốc của Nginx sang tên người dùng và nhóm có cùng tên là nginx. Bạn có thể thay đổi tên nếu muốn.
Bây giờ tạo một tệp info.php tương úng với đường dẫn /usr/share/nginx/html/info.php:
# nano /usr/share/nginx/html/info.php
Dán nội dung bên dưới vào tệp info.php:
<?php phpinfo();
Sau khi nhập nội dung xong, bấm ctrl+ O và nhấn Enter để lưu lại, bấm ctrl+ X để thoát khỏi bảng điều khiển Linux.
Để kiểm tra, truy cập theo đường dẫn http://server_IP_or_domain_name/info.php
Sau khi kiểm tra thông số PHP, tốt nhất là xóa tệp info.php vì nó chứa thông tin nhạy cảm về môi trường PHP và máy chủ CentOS của bạn.
Bạn có thể sử dụng rm để xóa:
# rm /usr/share/nginx/html/info.php
Bạn luôn có thể tạo lại tệp nếu sau này cần.
Kết thúc !
Nếu có ý kiến đóng góp, vui lòng để lại bình luận bên dưới.