Wednesday, September 25, 2013

CGI,SuPHP,FastCGI PHP handler là gì ?

.PHP handler là gì ?

Khi chạy một site PHP, server phải cần thông dịch PHP và tạo ra trang web khi người dùng truy cập vào. Tùy vào từng người dùng, thời gian địa điểm mà webiste có thể được tạo ra khác nhau. Code PHP được phiên dịch dựa vào bộ thư viện PHP như PHP4 và PHP5. PHP handler sẽ điều khiển quá trình những gì load lên từ bộ thư viện PHP

Có nhiều PHP Handler hiện nay được sử dụng như DSO, CGI, SuPHP, FastCGI.Mỗi handler có những tác động đến performance của Apache khác nhau bởi vì nó xác định Apache sẽ dùng PHP như thế nào.

Có một vấn đề quan trọng là tùy thuộc vào tình hình (máy chủ, CPU, Ram, Nhu cầu, mục đích) mà chúng ta sẽ chọn handler thích hợp. Không có handler nào hoàn toàn tốt hơn cái nào. Vì vậy phải lựa chọn cho phù hợp.

Hiện tại thì FastCGI đang được dùng khá phổ biến.

Sau đây sẽ đề cập tổng quan về tất cả các PHP Handler. So sánh hiệu năng của các handler này.

2. Danh sách các PHP Handler

++ DSO

Được biết như là mod_php. Mặc dù được xem như là một phiên bản cấu hình cũ nhưng mặc nhiên nó 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'.'

DSO có 2 điểm yếu:

a> Tất cả file được tạo ra từ PHP script sẽ được sở hửu bổi user 'nobody'. Chúng không có khả năng đọc được từ Web. Điều này khá phổ biến với người dùng Wordpress. Nếu họ dùng tính năng upload file thông qua Wordpress interface hay dùng tính năng auto update thì sẽ bị fail với DSO.

b> Về vấn đề bảo mật. Việc tạo file sẽ dưới danh nghĩa người dùng 'nobody'. Nếu một hacker tìm được một lổ hổng trong PHP script, họ có thể thực thi một file cùng một quyền hạn như những file hệ thống mà được đánh dấu sở hữu là 'nobody'. Điều này làm hacker có khả năng chỉnh sửa các file hệ thống khác. Để chống lại điều này thì phải thường xuyên update PHP lên các phiên bản mới nhất.

++ CGI

CGI handler sẽ chạy PHP script như một CGI module. Nó vẫn chạy tiến trình PHP dưới danh nghĩa của user 'nobody'. CGI được xem như là một hình thức dự phòng khi DSO không có hiệu lực. Phương pháp này không nhanh cũng không an toàn, dù cho SuExec có được bật hay không.

++SuPHP

SuPHP cũng chạy PHP như CGI module. Nó khác với CGI là khi 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 bởi vì bạn sẽ có thể thấy user nào đang chạy đoạn PHP script.

SuPHP có một điểm lợi là khi bạn sử dụng công cụ upload file lên website của bạn, các file này sẽ được phân đúng quyền hạn của user đó. Upload và một vài tính năng khác của WordPress không hoạt động nếu không sử dụng suPHP hoặc FastCGI

SuPHP cũng cung cấp một lợi thế bảo mật hơn là DSO hay CGI. Tất cả những PHP Scripts không thuộc một user cụ thể nào đó sẽ không thể nào thực thi được hoặc user này sẽ không thể nào thực thi được các PHP Scripts của user khác. Điều này có nghĩa là khi một tài khoản nào đó bị đánh cắp, các scripts cũng không thể nào lây lan sang các tài khoản khác được.

Điểm yếu của suPHP là sử dụng CPU cao. Thêm vào đó, bạn không thể sử dụng Opcode Cache (như xCache) với suPHP. Khi sử dụng suPHP nếu CPU load cao bạn có thể chuyển lại dùng DSO hoặc FastCGI.
++FastCGI

FastCGI là một giải pháp thay thế có hiệu suất cao thay cho CGI. Nó giống suPHP ở chỗ sẽ chạy PHP Script dưới quyền sở hữu PHP Scripts đó. Điểm khác là 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.

Điểm yếu của FastCGI là sử dụng Ram nhiều. Nếu muốn có tốc độ nhanh và bảo mật tốt ít tốn CPU, ta có thể xem xét sử dụng FastCGI.
 

Related Posts:

  • Install phalcon with MAMP This is instructions on how to compile and install the phalcon extension on Mac OS X (Lion), along with command-line tools. Everything will be done through the terminal, except installation of Xcode and the comma… Read More
  • Cách sử dụng /etc/hosts.allow và /etc/hosts.deny Hai tập tin này định nghĩa các quy tắt(luật) truy cập vào hệ thống ở tầng ứng dụng mạng. Dựa trên điều khiển TCPWappers và tôi thường gọi nó là một dạng tường lửa ở tầng ứng dụng. Số khác thì gọi là ACL(ACCESS CONTROL LIST).… Read More
  • Compiling and installing php 5.4.15 and httpd 2.4.4 from sourceHigh-performance PHP on apache httpd 2.4.x using mod_proxy_fcgi and php-fpmBài viết sau sẽ hướng dẫn các bạn build Linux Web server nâng cao bao gồm MySQL, php và apache(LAMP) từ source trên CentOS 6.41. Cài đặt MySQLXem chi … Read More
  • Configure apache to use php-fpm Apache httpd 2.4.x sử dụng mod_proxy_fcgi và php_fpm. Chi tiết bên dưới sẽ hướng dẫn bạn cấu hình php-fpm virtual host. Code: [root@linux24h httpd.d]# cd /usr/local/php/etc [root@linux24h e… Read More
  • Định dạng, format ổ cứng trên Linux1. Sử dụng lệnh trên Linux Trên Linux, sử dụng lệnh fdisk để phân chia partition của ổ cứng, mkfs để format, mount để gắn một partition đã format vào một mount point, chỉnh sửa fstab để Linux có thể tự động mount khi boo… Read More