LEMP Stack là một trong những giải pháp phổ biến để triển khai web server, bao gồm Linux, Nginx, MySQL (hoặc MariaDB) và PHP. Với hiệu suất cao và khả năng xử lý mạnh mẽ, LEMP là lựa chọn lý tưởng cho các website và ứng dụng web. Cùng mình tìm hiểu cách cài đặt và cấu hình LEMP Stack trên CentOS 7 ngay sau đây.
Những điểm chính
- Hướng dẫn cài đặt và cấu hình: Nắm rõ các bước cài đặt và cấu hình LEMP Stack trên CentOS 7 từ việc kích hoạt SCLs, cài đặt Nginx, MariaDB, PHP, cấu hình chúng hoạt động cùng nhau, đến việc kiểm tra hoạt động của toàn bộ hệ thống.
- Giới thiệu Vietnix: Biết được Vietnix là nhà cung cấp VPS tốc độ cao và bảo mật tốt, phù hợp cho mọi nhu cầu từ cá nhân đến doanh nghiệp.
Các bước cài đặt và cấu hình LEMP Stack trên CentOS 7
Bước 1: Enable repo Software Collections
LEMP gồm các thành phần sau: Hệ điều hành Linux, web server ENginx (thay cho Apache trong LAMP Stack), database MySQL để lưu trữ dữ liệu bằng MariaDB, và PHP để xử lý dữ liệu động. Các thành phần của LEMP Stack thường được cài đặt bằng repo EPEL của CentOS 7. Tuy nhiên repo này chỉ chứa một số phiên bản lỗi thời của các package, chẳng hạn như PHP chỉ hỗ trợ đến phiên bản 5.4.16. Vì vậy bài viết này sẽ sử dụng Software Collections (SCLs) – một bộ tài nguyên dành cho các developer được cung cấp bởi RedHat để hỗ trợ cài đặt LEMP Stack.
Để bắt đầu, bạn cần có sẵn một server CentOS 7 với một user non-root. Nếu bạn chưa có server hoặc đang tìm kiếm giải pháp lưu trữ với chi phí tiết kiệm thì có thể tham khảo sử dụng dịch vụ VPS tại Vietnix. Vietnix là một trong những nhà cung cấp dịch vụ VPS hàng đầu tại Việt Nam, với nhiều lựa chọn về cấu hình và giá cả phải chăng như VPS Giá Rẻ, VPS AMD, VPS NVMe, VPS SSD.
Bạn sẽ được toàn quyền quản trị VPS và có thể thoải mái cài đặt phần mềm, ứng dụng theo nhu cầu sử dụng. Ngoài ra, bạn cũng sẽ được hỗ trợ 24/7 bởi đội ngũ kỹ thuật giàu chuyên môn nếu gặp vấn đề trong quá trình sử dụng. Liên hệ để được tư vấn chi tiết hơn và trải nghiệm VPS Vietnix ngay hôm nay.
Trước tiên, để truy cập được SCLs cho CentOS thì bạn cần cài đặt file phát hành CentOS Linux Software Collections:
sudo yum install centos-release-scl
Sau đó bạn có thể xem danh sách các package SCL hiện có bằng lệnh sau:
yum --disablerepo='*' --enablerepo='centos-sclo-rh' --enablerepo='centos-sclo-sclo' list available
Để tránh bất kỳ xung đột nào trên hệ thống thì các package SCL sẽ được cài đặt trong thư mục /opt/rh
.
Mọi file cấu hình cho package SCL đều được lưu trữ ở thư mục tương ứng, bên trong /etc/opt/rh
. Các package SCL cung cấp các shell script định nghĩa những biến môi trường cần thiết cho các ứng dụng đi kèm như PATH
, LD_LIBRARY_PATH
, hay MANPATH
. Các script này được lưu trữ trong file system dưới dạng /opt/rh/package-name/enable
.
Bước 2: Cài đặt Nginx Web Server
Để hiển thị các trang web cho khách truy cập thì bạn cần cài đặt Nginx – một web server hiện đại và được sử dụng rất phổ biến hiện này.
Nginx có thể được cài đặt bằng lệnh yum
như bên dưới đây. Lưu ý rằng bạn cần đổi giá trị 112
thành phiên bản Nginx muốn cài đặt:
sudo yum install rh-nginx112
Sau khi quá trình cài đặt hoàn tất thì bạn có thể chạy Nginx bằng lệnh sau:
sudo systemctl start rh-nginx112-nginx
Xác nhận xem Nginx có đang chạy không:
sudo systemctl status rh-nginx112-nginx
Output
● rh-nginx112-nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/rh-nginx112-nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2018-03-19 15:15:43 UTC; 1min 17s ago
Main PID: 10556 (nginx)
CGroup: /system.slice/rh-nginx112-nginx.service
├─10556 nginx: master process /opt/rh/rh-nginx112/root/usr/sbin/nginx
├─10557 nginx: worker process
└─10558 nginx: worker process
Mar 19 15:15:43 lemp-centos-222 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 19 15:15:43 lemp-centos-222 nginx-scl-helper[10541]: nginx: the configuration file /etc/opt/rh/rh-nginx... ok
Mar 19 15:15:43 lemp-centos-222 nginx-scl-helper[10541]: nginx: configuration file /etc/opt/rh/rh-nginx112/...ful
Mar 19 15:15:43 lemp-centos-222 systemd[1]: Started The nginx HTTP and reverse proxy server.
Hint: Some lines were ellipsized, use -l to show in full.
Ở bước này, server vẫn chưa được bảo vệ khỏi các truy cập trái phép từ những user chưa được ủy quyền. Do đó bạn cần thiết lập một tường lửa bằng firewalld như sau:
sudo yum install firewalld
Sau đó khởi động dịch vụ tường lửa:
sudo systemctl start firewalld
Tiếp đến, thêm một số quy tắc tường lửa để cho phép truy cập SSH đến server, đồng thời cho phép kết nối HTTP và HTTPS đến Nginx:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
Bây giờ hãy reload lại firewalld để áp dụng các quy tắc mới:
sudo firewall-cmd --reload
Sau khi thiết lập tường lửa xong, bạn có thể kiểm tra xem server đã bắt đầu hoạt động chưa bằng cách truy cập vào tên miền hoặc địa chỉ IP public của server từ trình duyệt web.
Nếu bạn không có tên miền nào trỏ đến server hoặc không biết địa chỉ IP public của server thì có thể dùng lệnh sau để tìm:
curl -4 icanhazip.com
Nhập địa chỉ IP có được từ lệnh trên vào thanh địa chỉ của trình duyệt web:
http://server_domain_or_IP
Bây giờ bạn sẽ thấy được trang Landing Page mặc định của Nginx:

