Hướng dẫn dùng php-fpm listen.backlog trong PHP
PHP-FPM là gì?PHP-FPM viết tắt của FastCGI Process Manager là chương trình có chức năng phiên dịch PHP khi chạy trang web cho web server. 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. Chức năng của PHP-FPM là gì? Cùng Mắt Bão tìm hiểu nhé! Show
Về cơ bản, PHP-FPM có chức năng tối ưu quá trình xử lý thông tin của các máy chủ web, hỗ trợ việc xử lý thông tin từ nhiều trang web trong cùng một khoảng thời gian một cách nhanh nhất. Với tốc độ xử lý PHP script nhanh cùng tính năng tối ưu hoá cho những trang web có kích thước lớn, giúp tăng lượng truy cập, PHP-FPM đang dần “soán ngôi” Apache + FastCGI quen thuộc. CGI là gì?CGI viết tắt của Common Gateway Interface là một phần mềm lập trình có chức năng kết nối giữa máy chủ và chương trình, dựa trên các định dạng đặc tả thông tin. Bên cạnh đó, phần mềm lập trình CGI còn có nhiệm vụ xây dựng chương trình từ các trang web. Sau khi nhận dữ liệu từ các trang web dưới định dạng HTML, phần mềm này sẽ truyền dữ liệu đó qua cổng thông tin Internet đến máy tính của người dùng. FastCGI là gì?FastCGI là một giao thức phát triển mở rộng từ CGI. Mục đích chính của FastCGI là để web server tối ưu trong việc xử lý. Đồng thời giúp máy chủ có thể xử lí nhiều yêu cầu từ trang web trong cùng một lúc. FastCGI sẽ chạy ít tốn tài nguyên CPU hơn và đạt tốc độ gần bằng DSO. FastCGI sử dụng được opcode cacher như eAccelerator để load web nhanh hơn. Các loại PHP Handler khácNếu chỉ biết về “PHP-FPM là gì?” hay “định nghĩa của CGI” hay “FastCGI là gì?”, bạn sẽ không thực sự hiểu cách thức hoạt động của nó. Để làm điều đó, bạn cần phải biết thêm một số PHP Handler khác. Bao gồm: DSO là gì?DSO được biết như là mod_php và là một phiên bản cấu hình cũ của PHP Handler. Tuy nhiên DSO lại là Handler nhanh nhất. Nó chạy PHP như một Apache Module. Điều đó có nghĩa là các PHP Script sẽ chạy dưới quyền của Apache user. Đó là user ‘nobody’. Nhược điểm của DSO:
SuPHP là gì?SuPHP cũng chạy PHP như CGI module. SuPHP khác với CGI vì PHP scripts được gọi từ web Server sẽ được chạy dưới quyền của user sở hữu PHP scripts đó. SuPHP thông thường là một handler mặc định và được khuyến cáo bởi cPanel để chạy PHP. Với suPHP bạn sẽ có thể thấy user nào đang chạy đoạn PHP script. Ưu điểm của suPHP:
Nhược điểm của suPHP:
So sánh PHP-FPM với CGIĐiểm khác nhau giữa CGI và PHP-FPM là gì? Cả PHP-FPM và CGI đều là những phần mềm có chức năng xây dựng trên web cho máy chủ khi truy cập internet được sử dụng tương đối phổ biến. Tuy nhiên, giữa 2 phần mềm này cũng có những ưu điểm và nhược điểm riêng như sau: Ưu và nhược điểm của PHP-FPM là gì?Ưu điểm của PHP-FPM là gì?Tính năng vượt trội nhất của FastCGI là hiệu suất cao, sự ổn định và tính bảo mật cao hơn nhiều so với CGI. Phần mềm này có thể chạy PHP Script dưới quyền sở hữu PHP Scripts đó. Ngoài ra, một ưu điểm khác khiến FastCGI ngày càng được sử dụng rộng rãi là khai thác rất ít tài nguyên CPU khi chạy chương trình. Vì vậy, FastCGI giúp tốc độ tải trang nhanh hơn, việc truy cập của người dùng trở nên dễ dàng, từ đó lưu lượng truy cập trang web sẽ tăng cao hơn. Nhược điểm của PHP-FPM là gì?Tuy nhiên, phần mềm này cũng có một khuyết điểm khá lớn chính là tiêu tốn dung lượng bộ RAM. Tuy nhiên, những lợi ích vượt trội mà phần mềm này mang lại là không thể phủ nhận, do đó nếu người dùng có nhu cầu tạo ra một trang web có tốc độ tải cực nhanh cùng tính bảo mật cao, lại ít tốn tài nguyên CPU thì FastCGI chính là một sự lựa chọn hàng đầu. Ưu và khuyết điểm của CGI so với PHP-FPM là gì?Ưu điểm của CGI so với PHP-FPM là gì?CGI là một cái tên quen thuộc trong số các ngôn ngữ lập trình hiện nay. Đây được xem như công cụ đầu tiên được sử dụng để tạo ra các trang web động. Có thể xem CGI như một giao thức có chức năng kết nối máy chủ với các chương trình bên ngoài. Một ưu điểm vượt trội của CGI là có thể chạy độc lập trên máy chủ sử dụng bất kỳ ngôn ngữ nào. Từ Python, Tcl, C/C + + đến cả Java (chạy PHP dưới quyền truy cập user ‘nobody’) Nhược điểm của CGI so với PHP-FPM là gì?Tuy nhiên, khuyết điểm lớn nhất của CGI khiến cho phần mềm này ngày càng mất đi vị thế của nó trên thị trường nằm ở hiệu suất thấp. Theo đó, khi sử dụng CGI, khi có yêu cầu truy cập trang web động, chương trình này sẽ thực hiện khởi tạo tiến trình mới. Điều này dẫn đến việc tiêu tốn tài nguyên CPU cũng như làm giảm tốc độ truy cập web. Tuy nhiên, các lập trình viên đã có thể khắc phục tình trạng này bằng cách tích hợp sẵn khả năng xử lý tạo nội dung web động, bên cạnh đó người dùng cũng có thể sử dụng các module hỗ trợ khác kèm theo khi kết nối với máy chủ web. Cài đặt NGINX và PHP-FPMTrước khi bắt đầu, nếu chưa thực sự hiểu về NGINX, bạn nên xem qua bài viết “NGINX là gì?“.
Cấu hình NGINXBước 1: Để cài đặt cấu hình NGINX người dùng mở file cấu hình của NGINX tại mục /etc/nginx/nginx.conf Bước 2: Xem thông số CPU Core theo công thức: cat /proc/cpuinfo |grep processor processor : 0 processor : 1 processor : 2 processor : 3 Bước 3: Dùng lệnhmax_clients = worker_processes * worker_connections để thay đổi thông số worker_processes bằng với số lượng CPU core trong server bạn cấu hình. Bước 4: Giới hạn kích thước từng phần của các http request bằng công thức: client_max_body_size 20m; client_body_buffer_size 128k; Bước 5: Điều chỉnh lại các file tĩnh qua công thức: location ~* .(jpg|jpeg|gif|png|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } Bước 6: Cài đặt chuyển sang sử dụng unix socket cho việc truyền tải thông tin: location ~* .php$ { fastcgi_index index.php; #Chinh tai day fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } Bước 7: Cài đặt bỏ cho phép truy cập các file hoặc thư mục ẩn. location ~ /. { access_log off; log_not_found off; deny all; } Cấu hình PHP-FPMBước 1: Để cài đặt cấu hình PHP-FPM, người dùng mở file cấu hình của PHP-FPM tại mục /etc/php-fpm.d. Bước 2: Điều chỉnh đường dẫn file sock theo công thức: listen = /var/run/php-fpm/php-fpm.sock user = site group = site request_slowlog_timeout = 5s slowlog = /var/log/php-fpm/slowlog-site.log listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 5 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = 4 pm.max_requests = 200 listen.backlog = -1 pm.status_path = /status request_terminate_timeout = 120s rlimit_files = 131072 rlimit_core = unlimited catch_workers_output = yes env[HOSTNAME] = $HOSTNAME env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp Bước 3: Xác định các thông số: pm.max_children ,pm.start_servers , pm.min_spare_servers và pm.max_spare_servers theo các công thức như sau:
Bảo mật PHP-FPM/Nginx trong môi trường Shared HostingVấn đề bảo mật PHP-FPM/Nginx trong môi trường Shared Hosting là một điều vô cùng quan trọng. Khi truy cập một trang web PHP, người dùng cần thiết lập một Pool cho từng website để các script PHP thực thi như một hoặc một nhóm người dùng được định nghĩa trong đó. Công việc này không chỉ có vai trò quan trọng trong quá trình bảo mật, mà còn đảm bảo quá trình sử dụng được dễ dàng, thuận lợi hơn. Vì khi tạo lập một Pool, người dùng có thể sử dụng tất cả tính năng trên suPHP cho PHP-FPM/Nginx. Bạn không cần cài đặt bất kỳ FTP nào, cũng như những sự cố bất ngờ có thể xảy ra do sử dụng các script PHP không thuộc sở hữu của một hoặc một nhóm người dùng riêng biệt. Bạn cũng nên tìm hiểu thêm về các chuyên mục sau:
Thực tế hiện nay, mô hình Shared Hosting chỉ phù hợp với các landing page. Do đó nếu bạn đang sử dụng Shared Hosting cho website của mình, Mắt Bão khuyên bạn nên chuyển qua mua Cloud Hosting. Bởi Cloud Hosting bảo mật hơn Shared Hosting và khả năng mở rộng, up-time cũng tốt hơn nhiều so với Shared Hosting. Tổng kết PHP-FPM là gì?Trên thị trường ngày nay, có rất nhiều các ngôn ngữ lập trình khác nhau, tuỳ theo nhu cầu sử dụng cũng như cấu hình máy mà người dùng cần có sự lựa chọn sao cho phù hợp và đạt hiệu quả tối ưu nhất. Với PHP-FPM, việc giải bài toàn “phiên dịch” ngôn ngữ và tốc độ tải trang đã không còn là việc quá xa vời. Đó là lý do vì sao các nhà cung cấp dịch vụ cho thuê máy chủ hiện nay đều tích hợp PHP-FPM vào server của mình. Qua bài viết trên, hy vọng các bạn có thể rút ra cho mình những kiến thức cần thiết về PHP-FPM cũng như những thủ thuật nhằm tối ưu hoá trang web của mình dựa trên phần mềm này! |