Cài đặt Nginx CentOS/RHEL FastCGI PHP

Tác giả server360, T.Chín 21, 2015, 05:45:03 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Cài đặt Nginx CentOS/RHEL FastCGI PHP


Nginx là phần mềm máy chủ web, hiện khá ổn định. Hiện đang được sử dụng trên 50 triệu tên miền Internet khác nhau, chiếm khoảng 10% toàn bộ lưu lượng Internet, theo các nhà phát triển phần mềm ước tính.Bài viết sau đây sẽ hướng dẫn bạn cách chi tiết để cài đặt cấu hình Nginx trên hệ điều hành Linux cho dòng Centos/Redhat/RHEL. Kết hợp với việc sử dụng FastCGI để biên dịch PHP script.



Bước đầu tiên khi bạn muốn cài Nginx, bạn nên kiểm tra các phần mềm máy chủ web khác cùng tính năng. Và có thể tắt chúng đi, hoặc Remove hoàn toàn nếu bạn có ý định chuyển hẳn sang dùng Nginx.

Thường với Centos thì máy chủ web hay dùng là Apache, hoặc có thể là Litespeed, Lighhttpsd. Bạn tắt các phần mềm này bằng các câu lệnh sau:

Mã nguồn [Chọn]
service httpsd stop
service lsws stop
service lighhttpsd stop

Bước 1: Bật EPEL repo

Vì Nginx hiện chưa có trên thư viện phần mềm của Centos, nên bạn cần phải bật chức năng này để tiến trình YUM có thể nhận ra được nơi chứa Nginx để tiền hành cài đặt. Để kích hoạch EPEL repo bạn dùng lệnh sau:

