Nginx - hay còn phát âm là engine x, hiện đang là 1 trong những hệ thống HTTP server miễn phí, mã nguồn mở và hiệu suất hoạt động tương đối cao. Nginx còn được biết đến với độ ổn định, giàu tính năng hỗ trợ, dễ dàng thiết lập, cấu hình và tốn ít tài nguyên hệ thống. Trong bài viết sau, Quản Trị Mạng sẽ giới thiệu với các bạn cách cài đặt Nginx trên nền tảng Fedora 13 server với PHP5 (qua FastCGI) và MySQL.
Lưu ý sơ bộ
Trong bài viết này, chúng ta sử dụng hostname server1.example.com và địa chỉ IP 192.168.0.100. Tùy từng hệ thống mà các bạn thay đổi thông số hostname và địa chỉ IP phù hợp.
Cài đặt MySQL 5
Sử dụng câu lệnh sau để cài đặt MySQL 5:
Các gói hỗ trợ cài đặt Nginx đã có sẵn trong Fedora 13, chúng ta dùng câu lệnh sau để bắt đầu cài đặt:
Cài đặt PHP5
Chúng ta có thể khiến cho PHP5 hoạt động tốt trong nginx thông qua FastCGI, thực ra không có gói FastCGI daemon độc lập dành cho Fedora, do đó chúng ta phải sử dụng gói FastCGI có sẵn của lighttpd (lighttpd-fastcgi) và cài đặt cùng với php-cli với 1 số module PHP5 tương tự như php-mysql:
File cấu hình thiết lập của nginx đặt tại /etc/nginx/nginx.conf:
Trước tiên, tăng số lượng tiến trình xử lý và thiết lập giá trị của keepalive_timeout theo như sau:
Phần quan trọng dành cho PHP là location ~ \.php$ {}. Bỏ dấu chú thích để kích hoạt tính năng và dịch vụ tương ứng, và thay đổi dòng root trỏ tới thư mục root của website (root /usr/share/nginx/html;). Bên cạnh đó, hãy đảm bảo rằng bạn đã thay đổi dòng fastcgi_param thành fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; nếu không thì các trình biên dịch PHP sẽ không thể tìm được các đoạn mã tương ứng trong trình duyệt.
Lưu thay đổi của file và khởi động lại nginx:
Như bạn đã thấy, PHP5 đã hoạt động, và hoạt động thông qua FastCGI (đã được chỉ ra trong Server API). Khi kéo danh sách xuông dưới, bạn có thể thấy tất cả các module đã được kích hoạt trong PHP5, bao gồm cả MySQL:
Trên đây là 1 cách để cài đặt Nginx với PHP5 và MySQL trong nền tảng Fedora 13 server.
Chúc các bạn thành công!
Lưu ý sơ bộ
Trong bài viết này, chúng ta sử dụng hostname server1.example.com và địa chỉ IP 192.168.0.100. Tùy từng hệ thống mà các bạn thay đổi thông số hostname và địa chỉ IP phù hợp.
Cài đặt MySQL 5
Sử dụng câu lệnh sau để cài đặt MySQL 5:
Code:
yum install mysql mysql-server
Sau đó tạo đường dẫn khởi động cho MySQL (dịch vụ của MySQL sẽ tự khởi động cùng hệ thống) và kích hoạt MySQL server:
Code:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
Kiểm tra các dịch vụ mạng có đang ở trạng thái kích hoạt hay không:
Code:
netstat -tap | grep mysql
Kết quả hiển thị sẽ có dạng như sau:
Code:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 1448/mysqld
[root@server1 ~]#
Nếu không, chỉnh lại file /etc/my.cnf và chú thích bên ngoài lựa chọn skip-networking:
Code:
vi /etc/my.cnf
[...]
#skip-networking
[…]
Và khởi động lại MySQL server:
Code:
/etc/init.d/mysqld restart
Chạy lệnh sau:
Code:
mysql_secure_installation
để thiết lập mật khẩu cho tài khoản root (nếu không thì bất cứ ai cũng có thể truy cập cơ sở dữ liệu MySQL):
Code:
[root@server1 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): <-- gõ ENTER
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] <-- ENTER
New password: <-- mật khẩu SQL root
Re-enter new password: <-- mật khẩu SQL root
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <-- gõ ENTER
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <-- gõ ENTER
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <-- gõ ENTER
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <-- gõ ENTER
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
[root@server1 ~]#
Cài đặt NginxCác gói hỗ trợ cài đặt Nginx đã có sẵn trong Fedora 13, chúng ta dùng câu lệnh sau để bắt đầu cài đặt:
Code:
yum install nginx
Sau đó tạo đường dẫn khởi động cho nginx và kích hoạt dịch vụ:
Code:
chkconfig --levels 235 nginx on
/etc/init.d/nginx start
Mở trình duyệt, gõ địa chỉ IP hoặc hostname vào thanh địa chỉ (ở đây là http://192.168.0.100), bạn sẽ thấy giao diện trang mở đầu của nginx như sau:
Chúng ta có thể khiến cho PHP5 hoạt động tốt trong nginx thông qua FastCGI, thực ra không có gói FastCGI daemon độc lập dành cho Fedora, do đó chúng ta phải sử dụng gói FastCGI có sẵn của lighttpd (lighttpd-fastcgi) và cài đặt cùng với php-cli với 1 số module PHP5 tương tự như php-mysql:
Code:
yum install lighttpd-fastcgi php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy
Sau đó mở file /etc/php.ini và thêm dòng cgi.fix_pathinfo = 1 vào phía cuối file:
Code:
vi /etc/php.ini
[...]
cgi.fix_pathinfo = 1
Gói lighttpd-fastcgi có đi kèm với file thực thi /usr/bin/spawn-fcgi, tại đây chúng ta có thể khởi động và kích hoạt các ứng dụng FastCGI. Các bạn có thể tìm hiểu thêm tại đây (spawn-fcgi –help). Để khởi động dịch vụ PHP FastCGI daemon và “lắng nghe” các tín hiệu từ cổng 9000 trên localhost, hoạt động như nhóm và tài khoản người dùng nginx, chúng ta thực hiện câu lệnh sau:
Code:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
Đương nhiên, chẳng ai muốn gõ câu lệnh dài như vậy mỗi khi hệ thống khởi động, để khắc phục điều này, mở /etc/rc.local... :
Code:
vi /etc/rc.local
và thêm dòng lệnh sau ở phía cuối:
Code:
[...]
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
Thiết lập và tùy chỉnh nginxFile cấu hình thiết lập của nginx đặt tại /etc/nginx/nginx.conf:
Code:
vi /etc/nginx/nginx.conf
Cấu trúc của file này tương đối dễ hiểu (các bạn có thể tìm hiểu thêm tại đây hoặc đây)Trước tiên, tăng số lượng tiến trình xử lý và thiết lập giá trị của keepalive_timeout theo như sau:
Code:
[...]
worker_processes 5;
[...]
keepalive_timeout 2;
[...]
Các host ảo được định nghĩa và khởi tạo trong biến server {}. Hãy điều chỉnh lại giá trị vhost mặc định theo như sau:
Code:
[...]
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /usr/share/nginx/html;
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;
}
}
[...]
server_name _; là giá trị khởi tạo catchall vhost mặc định (nếu muốn bạn có thể tự khởi tạo hostname như www.example.com). Trong phần định nghĩa của location /, chúng ta thêm index.php vào dòng index. Còn giá trị root /usr/share/nginx/html; chỉ ra rằng thư mực tài liệu mặc định là /usr/share/nginx/html.Phần quan trọng dành cho PHP là location ~ \.php$ {}. Bỏ dấu chú thích để kích hoạt tính năng và dịch vụ tương ứng, và thay đổi dòng root trỏ tới thư mục root của website (root /usr/share/nginx/html;). Bên cạnh đó, hãy đảm bảo rằng bạn đã thay đổi dòng fastcgi_param thành fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; nếu không thì các trình biên dịch PHP sẽ không thể tìm được các đoạn mã tương ứng trong trình duyệt.
Lưu thay đổi của file và khởi động lại nginx:
Code:
/etc/init.d/nginx restart
Tiếp theo, tạo file PHP trong thư mục root /usr/share/nginx/html... :
Code:
vi /usr/share/nginx/html/info.php
Code:
<?php
phpinfo();
?>
Sau đó, kiểm tra lại bằng cách gọi file đó ra trong trình duyệt (http://192.168.0.100/info.php):
Chúc các bạn thành công!