LEMP là một nhóm các phần mềm có thể dùng để phục vụ các web động được viết bằng PHP. LEMP bao gồm một hệ điều hành Linux, web server Nginx, hệ quản trị cơ sở dữ liệu MySQL hoặc MariaDB và ngôn ngữ lập trình PHP. Trong bài viết này Cloud356 sẽ hướng dẫn bạn cách cài đặt LEMP stack trên CentOS 8 sử dụng MariaDB làm hệ quản trị cơ sở dữ liệu.

Chuẩn bị

Chuẩn bị một máy cài đặt hệ điều hành CentOS 8. Sử dụng user root để cài đặt.

Cài đặt

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

Sử dụng trình quản lý gói dnf để cài đặt Nginx. Đây là trình quản lý gói mặc định trên CentOS 8

dnf install nginx

Sau khi cài đặt xong sử dụng lệnh sau để bật và enable nginx:

systemctl start nginx
systemctl enable nginx

Nếu bạn đang sử dụng firewalld bạn cần mở port để cho phép truy cập nginx

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

Truy cập địa IP của bạn tren trình duyệt bạn sẽ thấy giao diện mặc định của Nginx

Nếu bạn thấy trang này thì máy chủ web của bạn đã được cài đặt.

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

Chúng ta cần cài đặt một hệ quản trị cơ sở dữ liệu để lưu trữ và quản lý dữ liệu cho trang web của bạn

dnf install mariadb-server

Sau khi cài đặt xong sử dụng lệnh sau để bật và enable MariaDB

systemctl start mariadb
systemctl enable mariadb

Chạy lệnh sau để thiết lập cấu hình ban đầu cho user root của mariadb

mysql_secure_installation

Bạn sẽ được hỏi password của root. Nếu bạn mới cài mariadb thì bạn chỉ cần Enter để bỏ qua. Để đảm bảo tính bảo mật bạn nên đặt password cho tài khoản root

[root@localhost ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

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 authorisation.

Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Bây giờ thử đăng nhập với user root và password đặt ở bên trên

[root@localhost ~]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Đến đây việc cài đặt hệ quản trị cơ sở dữ liệu đã xong. Bây giờ chuyển sang cài đặt thành phần cuối cùng của bộ LEMP stack là PHP

Bước 3: Cài đặt PHP

Bạn đã cài đặt Nginx làm web server, MariaDB để lưu trữ và quản lý dữ liệu. Bây giờ bạn cần cài đặt PHP để xử lý code và tạo nội dung động cho trang web của bạn.

Cài đặt php-fpmphp-mysqlnd

dnf install php-fpm php-mysqlnd

php-fpm có chức năng nói với Nginx chuyển các request PHP tới nó để xử lý. Còn php-mysqlnd cho phép PHP kết nối đến database.

Sau khi cài đặt xong ta cần phải thực hiện một số thay đổi về cấu hình để yêu cầu Nginx sử dụng PHP để xử lý nội dung.

sed -i 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf

Bật và enable php-fpm

systemctl start php-fpm
systemctl enable php-fpm

Khởi động lại nginx để load lại cấu hình của php-fpm

systemctl restart nginx

Đến đây bạn đã cài đặt đầy đủ các thành phần cuả LEMP stack. Tiếp theo chúng ta sẽ sử dụng một script PHP để kiểm tra xem liệu nó có hoạt động như mong đợi.

Bước 4: Kiểm tra

Mặc định thư mục gốc cuả trang web sẽ là /usr/share/nginx/html. Bạn cũng có thể thay đổi thư mục này.

Tạo file info.php

cat <<EOF > /usr/share/nginx/html/info.php
<?php 
phpinfo();
EOF

Bây giờ mở trình duyệt và truy cập đường dẫn http://ip_server/info.php. Nếu bạn thấy kết quả trả về như sau

Sau khi kiểm test xong thì nên xóa file này đi

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

Đến đây việc cài đặt đã thành công. Bạn có thể tham khảo cách cài đặt bộ công cụ này trên một số hệ điều hành khác tại đây.