Như vậy là bạn đã hoàn tất việc cài đặt Nginx. Trước khi bắt đầu, hãy cho phép Nginx khởi động mỗi khi server boot bằng lệnh sau:
sudo systemctl enable rh-nginx112-nginx
Bước 3: Cài đặt MariaDB để quản lý dữ liệu
Sau khi cài đặt xong web server thì bạn cần cài đặt MariadB (Cách cài đặt MariaDB trên CentOS 7 chi tiết tại đây) để lưu trữ và quản lý dữ liệu của trang. Sử dụng lệnh dưới đây để cài đặt MariaDB (Lưu ý thay 102
thành phiên bản tương ứng bạn muốn cài đặt):
sudo yum install rh-mariadb102
Sau đó khởi động dịch vụ bằng lệnh:
sudo systemctl start rh-mariadb102-mariadb
Tiếp theo bạn cần bảo mật MariaDB. MariaDB được cài đặt kèm với một số script bảo mật có sẵn để người dùng chỉnh sửa các thiết lập chưa an toàn. Bạn có thể script bằng lệnh dưới đây:
source /opt/rh/rh-mariadb102/enable
mysql_secure_installation
Sau đó hệ thống sẽ hỏi người dùng về mật khẩu root. Vì đã cài đặt MySQL nên bạn có thể không có mật khẩu root, do đó hãy bỏ qua bằng cách nhấn ENTER. Bây giờ hệ thống tiếp tục hỏi xem bạn có muốn tạo mật khẩu root hay không. Nhấn Y để tiếp tục rồi làm theo các hướng dẫn:
. . .
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorization.
Set root password? [Y/n] Y
New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
... Success!
. . .
Ở các phần sau, bạn chỉ cần nhấn ENTER để sử dụng các thiết lập mặc định, gồm có: Xóa các user ẩn danh và database kiểm thử, disable đăng nhập root từ xa, đồng thời áp dụng các thay đổi.
Cuối cùng là thiết lập để cho phép MariaDb khởi động khi server boot:
sudo systemctl enable rh-mariadb102-mariadb
Bước 4: Cài đặt và cấu hình PHP
Đến đây thì bạn đã cài đặt xong Nginx và MariaDB, tuy nhiên vẫn chưa thể tạo nội dung động. Do đó bạn cần có thêm một công cụ nữa là PHP.
Nginx không có bộ xử lý PHP native như các web server khác, do đó bạn cần cài đặt thêm php-fpm
(fastCGI process manager). Sau đó bạn sẽ cấu hình để Nginx có thể truyền các request PHP đến cho phần mềm này xử lý.
Trước tiên, bạn cài đặt module kèm theo một package hỗ trợ để PHP giao tiếp với backend database:
sudo yum install rh-php71-php-fpm rh-php71-php-mysqlnd
Sau đó bạn cần thay đổi một số thiết lập để tăng cường bảo mật cho hệ thống. Mở file cấu hình php.ini
bằng quyền root như sau:
sudo vi /etc/opt/rh/rh-php71/php.ini
Tìm tham số cgi.fix_pathinfo
trong file này, dòng này đang được comment bằng dấu ;
và giá trị mặc định là 1
.
Đây là một thiết lập rất kém bảo mật, vì nó sẽ chỉ dẫn PHP thực thi file gần nhất có thể tìm được nếu không tìm thấy file PHP được yêu cầu. Điều này sẽ giúp user có thể tạo ra các PHP request cho phép thực thi được các script trái phép.
Do đó, hãy uncomment dòng này rồi đặt giá trị thành 0
như sau:
cgi.fix_pathinfo=0
Sau đó lưu rồi đóng file (nhấn ESC, nhập :wq
rồi nhấn ENTER).
Tiếp theo, mở file cấu hình của php-fpm:
sudo vi /etc/opt/rh/rh-php71/php-fpm.d/www.conf
Theo mặc định thì file này được cấu hình để hoạt động với server Apache. Vì bạn đã cài đặt Nginx trên server nên hãy tìm dòng user
và group
, sau đó đổi giá trị thành nginx
như sau:
user = nginx
group = nginx
Cuối cùng lưu rồi đóng file.
Bây giờ bạn có thể khởi động bộ xử lý PHP với lệnh sau:
sudo systemctl start rh-php71-php-fpm
Sau đó cho phép php-fpm khởi động khi server boot:
sudo systemctl enable rh-php71-php-fpm
Ở bước tiếp theo, bạn cần cấu hình để PHP có thể hoạt động được cả với những phần mềm khác và giúp server có thể phân phối chính xác các nội dung cần thiết của trang.
Bước 5: Cấu hình cho Nginx sử dụng PHP Processor
Đến bước này thì bạn đã cài đặt xong các thành phần cần thiết cho LEMP Stack. Bây giờ bạn cần yêu cầu Nginx sử dụng PHP processor cho nội dung động. Cấu hình này có thể thay đổi ở mức độ server block (các server block ở đây có vai trò tương tự như virtual host của Apache).
Trước tiên, mở file cấu hình server block của Nginx:
sudo vi /etc/opt/rh/rh-nginx112/nginx/nginx.conf
Sau đó uncomment block location ~ \.php$
(là đoạn file xử lý các PHP request, bên trong block server
) và các nội dung của nó. Bạn có thể uncomment bằng cách bỏ ký tự #
ở đầu dòng. Bên cạnh đó bạn cũng cần cập nhật option fastcgi_param
thành SCRIPT FILENAME $document_root$fastcgi_script_name
giúp PHP biết vị trí của tài liệu root để tìm kiếm các file cần xử lý.
Bây giờ block server
sẽ có dạng như dưới đây:
...
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /opt/rh/rh-nginx112/root/usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/opt/rh/rh-nginx112/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.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 html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$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 đó lưu rồi đóng file.
Bây giờ bạn có thể kiểm tra file cấu hình có lỗi cú pháp nào không bằng lệnh sau:
source /opt/rh/rh-nginx112/enable
sudo nginx -t
Nếu có bất kỳ lỗi nào thì hãy mở lại file để kiểm tra.
Sau khi hoàn tất, reload lại Nginx để áp dụng các thay đổi mới:
sudo systemctl reload rh-nginx112-nginx
Bước 6: Tạo file PHP để kiểm tra cấu hình
Ở bước cuối cùng, bạn sẽ kiểm tra xem Nginx có thể chuyển các file .php
đến bộ xử lý PHP một cách chính xác hay không. Điều này được thực hiện bằng cách tạo một file test PHP trong tài liệu root.
Mở file info.php
trong tài liệu root:
sudo vi /opt/rh/rh-nginx112/root/usr/share/nginx/html/info.php
Sau đó thêm dòng code PHP dưới đây để nhận thông tin về server:
<?php phpinfo(); ?>
Sau đó lưu rồi đóng lại file. Bây giờ hãy thử truy cập vào trang bằng cách nhập tên miền hoặc địa chỉ IP public của server, sau đó thêm /info.php
vào thành địa chỉ:
http://server_domain_or_IP/info.php
Bây giờ bạn sẽ thấy một trang được tạo bởi PHP, chứa thông tin về server:

