NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
22/03/2025
Lượt xem

Hướng dẫn cài đặt và cấu hình LEMP Stack bằng Software Collections trên CentOS 7

22/03/2025
16 phút đọc
Lượt xem

Đánh giá

5/5 - (152 bình chọn)

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.

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 HTTPHTTPS đế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:

Trang Landing Page của Nginx
Trang Landing Page 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 usergroup, 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:

Trang thông tin về server
Trang 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.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi cuối tháng 3
Nhanh tay, số lượng có hạn!
17/03/2025 - 31/03/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG