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
24/05/2023
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

24/05/2023
15 phút đọc
Lượt xem

Đánh giá

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

LEMP Stack là một nhóm các phần mềm mã nguồn mở thường được cài đặt chung với nhau trên server để host các website động và ứng dụng web. Bài viết này sẽ hướng dẫn chi tiết 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ẻ, Cloud Server, VPS Cao Cấp, VPS NVMe, VPS GPU.

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

Với hơn 10 năm kinh nghiệm làm việc và đồng hành cùng hơn 50.000 khách hàng cá nhân và doanh nghiệp, Vietnix đã trở thành một trong những nhà cung cấp giải pháp VPS hàng đầu tại Việt Nam. Trong đó, một số thương hiệu đã tin chọn Vietnix có thể kể tới như UB Group, iVIVU, SEOSONA, Vietnamworks, SAGO Media,

Với hơn 100.000 dịch vụ được kích hoạt, Vietnix tự hào về tỷ lệ khách hàng giới thiệu dịch vụ sau khi sử dụng lên tới 97%. Năm 2022, Vietnix đã được trao giải thưởng Thương hiệu Việt Nam xuất sắc, càng khẳng định vị trí là một trong những nhà cung cấp dịch vụ uy tín, chất lượng hàng đầu. Hãy để Vietnix trở thành người đồng hành cùng bạn trong hành trình kinh doanh trực tuyến trên internet.

Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng 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

Qua bài viết về cách cài đặt và cấu hình LEMP Stack trên CentOS 7 này, bạn đã cài đặt thành công bộ phần mềm LEMP Stack bằng Software Collections trên CentOS 7. Ngoài ra, SCL còn có một số bản cài đặt phần mềm và chuyển đổi qua lại giữa chúng. Người dùng có thể tham khảo danh sách chọn lọc cài đặt phù hợp cho hệ thống mình. Nếu có bất kỳ thắc mắc nào khác, hãy để lại ở phần comment bên dưới để được Vietnix hỗ trợ nhanh nhất nhé!

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

Chọn chủ đề :

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

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

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

ĐĂ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

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

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