Như vậy là bạn đã thiết lập PHP thành công. Sau đó bạn nên xóa file vừa tạo ở trên vì những người dùng trái phép có thể lấy thông tin về cấu hình từ những file này để xâm nhập vào hệ thống:
sudo rm /opt/rh/rh-nginx112/root/usr/share/nginx/html/info.php
Vietnix – Nhà cung cấp VPS tốc độ cao, bảo mật hàng đầu
Vietnix là nhà cung cấp VPS uy tín với hơn 12 năm kinh nghiệm và được hơn 90.000 khách hàng tin dùng. Hệ thống VPS tại Vietnix được tối ưu để mang lại tốc độ vượt trội, đảm bảo hiệu suất hoạt động ổn định và an toàn tuyệt đối. Các máy chủ sử dụng công nghệ tiên tiến, hệ thống bảo mật nhiều lớp giúp chống lại các cuộc tấn công mạng, bảo vệ dữ liệu khách hàng tối đa.
Bên cạnh đó, đội ngũ kỹ thuật của Vietnix luôn sẵn sàng hỗ trợ 24/7, đảm bảo xử lý nhanh chóng mọi vấn đề phát sinh. Chọn Vietnix, bạn sẽ có một giải pháp VPS chất lượng cao, phù hợp cho mọi nhu cầu từ cá nhân đến doanh nghiệp!
Thông tin liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Website: https://vietnix.vn/
Sau khi hoàn tất cài đặt và cấu hình LEMP Stack trên CentOS 7, bạn đã có một web server mạnh mẽ và tối ưu. Hệ thống này giúp chạy website và ứng dụng web ổn định, hiệu suất cao. Bạn hãy tiếp tục tinh chỉnh cấu hình để phù hợp với nhu cầu sử dụng. Nếu còn điều gì chưa rõ, bạn hãy bình luận bên dưới để được hỗ trợ thêm.