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:
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-fpm
và php-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ị user
và group
. 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:
Mọi người cũng tìm kiếm: php stack