Mã nguồn [Chọn]
rpm -Uvh [url=https://download.fedora.redhat.com/pub/epel/5/]https://download.fedora.redhat.com/pub/epel/5/[/url]$(uname -m)/epel-release-5-3.noarch.rpm
Bước 2: Cài đặt Nginx

Mã nguồn [Chọn]
#yum install nginx
Thông tin chi tiết về tiến trình cài đặt có dạng sau:

Mã nguồn [Chọn]
Loaded plugins: downloadonly, fastestmirror, priorities, protectbase
Loading mirror speeds from cached hostfile
 * epel: archive.linux.duke.edu
 * base: ftp.linux.ncsu.edu
 * updates: centos.mirror.nac.net
 * addons: mirror.cs.vt.edu
 * extras: centos.mirror.nac.net
0 packages excluded due to repository protections
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 0:0.6.34-1.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================================================
 Package                             Arch                                 Version                                    Repository                          Size
==============================================================================================================================================================
Installing:
 nginx                               x86_64                               0.6.34-1.el5                               epel                               319 k
Transaction Summary
==============================================================================================================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total size: 319 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : nginx                                             [1/1]
Installed: nginx.x86_64 0:0.6.34-1.el5
Complete!

Sau khi hoàn thành tiến trình cài đặt, Nginx sẽ tạo ra một số thông số cơ bản được lưu trữ trong các thành phần sau:

  • File cấu hình chung của Nginx : /etc/nginx/conf.d/default.conf
  • File cấu hình cho chứng thư SSL nếu website sử dụng: /etc/nginx/conf.d/ssl.conf
  • File cấu hình cho dịch vụ chia server thành nhiều hosting: /etc/nginx/conf.d/virtual.conf
  • Thư mục gốc lưu trữ các file web của bạn: /usr/share/nginx/html

Bước 3: Cấu hình PHP để biên dịch script thông qua FastCGI

Chạy câu lệnh sau để cài đặt và cấu hình PHP với các modules cần thiết

Mã nguồn [Chọn]
#yum install php-pear-Net-Socket php-pear php-common php-gd php-devel php php-mbstring php-pear-Mail php-cli php-imap php-snmp php-pdo php-xml php-pear-Auth-SASL php-ldap php-pear-Net-SMTP php-mysql
Cài đặt Spawn-FCGI là một chương trình đơn giản để quản lý việc sinh ra tiến trình hoạt động trong FastCGI

Mã nguồn [Chọn]
#yum install spawn-fcgi
Lưu ý: Một số trường hợp, khi bạn cài server tại Việt Nam có thể không cài đặt được spawn-fcgi theo cách trên, vì trên kho dữ liệu phần mềm của các Mirror tại Việt Nam không có, bạn có thể chạy lệnh kết hợp như sau:

Mã nguồn [Chọn]
#yum install nginx php-cli php make automake gcc gcc-c++ spawn-fcgi wget
Tiếp theo, cài tập lệnh điều khiển spawn-fcgi bằng dòng lệnh sau:

Mã nguồn [Chọn]
# wget [url=https://bash.cyberciti.biz/dl/419.sh.zip]https://bash.cyberciti.biz/dl/419.sh.zip[/url]
# unzip 419.sh.zip
# mv 419.sh /etc/init.d/php_cgi
# chmod +x /etc/init.d/php_cgi

Chạy ứng dụng PHP tương tự như server biên dịch bằng dòng lệnh sau:

Mã nguồn [Chọn]
# /etc/init.d/php_cgi start
# netstat -tulpn | grep :9000

Bước 4: Cấu hình Nginx để thông dịch code PHP

Với Apache, việc thông dịch PHP script code khá đơn giản, vì Apache cung cấp sẵn 1 module có tính năng khi cần thông dịch PHP, Apache sẽ thông qua Module này gọi chương trình thông dịch trực tiếp để thực hiện. Ngoài ra, nếu bạn sử dụng FastCGI thì quy trình có phức tạp hơn một chút nhưng cũng dùng Module tích hợp sẵn. Và việc phải dùng FastCGI là không bắt buộc.

Nhưng với Nginx, để thông dịch được PHP, bắt buộc phải sử dụng FastCGI. Cơ chế hoạt động của Nginx cũng khác hoàn toàn. Ở đây, Nginx đóng vai trò như một Proxy, thông qua spawn-fcgi, sản sinh ra một tiến trình phục vụ cho thao tác thông dịch. Tiến trình này sẽ điều khiển PHP Server. Và PHP Server tiến hành thông dịch rồi trả kết quả ngược lại quy trình trên.

Vì vậy, để thông dịch được PHP, bắt buộc phải cấu hình cho Nginx làm việc với FastCGI và PHP server. Cũng vì thế, sau này nếu muốn chia server ra thành nhiều hosting, phục vụ cho nhiều domain khác nhau, thì mỗi hosting cũng phải cấu hình cho Nginx để thông dịch PHP.

Khi mới cài đặt Nginx, bạn cần cấu hình trong file /etc/nginx/conf.d/default.conf để kiểm tra hoạt động của Nginx và PHP.

Chi tiết file cấu hình như sau:

Mã nguồn [Chọn]
server {
    listen       80;
    server_name  localhost;
    root   /usr/share/nginx/html;
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {

        index  index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   [url=https://127.0.0.1;]https://127.0.0.1;[/url]
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

Sau bước này bạn đã hoàn tất quá trình cài đặt và cấu hình ban đầu Nginx web service.

Bước 5: Khởi chạy Nginx và kiểm tra

Để khởi chạy Nginx, bạn dùng dòng lệnh:

Mã nguồn [Chọn]
service nginx start
Thử tạo 1 file có tên index.php trong thư mục mặc định của Nginx là /etc/nginx/conf.d/default.conf với nội dung như sau:

Mã nguồn [Chọn]
<?php
        phpinfo
();
?>

Save lại, sau đó dùng trình duyệt bất kỳ truy cập vào địa chỉ:


Nếu kết quả trả về là trang bao gồm tổng thể các thông tin về chương trình PHP thì bạn đã thành công trong việc cài đặt Nginx và cấu hình FastCGI thông dịch PHP.