Cài đặt Linux, Nginx, MySQL, PHP (LEMP) Stack trên CentOS 8 [Quickstart]

Trong hướng dẫn này, bạn sẽ cài đặt một bộ LEMP trên máy chủ CentOS Mặc dù MySQL có sẵn trong kho lưu trữ mặc định của CentOS 8, hướng dẫn này sẽ hướng dẫn cách thiết lập một bộ LEMP với MariaDB làm hệ thống quản lý cơ sở dữ liệu.

Để làm theo hướng dẫn, bạn cần truy cập vào một máy chủ CentOS 8 dưới dạng người dùng sudo.

Bước 1 — Cài đặt Nginx

Cài đặt gói nginx bằng lệnh sau:

sudo dnf install nginx

Sau khi cài đặt hoàn tất, chạy lệnh sau để kích hoạt và bắt đầu máy chủ:

sudo systemctl start nginx

Nếu firewalld đang hoạt động, bạn cần chạy lệnh sau để cho phép truy cập từ bên ngoài qua cổng 80 (HTTP):

sudo firewall-cmd --permanent --add-service=http

Tải lại cấu hình tường lửa để áp dụng thay đổi:

sudo firewall-cmd --reload

Với quy tắc tường lửa mới được thêm, bạn có thể kiểm tra xem máy chủ đã hoạt động chưa bằng cách truy cập địa chỉ IP công khai hoặc tên miền của máy chủ từ trình duyệt web của bạn. Bạn sẽ thấy một trang tương tự như sau:

Cài đặt Nginx

Bước 2 — Cài đặt MariaDB

Bây giờ sẽ cài đặt MariaDB, một phiên bản được cộng đồng phát triển từ máy chủ MySQL gốc do Oracle phát triển. Để cài đặt phần mềm này, chạy lệnh sau:

sudo dnf install mariadb-server

Khi quá trình cài đặt hoàn tất, kích hoạt và bắt đầu máy chủ MariaDB bằng lệnh:

sudo dnf install mariadb-server

Để cải thiện tính bảo mật của máy chủ cơ sở dữ liệu, khuyến nghị chạy một tập lệnh bảo mật đã được cài đặt sẵn trong MariaDB. Bắt đầu tập lệnh tương tác bằng lệnh:

sudo mysql_secure_installation

Câu hỏi đầu tiên sẽ yêu cầu bạn nhập mật khẩu gốc cơ sở dữ liệu hiện tại. Vì bạn vừa mới cài đặt MariaDB và chưa thay đổi cấu hình nào, mật khẩu này sẽ trống, vì vậy chỉ cần nhấn ENTER ở câu hỏi này.

Câu hỏi tiếp theo yêu cầu bạn có muốn đặt mật khẩu gốc cơ sở dữ liệu hay không. Vì MariaDB sử dụng một phương pháp xác thực đặc biệt cho người dùng root thường an toàn hơn việc sử dụng mật khẩu, bạn không cần thiết lập mật khẩu này lúc này. Gõ N và sau đó nhấn ENTER.

Từ đó, bạn có thể nhấn Y và sau đó nhấn ENTER để chấp nhận các giá trị mặc định cho các câu hỏi tiếp theo.

Bước 3 — Cài đặt PHP-FPM

Để cài đặt gói php-fpmphp-mysql, chạy lệnh sau:

sudo dnf install php-fpm php-mysqlnd

Khi quá trình cài đặt hoàn tất, bạn sẽ cần chỉnh sửa tệp /etc/php-fpm.d/www.conf để điều chỉnh một số cài đặt. Chúng ta sẽ cài đặt nano để dễ dàng chỉnh sửa các tệp này:

sudo dnf install nano

Bây giờ mở tệp cấu hình /etc/php-fpm.d/www.conf bằng nano hoặc trình soạn thảo mà bạn thích:

sudo nano /etc/php-fpm.d/www.conf

Tìm các chỉ thị usergroup. Nếu bạn đang sử dụng nano, bạn có thể nhấn CTRL+W để tìm kiếm các thuật ngữ này trong tệp mở. Đảm bảo thay đổi cả hai giá trị từ apache thành nginx:

…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
…

Lưu và đóng tệp khi bạn hoàn thành việc chỉnh sửa.

Để kích hoạt và bắt đầu dịch vụ php-fpm, chạy lệnh:

sudo systemctl start php-fpm

Cuối cùng, khởi động lại máy chủ web Nginx để nó tải các tệp cấu hình được tạo bởi cài đặt php-fpm:

sudo systemctl restart nginx

Bước 4 — Kiểm tra PHP với Nginx

Trên CentOS 8, quá trình cài đặt mặc định của php-fpm tự động tạo các tệp cấu hình sẽ cho phép máy chủ web Nginx xử lý các tệp .php trong thư mục gốc mặc định tại /usr/share/nginx/html. Bạn không cần thay đổi bất kỳ cấu hình nào của Nginx để PHP hoạt động đúng trong máy chủ web của bạn.

Chúng ta chỉ cần thay đổi chủ sở hữu và nhóm mặc định trên thư mục gốc của Nginx để bạn có thể tạo và sửa đổi các tệp trong đó bằng người dùng hệ thống thường của bạn, không phải là người dùng root:

sudo chown -R sammy.sammy /usr/share/nginx/html/

Tạo một tệp PHP mới có tên info.php trong thư mục /usr/share/nginx/html:

nano /usr/share/nginx/html/info.php

Mã PHP sau sẽ hiển thị thông tin về môi trường PHP hiện tại đang chạy trên máy chủ:

<?php
phpinfo();

Sao chép nội dung này vào tệp info.php của bạn và đừng quên lưu nó khi bạn hoàn thành.

Bây giờ chúng ta có thể kiểm tra xem máy chủ web của chúng ta có thể hiển thị đúng nội dung được tạo bởi một tập lệnh PHP hay không. Truy cập vào trình duyệt của bạn và truy cập vào tên máy chủ hoặc địa chỉ IP của máy chủ của bạn, tiếp theo là /info.php:

http://server_host_or_IP/info.php

Bạn sẽ thấy một trang tương tự như sau:

Kiểm tra PHP với Nginx

Mọi người cũng tìm kiếm: php stack