Ở bước này, chúng ta sẽ cùng sửa lại file nginx.conf mặc định trên VPS vì có một số tùy chọn nó sẽ trở nên tốt hơn nếu bạn biết cách cấu hình lại. File nginx.conf này sẽ nằm ở thư mục /etc/nginx/ (nếu bạn làm theo serie này).

Đừng quên chạy lệnh service nginx restart sau khi thay đổi các file cấu hình của NGINX.

I - Tối ưu Nginx

1. Cấu hình worker_procresses và worker_connections

Worker_processes nghĩa là tổng số processes tối đa mà NGINX được phép sử dụng. Thường thì mặc định NGINX sẽ thiết lập sử dụng 1 process như sau:

Mã:
worker_processes 1;
Nhưng tốt hơn hết, bạn nên thiết lập số lượng process ngang bằng với số lượng CPU mà bạn đang có. Để xem số lượng CPU có trên VPS, bạn sử dụng lệnh nproc.

Mã:
[root@lempstack ~]# nproc
1
Còn worker_connections nghĩa là số lượng kết nối được phép sử dụng cho mỗi process. Bạn nên đặt con số này là khoảng từ 1024 đến 5000 là đẹp.

Mã:
worker_connections 2048;
2. Tăng dung lượng request gửi đến server

Nếu bạn sử dụng WordPress thì mỗi khi đăng bài, gửi comment,…đều sẽ gửi một số lượng request nhất định đến server, trong nhiều trường hợp có thể bạn sẽ gửi một request khá lớn như bài viết quá dài chẳng hạn thì bạn nên đặt thêm đoạn sau vào giữa cặp http {...} trong nginx.conf:

Mã:
 client_body_buffer_size 256k;
 client_body_in_file_only off;
 client_body_timeout 60s;
 client_header_buffer_size 64k;
 client_header_timeout  20s;
 client_max_body_size 10m;
 connection_pool_size  512;
Trường hợp bạn vẫn gặp lỗi “Request Entity Too Large” thì nên tăng cái client_max_body_size lên.

3. Bật Gzip

Gzip là phương thức nó sẽ nén lại các dữ liệu mà trình duyệt nhận từ server rồi sau đó mới gửi đến người dùng. Chẳng hạn tổng dung lượng của website bạn là 1.3MB nhưng nếu bật Gzip lên thì dung lượng website chỉ còn khoảng 40kb là cùng, một con số ấn tượng đúng không.

Chèn đoạn sau vào giữa cặp http {…}

Mã:
gzip on;
gzip_vary   on;
gzip_disable "MSIE [1-6]\.";
gzip_static on;
gzip_min_length   1400;
gzip_buffers      32 8k;
gzip_http_version 1.0;
gzip_comp_level 5;
gzip_proxied    any;
gzip_types text/plain text/css text/xml application/javascript application/x-javascript application/xml application/xml+rss application/ecmascript application/json image/svg+xml;
Đó là 3 cách tùy chỉnh NGINX khá đơn giản nhưng hiệu quả rất lớn mà bạn có thể làm. Nhìn chung cấu hình như vậy là đã đủ để chạy một website WordPress với kha khá traffic rồi.

Hôm cuối tuần do mình hơi đuối nên chỉ viết được đến phần 7, bây giờ mình sẽ viết tiếp một phần khá quan trọng để làm cho VPS bạn không phải quá tải CPU do các process của PHP-FPM tạo ra, đó là tùy chỉnh lại các thông tin cần thiết.

Mặc khác, mặc định database của bạn khi cài vào sẽ không hỗ trợ lưu cache các truy vấn từ database nên điều đó có thể sẽ làm website bạn hơi chậm.

II - Tối ưu PHP-FPM

Để tối ưu PHP-FPM, bạn hãy mở file /etc/php.ini ra và tìm:

Mã:
;session.save_path = "/tmp"
Thay thành

Mã:
session.save_path = "/var/lib/php/session"
Sau đó cấp quyền cho user đang thực thi PHP sở hữu thư mục này. Nếu bạn không làm phần 7 thì nó sẽ là nginx:nginx

Mã:
chown -R nginx:nginx /var/lib/php/session
Tiếp tục mở file /etc/php-fpm.d/www.conf, tìm:

Mã:
pm = dynamic
Thay thành

Mã:
pm = ondemand
Tìm

Mã:
pm.max_children = 50
Thay thành

Mã:
pm.max_children = 5
Nếu bạn có VPS chỉ có từ 1 cho tới 3 CPU thì bạn nên thiết lập pm.max_children là 2. Còn nếu nhiều hơn thì nên đặt là 5 chứ đừng để nhiều quá.

Tìm tiếp

Mã:
pm.max_spare_servers = 35
Thay thành

Mã:
pm.max_spare_servers = 5
Tìm tiếp

Mã:
pm.min_spare_servers = 5
Thay thành

Mã:
pm.min_spare_servers = 1
Sau đó khởi động lại PHP-FPM

Mã:
service php-fpm restart
III - Tối ưu MariaDB

Đơn giản là hãy mở file /etc/my.cnf và copy đoạn nội dung này vào dưới !includedir /etc/my.cnf.d

Mã:
[mysqld]
 
key_buffer = 500M
table_cache = 4000
sort_buffer_size = 3M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
max_connections = 400
query_cache_type = 1
query_cache_limit = 5M
query_cache_size = 500M
tmp_table_size=20M
max_heap_table_size=20M
thread_cache_size = 64
Nhớ khởi động lại MySQL

Mã:
service mysql restart
Xong rồi đó. :D

Nguồn: thachpham.com