Cấu hình webserver với FastCgi ExternalServer
Cài đặt apacheCài đặt apache 2.2
Cấu hình biên dịch mã nguồn:
./configure \
--prefix=/usr/local/apache22 \
--enable-vhost-alias \
--enable-so
Enable-so: cho phép load thư viện động
Biên dịch module mod_fastcgi
Mod_fastcgi là một module của apache được dùng để chạy các sctipt và chương trình CGI
Phiên bản mới nhất của mod_fastcgi là 2.4.6 chúng ta có thể download phiên bản này trên website http://www.fastcgi.com/
Biên dịch mod_fastcgi
Sau khi download và giải nén mã nguồn cài đặt của mod_fastcgi, ta di chuyển vào thư mục chứa mã nguồn cài đặt và tạo file biên dịch.
tar -zxvf mod_fastcgi-current.tar.gz
cd mod_fastcgi-2.4.6/
cp Makefile.AP2 Makefile
cp Makefile.AP2 Makefile
biên dịch mã nguồn
make top_dir=/usr/local/apache22
make install top_dir=/usr/local/apache22
sau khi cài đặt thành công chúng ta sẽ có được file “mod_fastcgi.so” nằm trong thư mục “moules” của apache.
Để apache chạy với fastcgi chúng ta cần thêm dòng bên dưới vào file cấu hình httpd.conf của apache
LoadModule fastcgi_module modules/mod_fastcgi.so
Sau đó khởi động lại dịch vụ httpd để hoàn tất
/usr/local/apache22/bin/apachectl restart
Cài đặt php-fpm
Các phiên bản từ 5.2 trở về trước không hỗ trợ php-fpm. Nên để cài đặt php-fpm chúng ta phải sử dụng các phiên bản php lớn hơn 5.2 . trong bài viết sử dụng phiên bản php 5.3
Để tải các phiên bản của php chúng ta có thể vào trang
Sau tải xong php5.3 chúng ta cần giải nén mã nguồn php5.3 và di chuyển vào thư mục chứa mã nguồn để biên dịch
Cấu hình biên dịch
./configure --prefix=/usr/local/php53 --enable-fpm
Tạo file khởi động php-fpm
Di chuyển vào thư mục chứa mã nguồn biên dịch php5.3
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod a+x /etc/init.d/php-fpm
/sbin/chkconfig --add php-fpm
/sbin/chkconfig php-fpm on
Khởi động dịch vụ php-fpm
Service php-fpm restart
Cấu hình apche chạy với dịch vụ php-fpm
Php-fpm là một server riêng biệt và chạy độc lập với webserver được dùng để thông dịch các script php cho webserver httpd
Trên các hệ thống unix đưa ra cho chúng ta hai cách để webserver giao tiếp với php-fmp.
· Dùng domain socket
· Dùng tcp/ip socket
Cấu hình dùng TCP/IP socket
Cấu hình apache
Thêm đoạn bên dưới vào file cấu hình virtual host và save lại
<IfModule mod_fastcgi.c>
Alias /php.fcgi /usr/local/apache22/htdocs/phiuit/fcgi-bin/php.fcgi
FastCGIExternalServer /usr/local/apache22/htdocs/phiuit/fcgi-bin/php.fcgi -flush -host 127.0.0.1:9000
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php.fcgi
</IfModule>
Cấu hình php-fpm
[phiuit]
listen = 127.0.0.1:9000
listen.owner = phiuit
listen.group = phiuit
listen.mode = 0660
user = phiuit
pm = ondemand
pm.max_children = 20
pm.max_requests = 1024
khởi động lại dịch vụ webserver và php-fpm để hoàn tất
Service php-fpm restart
Service httpd restart
Cấu hình dùng domain socket
Khái niệm domain soket:
là một file đặt biệt trên hệ thống unix với 2 processes kết nối đến chúng tất cả các dữ liệu được sent đến file từ một socket thì sẽ được nhận bởi socket còn lại. domain socket thì được đánh giá là nhanh hơn so với TCP/IP socket , nhưng không có khả năng chống overhead so với TCP/IP socket
Cấu hình apache
Thêm đoạn bên dưới vào file cấu hình virtual host và save lại
<IfModule mod_fastcgi.c>
Alias /php.fcgi /usr/local/apache22/htdocs/phiuit/fcgi-bin/php.fcgi
FastCGIExternalServer /usr/local/apache22/htdocs/phiuit/fcgi-bin/php.fcgi -flush -socket /tmp/php-fpm.sock
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php.fcgi
</IfModule>
Cấu hình php-fpm
[phiuit]
listen = /tmp/php-fpm.sock
listen.owner = phiuit
listen.group = phiuit
listen.mode = 0660
user = phiuit
pm = ondemand
pm.max_children = 20
pm.max_requests = 1024
khởi động lại dịch vụ webserver và php-fpm để hoàn tất
Service php-fpm restart
Service httpd restart
Kiểm tra
Tạo file info.php đặt trong thư mục home của user với nội dung bên dưới
<?php>
phpinfo();
?>
Nếu đúng sẽ cho ta kết quả như bên dưới
Các bạn có thể xem các lab liên quan đến cài đặt các dịch vụ trên CentOS
Last edited by a moderator: