1. Vì sao cần hiểu PHP-FPM trước khi cài đặt?
Rất nhiều sự cố Web Server có biểu hiện như:
Website chậm, timeout
Lỗi 502 Bad Gateway
PHP lỗi nhưng lại sửa Nginx
Restart “đại” cả server để xử lý sự cố
Nguyên nhân thường không nằm ở bản thân PHP, mà ở:
Không hiểu rõ PHP-FPM đang làm gì, chạy ở đâu và tương tác với Nginx như thế nào.
Trước khi cài PHP, cần xác định đúng:
PHP không phải là web server
PHP không chạy trực tiếp cho người dùng
PHP-FPM là dịch vụ backend, không expose ra Internet
2. PHP-FPM là gì?
PHP-FPM (FastCGI Process Manager) là:
Trình quản lý tiến trình PHP
Chạy PHP dưới dạng service
Nhận request từ web server (Nginx)
Trả kết quả xử lý về cho Nginx
Trong kiến trúc hiện đại:
Nginx xử lý web – PHP-FPM xử lý logic – mỗi bên làm đúng việc của mình.
3. Vị trí của PHP-FPM trong kiến trúc Web Server
Nhắc lại kiến trúc đã thống nhất:
Quan trọng:
PHP-FPM không nghe port public
Chỉ Nginx được phép giao tiếp với PHP-FPM
Người dùng không truy cập trực tiếp PHP-FPM
4. Nhiệm vụ chính của PHP-FPM
PHP-FPM chịu trách nhiệm:
Thực thi mã PHP
Quản lý pool tiến trình PHP
Kiểm soát tài nguyên CPU, RAM cho PHP
Tách biệt các website (khi cần)
PHP-FPM không:
Phục vụ file tĩnh
Xử lý SSL
Phân biệt domain
5. Vì sao không chạy PHP trực tiếp trong Nginx?
Một số người mới triển khai hay thắc mắc:
“Sao không cho Nginx chạy PHP luôn cho gọn?”
Lý do không nên:
Nginx không được thiết kế để chạy PHP
Khó kiểm soát tài nguyên
Dễ gây crash toàn web server
Khó debug khi có lỗi
PHP-FPM giúp:
Tách biệt lỗi PHP khỏi Nginx
Restart PHP mà không ảnh hưởng Nginx
Vận hành an toàn hơn rất nhiều
6. PHP-FPM giao tiếp với Nginx như thế nào?
Có hai cách giao tiếp phổ biến:
6.1. Unix Socket (khuyến nghị)
Giao tiếp nội bộ nhanh
Ít overhead
Bảo mật hơn
Ví dụ:
6.2. TCP Port
Dễ debug
Dùng khi PHP-FPM chạy trên server khác
Ví dụ:
Trong loạt bài này:
Ưu tiên dùng Unix socket cho server đơn lẻ.
7. PHP-FPM pool – khái niệm rất quan trọng
7.1. Pool là gì?
Pool là:
Một tập tiến trình PHP
Có cấu hình riêng
Có user/group riêng (khi cần)
Mặc định:
Có pool
www
7.2. Vì sao pool quan trọng?
Pool quyết định:
Số request PHP xử lý đồng thời
Mức sử dụng RAM
Cách phân tách website
Trong hệ thống nhiều website:
Pool là công cụ quan trọng để cô lập sự cố.
8. Các chế độ quản lý process của PHP-FPM
PHP-FPM hỗ trợ nhiều mode, phổ biến nhất:
dynamic(mặc định)ondemandstatic
Trong production thông thường:
Dynamic là lựa chọn an toàn và cân bằng nhất.
Việc chọn mode sẽ được phân tích chi tiết ở bài cấu hình PHP-FPM.
9. Những lỗi phổ biến liên quan đến PHP-FPM
502 Bad Gateway:
PHP-FPM không chạy
Socket sai
Website chậm:
Pool quá ít process
PHP bị nghẽn
Lỗi permission:
User/group không khớp
Socket không cho Nginx truy cập
Hầu hết các lỗi này:
Không giải quyết bằng cách restart Nginx.
10. Nguyên tắc triển khai PHP-FPM trong loạt bài này
Chúng ta sẽ tuân theo:
Cài PHP-FPM tách biệt
Dùng Unix socket
Không expose PHP-FPM ra Internet
Cấu hình rõ ràng, dễ đọc
Có thể chạy nhiều version PHP khi cần
11. Chuẩn bị trước khi cài PHP-FPM
Sau bài này, bạn cần thống nhất:
Website nào cần PHP
Version PHP phù hợp
Số lượng website dùng PHP
Có cần tách pool hay không
Việc này giúp:
Không cài PHP dư thừa
Không cấu hình sai từ đầu
12. Bài tiếp theo
Trong Bài 26, chúng ta sẽ bắt đầu triển khai cụ thể:
Cài đặt PHP theo phiên bản khuyến nghị
Bài này sẽ hướng dẫn:
Chọn version PHP phù hợp
Cài PHP-FPM đúng cách
Tránh xung đột package
- Đăng nhập để gửi ý kiến
