Cài đặt LEM Webserver (phần 1): NGINX và PHP-FPM

LAMP Webserver (Linux + Apache + MySQL + PHP)  là loại Webserver phổ biến nhất trên hiện tại. Tuy nhiên thực tế đã chứng minh LEMP Webserver (Linux + NGINX + MariaDB + PHP)  có hiệu suất sử dụng cao hơn LAMP rất nhiều, chỉ tội hơi khó cấu hình dành cho người mới. Chính vì thế mới có serie này nhằm để hỗ trợ các bạn cách cài đặt một LEMP Webserver từ A tới Z theo cách dễ hiểu, dễ làm nhất. Chú ý là sử dụng NGINX làm Webserver chứ không phải Proxy Server để kết hợp với Apache nên mong bạn đừng lẫn lộn.

LEM Webserver
LEM Webserver

Bạn cần chuẩn bị gì

Để theo được serie này tốt, bạn nên chuẩn bị cho mình một VPS với cấu hình như sau:

  • CentOS 6 64bit hoặc 32bit
  • VPS chưa được cài đặt gì cả
  • Tài khoản root của VPS

NGINX lại nhanh hơn Apache?

Hầu hết các Webserver hiện nay đều xử lý các truy vấn từ máy khách đến máy chủ bằng các thread (bạn cứ hiểu thread là một cỗ máy giúp nó xử lý truy vấn), và mỗi truy vấn khách sẽ được server xử lý bằng một thread riêng biệt cho đến khi nó hoàn thành nhiệm vụ. Do đó, ổ cứng trên server sẽ mất nhiều thời gian hơn để giải phóng các thread đã hoàn thành nhiệm vụ, và việc tạo ra nhiều thread cũng sẽ làm server tiêu hao rất nhiều tài nguyên (CPU, RAM).

NGINX sinh ra là để khắc phục nhược điểm đó, nó không phụ thuộc vào số lượng thread trên server mà bạn sẽ có quyền phân chia tổng số thread trên server ra số lượng worker processes tùy thích và các worker processes này sẽ lặp lại quá trình trong mỗi truy vấn gửi tới server mà không cần máy chủ tạo ra thread riêng.

Các worker cũng không thể tốn nhiều tài nguyên để xử lý và nó cũng không tự chặn lẫn nhau như Apache để giải phóng bộ nhớ vì nó sử dụng kỹ thuật Tải không đồng bộ (Asynchronous). Nghĩa là nó sẽ được xử lý luân phiên nhau theo một chu kỳ.

1. Nạp package cần thiết

Đầu tiên bạn hãy nhớ rằng, serie này mình viết dành cho hệ điều hành CentOS 6 trở lên nên bạn cần có một VPS sử dụng CentOS 6 và chưa cài bất cứ cái gì vào.

Do cả NGINX và PHP-FPM đều không có sẵn trong gói Yum mặc định của CentOS nên chúng ta phải nạp một package từ bên ngoài vào.
Với package này bạn sẽ cài được NGINX  và PHP/PHP-FPM mới nhất.

Tùy theo phiên bản CentOs mà bạn đang sử dụng bạn chạy 1 trong 2 lệnh sau:

01
02
03
04
05
06
07
# CentOS 32-Bit
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# CentOS 64-Bit
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Sau đó tạo 1 file tên là nginx.repo trong thư mục /etc/yum.repos.d/ rồi copy đoạn dưới đây vào:

01
02
03
04
05
06
07
cat > /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
Ctrl +D để thoát 

Cài đặt NGINX và PHP-FPM

Trước khi cài đặt, hãy tiến hành tắt SELinux đi bằng cách mở file /etc/sysconfig/selinux và tìm SELINUX= rồi sửa thành như dưới đây:

01
SELINUX=disabled

Sửa xong, hãy gõ lệnh reboot để khởi động lại máy chủ và đăng nhập vào lại SSH.

Sau đó là cài NGINX và PHP cùng các module cần thiết:

01
yum --enablerepo=remi,remi-php71 install nginx php-fpm php-mysql php-common php-mbstring php-mcrypt php-gd

Kích hoạt NGINX, PHP và thêm 2 ứng dụng này vào danh sách ứng dụng tự khởi động nếu reboot server (gõ lần lượt các lệnh):

01
02
03
04
service nginx start
service php-fpm start
chkconfig php-fpm on
chkconfig nginx on

Kiểm tra phiên bản NGINX và PHP-FPM:

01
02
nginx -v
php-fpm -v

 Thiết lập lại user và group chạy PHP

Mặc định PHP-FPM sẽ chỉ định user tên là apache và group tên apache để chạy nó, nhưng ở đây chúng ta không sử dụng Apache mà là NGINX nên bạn cần mở file /etc/php-fpm.d/www.conf lên và tìm:

01
02
03
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

Thay thành

01
02
03
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Lưu lại và khởi động lại PHP-FPM

01
service php-fpm restart

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

GỌI ĐIỆN NGAY 0901 901 800
Chat Facebook Gọi điện Chat Zalo