Giới thiệu
Trong hướng dẫn này, Quân sẽ hướng dẫn bạn cài đặt một webserver LEMP trên máy chủ CentOS 8. Mặc dù MySQL có sẵn từ các kho lưu trữ mặc định trong CentOS 8, hướng dẫn này sẽ hướng dẫn quy trình thiết lập LEMP với MariaDB làm hệ thống quản lý cơ sở dữ liệu.
Các bước cài đặt
- Lưu ý: Dấu
$
biếu tượng cho dòng lệnh, bạn sẽ copy lệnh sau dấu$
Bước 1: Cài đặt Nginx
- Bạn chạy lệnh sau để cài đặt gói nginx
$ dnf install nginx
Sau khi cài đặt xong bạn chạy lệnh sau để khởi động và kích hoạt
$ systemctl start nginx
Nếu firewalldđang hoạt động, bạn sẽ cần chạy lệnh sau để cho phép truy cập bên ngoài trên cổng 80(HTTP):
$ firewall-cmd --permanent --add-service=http
- Reload lại firewall để áp dụng
$ firewall-cmd --reload
Sau khi mowr port và reload firewall bạn có thể kiểm tra xem máy chủ có hoạt động hay không bằng cách truy cập địa chỉ IP public 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 như thế này:
Bước 2: Cài đặt MariaDB
Mình sẽ cài đặt MariaDB, một nhánh phát triển cộng đồng của máy chủ MySQL gốc của Oracle. Để cài bạn thực hiện chạy các lệnh sau
$ dnf install mariadb-server
Quá trình cài đặt kết thúc bạn thực hiện bật và khởi động MariaDB
$ systemctl start mariadb $ systemctl status mariadb
Để cải thiện tính bảo mật máy chủ cơ sở dữ liệu của bạn, bạn sẽ phải chạy lệnh bảo mật được cài đặt sẵn với MariaDB như sau.
$ 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): # Bấm enter 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: ## Nhập vào password bạn cần đặt cho MariaDB Re-enter new password: ## Nhập ;lại password bạn cần đặt cho MariaDB 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ước 3: Cài đặt PHP-FPM
Để cài đặt gói php-fpm
và php-mysql
bạn thực hiện chạy lệnh sau
$ dnf install php-fpm php-mysqlnd
Khi quá trình cài đặt kết thúc, bạn sẽ cần chỉnh sửa file /etc/php-fpm.d/www.conf
để điều chỉnh một vài cài đặt. Mình sẽ sử dụng vi để mở file này
$ vi /etc/php-fpm.d/www.conf
Tìm kiếm user
và group
directives tại dòng 24
và 26
. Sau đó thay đổi cả hai giá trị từ apache
thành nginx
như ảnh dưới.
Sau khi chỉnh sửa xong bạn lưu lại file. Sau đó kích hoạt và khởi động php-fpm
$ 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
:
$ systemctl restart nginx
Bước 4: Kiểm tra PHP với Nginx
Trên CentOS 8, php-fpm
cài đặt mặc định sẽ tự động tạo các tệp cấu hình cho phép máy chủ web Nginx của bạn xử lý .php
các tệp trong thư mục gốc mặc định tại /usr/share/nginx/html
. Bạn sẽ không cần thực hiện bất kỳ thay đổi nào đối với cấu hình của Nginx để PHP hoạt động chính xác trong máy chủ web của bạn.
Mình sẽ tạo thử 1 file PHP có tên là info.php
tại /usr/share/nginx/html
với thông tin như sau để kiểm tra và mã PHP sau đây.
$ vi /usr/share/nginx/html/info.php
<?php
phpinfo();
?>
Bước 5: Cấu hình NGINX để xử lý mã nguồn.
Chỉnh sửa file default.conf, nếu không có thì tạo mới bằng lệnh:
vi /etc/nginx/conf.d/default.conf
Dán đoạn cấu hình sau vào default.conf và thay server_domain_or_IP
bằng IP VPS của bạn.
server {
listen 80;
server_name server_domain_or_IP;
root /var/www/html/;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php_fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Lưu config và restart lại NGINX:
systemctl restart nginx
Bước 6: Upload website và kiểm tra
Như vậy, sau khi hoàn tất các bước trên bạn đã có cho mình một Web Server LEMP cơ bản có thể chạy được website.
Bước tiếp theo chúng ta cần tạo 1 trang web mẫu để kiểm tra, chạy lệnh:
touch /var/www/html/index.php | echo "<?php echo '<h1>Hello Systuts.net</h1>';?>" > /var/www/html/index.php
Sau khi hoàn tất, các bạn mở trình duyệt và truy cập IP của Server hoặc domain để hiển thị trang web:
Bước 6: cài đặt phpmyadmin quản lý database
Các bạn download source phpmyadmin về bằng lệnh:
cd ~ wget https://files.phpmyadmin.net/phpMyAdmin/4.9.6/phpMyAdmin-4.9.6-english.tar.gz
Giải nén source vừa tải về:
tar -xzvf phpMyAdmin-4.9.6-english.tar.gz mv phpMyAdmin-4.9.6-english /usr/share/phpmyadmin
Thêm đoạn config sau vào /etc/nginx/conf.d/default.conf:
vi /etc/nginx/conf.d/default.config
server {
listen 80;
server_name server_domain_or_IP;
root /var/www/html/;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php_fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /phpmyadmin{
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php_fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
}
Save lại và restart nginx, mở trình duyệt và nhập vào đường dẫn: http://your_ip_address/phpmyadmin
nhập vào username root và password của MariaDB đã cài đặt ở bước 2.

Troubleshoot

Nếu các bạn vào phpmyadmin bị lỗi session, chạy lệnh:
chown -R nginx:nginx /var/lib/php/session/ chmod 700 /var/lib/php/session
Xin chúc mừng bạn đã thực hiện cài đặt thành công LEMP lên máy chủ CentOS 8 của mình, qua bài viết này mong sẽ có thêm những kiến thức và thông tin bổ ích cho bạn. Hãy theo dõi để cập nhật thêm những thông tin, bài viết mới nhé, Chúc bạn thành công!