Hướng dẫn cài đặt LEMP Stack trên Ubuntu 20.04 – Cấu hình vHost chuẩn xác nhất 2023

Ở bài viết này mình sẽ Hướng dẫn cài đặt LEMP Stack trên Ubuntu 22.04, với các phần thường sử dụng nhất trên LEMP Stack. Ubuntu 22.04 Ubuntu 20.04, Ubuntu 18.04.. đều tương tự như nhau nhé.

Với CenOS 7 8 9.. thì bạn tham khảo thêm bài này: https://hoanggiangnam.com/cai-dat-lemp-tren-centos-nginx-mariadb-10-5-php-7-4-phpmyadmin/

I. LEMP Stack là gì?

LEMP là từ viết tắt của Linux, Nginx, MySQL, PHP(hay Perl hoặc Python), để tạo nên một môi trường máy chủ Web có khả năng chứa và phân phối các trang Web động. Bốn phần mềm nói trên tạo thành một gói phần mềm LEMP.

Các thành phần cài đặt LEMP.

  • NGINX làm webserver
  • MariaDB
  • PHP (sử dụng phiên bản 7.4 trong bài viết này)
  • phpMyAdmin

II. Cấu hình tối thiểu

1 – Yêu cầu cấu hình tối thiểu Server/VPS.

Để cài đặt LEMP, việc đầu tiên bạn cần làm là SSH hoặc truy cập VPS hoặc máy chủ của bạn với quyền root trước.

Và cấu hình đề nghị là VPS 1core – 2gb ram – 20gb SSD. Với cấu hình này thì bạn cấu hình thêm redis hoặc memcache + SWAP để có thể chạy 2-3 website có lượng truy cập tầm 1-2k online.

2 – Cập nhật hệ thống.

Bạn nên cập nhật các gói trên hệ thống lên bản mới nhất trước khi cài đặt. Và để cập nhật bạn hãy sử dụng lệnh sau

root@ubuntu:~# apt-get update && apt-get upgrade -y

Và cài đặt thêm mấy tool cần thiết:

apt-get install nano net-tools wget zip unzip -y

III – Cài đặt NGINX

Có nhiều cách để cài đặt NGINX. Và ở bài viết này mình sẽ cài đặt trực tiếp bằng lệnh apt-get install

root@ubuntu:~# apt-get install nginx -y

Tiếp theo bạn sử dụng 3 lệnh sau để kích hoạt và khởi động nginx.

root@ubuntu:~# systemctl enable nginx #Bật khởi động cùng hệ thống

root@ubuntu:~# systemctl start nginx #Khởi động nginx

root@ubuntu:~# systemctl status nginx #Kiểm tra trạng thái

Để kiểm tra phiên bản nginx được cài vào là phiên bản bao nhiêu bạn có thể sử dụng lệnh dưới để kiểm tra.:

nginx -v

root@ubuntu:~# nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

Bây giờ bạn hãy truy cập IP trên trình duyệt. Nếu hiện như ảnh bên dưới là đã cài NGINX thành công.

Mở port 80, 443

Trường hợp nếu hệ thống bạn có cài firewall. Bạn hãy mở port 80 trên firewall để truy cập.

ufw allow 'Nginx HTTP'

Đối với iptables:

root@ubuntu:~# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

root@ubuntu:~# iptables -I INPUT -p tcp --dport 443 -j ACCEPT

IV – Cài đặt máy chủ cơ sở dữ liệu MariaDB

Gỡ MariaDB hiện tại trên Ubuntu:

apt-get remove mariadb-server

Ở đây mình sử dụng MariaDB làm máy chủ cơ sở dữ liệu. Để cài đặt bạn sử dụng lệnh sau:

root@ubuntu:~# apt-get install mariadb-server mariadb-client -y

Cài xong bạn kiểm tra dịch vụ cũng như bật khởi động cùng hệ thống.

root@ubuntu:~# systemctl enable mariadb #Bật khởi động
root@ubuntu:~# systemctl start mariadb #Khởi động dịch vụ
root@ubuntu:~# systemctl status mariadb #Kiểm tra dịch vụ

● mariadb.service - MariaDB 10.6.7 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-05-13 15:09:50 +07; 4min 28s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 3220 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 8 (limit: 1034)
Memory: 60.1M
CPU: 575ms
CGroup: /system.slice/mariadb.service
└─3220 /usr/sbin/mariadbd

Cấu hình MariaDB

Chạy lệnh dưới để bắt đầu và mới đầu thì chưa có password nên nhấn Enter khi nó hỏi password nhé:

root@ubuntu:~# mysql_secure_installation

Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] y #Thay đổi mật khẩu root mariaDB
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

Kiểm tra phiên bản MariaDB
root@ubuntu:~# mariadb --version

mariadb Ver 15.1 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper

 

V – Cài đặt PHP

Cài phiên bản chỉ định là PHP 7.4:

apt install php7.4-fpm php7.4-common php7.4-mbstring php7.4-xmlrpc php7.4-soap php7.4-gd php7.4-xml php7.4-intl php7.4-mysql php7.4-cli php7.4-zip php7.4-curl

root@ubuntu:~# systemctl enable php7.4-fpm #Bật khởi động cùng hệ thống
root@ubuntu:~# systemctl start php7.4-fpm #Khởi động PHP
root@ubuntu:~# systemctl status php7.4-fpm #Kiểm tra PHP

Kiểm tra lại phiên bản PHP php -v

Hoặc cài phiên bản PHP chỉ định là PHP8.1 thì bạn thay số tương ứng vào lệnh trên nhé!

Bây giờ ta đã cài đặt đủ các thành phần của LEMP stack. Nhưng vẫn 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.

 

Backup file config default: cp -a /etc/nginx/sites-available/default{,.orig}

Thay lại server_name _; thành domain của bạn nhé. ví dụ: server_name hoanggiangnam.com;

Mở thư mục: /etc/nginx/sites-available/. Trong ví dụ này, tên máy chủ được đặt là hoanggiangnam.com

nano /etc/nginx/sites-available/default

Thay toàn bộ nội dung bên trong đó bằng nội dung sau:

server {
    listen 80;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name _;
    location / {
            try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
    location ~ /\.ht {
            deny all;
    }
}

Trong đó:

  • listen : Xác định cổng Nginx lắng nghe. Trong trường hợp này là cổng 80 (mặc định của HTTP)
  • root : Xác định gốc lưu trữ các tệp của trang web
  • index : thứ tự ưu tiên các file cấu hình, nếu chúng tồn tại
  • server_name : Xác định khối máy chủ nào được sử dụng. Nó trỏ đến tên miền hoặc IP public của bạn
  • location / : Kiểm tra sự tồn tại của các tệp khớp với uri. Nếu nginx không thể tìm thấy tệp thích hợp, nó sẽ trả về 404
  • location ~ \.php$ : Khai báo nơi xử lý PHP bằng cách trỏ Nginx vào tệp cấu hình fastcgi-php.conf và tệp php7.4-fpm.sock
  • location ~ /\.ht : Xử lí các tệp .htaccess mà Nginx không xử lí. Bằng cách deny all chỉ thị, nếu bất kì tệp .htaccess xảy ra để tìm đường vào tài liệu gốc thì chúng sẽ không được phục vụ cho khách truy cập.

Kiểm tra xem file cấu hình mới có lỗi gì không:

nginx -t

Nếu không có lỗi gì sẽ có thông báo tương tự như sau.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nếu có lỗi thì sẽ có thông báo lỗi.

Reload Nginx:

systemctl reload nginx

Tạo file info.php để check phiên bản ở /var/www/html/

nano /var/www/html/info.php

Thêm vào nội dung sau:

<?php
phpinfo();
?>

Gõ ip_vps vào thanh URL trong trình duyệt:

<ip_vps>/info.php

Khi xuất hiện màn hình tương tự như hình có nghĩa là đã cài PHP thành công.

Sau khi cài đặt xong, bạn nên xóa file info.php, vì nó có thể cho người dùng trái phép một số gợi ý về cấu hình của trang web và giúp họ cố gắng đột nhập.

rm -rf /var/www/html/info.php

Trỏ domain của bạn về ip nữa là chạy web được rồi đấy.

Thư mục chính để chứa code là /var/www/html/

Nếu bạn muốn thêm nhiều tên miền vào thì cần tạo vHost bên dưới.

 

Cấu hình vhost – thêm tên miền

Tạo thư mực /home/hoanggiangnam.com/public_html để chứa mã nguồn website. Ở đây mình sẽ tạo ở thư mục HOME/ cho dễ sử dụng nhé:

mkdir -p /home/hoanggiangnam.com/public_html

Cấu hình nginx – nginx.conf

Đường dẫn các file cấu hình nginx ở thư mục này: /etc/nginx/sites-available/

Tạo file cấu hình nginx cho tên miền hoanggiangnam.com tại /etc/nginx/sites-available/hoanggiangnam.com bằng lệnh:

nano /etc/nginx/sites-available/hoanggiangnam.com

Nội dung:

server {
        listen 80;
        listen [::]:80;

        root /home/hoanggiangnam.com/public_html;
        index index.php index.html index.htm index.nginx-debian.html;

        server_name hoanggiangnam.com www.hoanggiangnam.com;

		location ~ \.php$ {
				include snippets/fastcgi-php.conf;
				fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
			}

        location / {
               # try_files $uri $uri/ =404;
			   # try_files $uri $uri/ /forums/index.php?$args;  # WordPress Permalinks nếu mã nguồn bạn để trong thư mục forums/sub-folder thì bật dòng này nhá.
			   try_files $uri $uri/ /index.php?$args;
        }
}

Nhớ thay tên miền của bạn vào và sửa lại phiên bản php ở dòng này fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;

Tạo một symbolic link để liên kết file /etc/nginx/sites-available/hoanggiangnam.com sang thư mục /etc/nginx/sites-enabled/. Nginx sẽ đọc các file cấu hình tại thư mục /etc/nginx/sites-enabled/ mỗi khi khởi động.
# ln -s /etc/nginx/sites-available/hoanggiangnam.com /etc/nginx/sites-enabled/
# nginx -t

Kết quả  nếu output cũng như bên dưới thì bạn đã cấu hình chính xác rồi đấy
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Khởi động lại Web Server bằng lệnh
# systemctl restart nginx

Chmod – Phân quyền thư mục

# chown -R www-data:www-data /home/* — đây là chmod toàn bộ thư mục có trong /home/
# chown -R www-data:www-data /home/hoanggiangnam.com

Tạo một file index.html chứa nội dung sau:
nano /home/hoanggiangnam.com/public_html/index.html

<html>
    <body>
        <center><h1>Hello hoanggiangnam.com</h1></center>
    </body>
</html>

Vào domain vừa thêm để check xem web đã sẵn sàng chưa nào.

Thêm một tên miền khác vào nữa thì lặp lại các bước tạo VHOST

Đến đây thì bạn có thể tạo Database để chạy web được rồi.

Lệnh tạo Database nhanh

Tạo Database, User, Password bằng vài lệnh đơn giản như sau:

# mysql -u root
# mysql -u root -p

  • Tạo Database
    MariaDB [(none)]> CREATE DATABASE tendb;
  • Tạo User
    MariaDB [(none)]> CREATE USER 'tenbuser'@'localhost' IDENTIFIED BY 'Password12345678';
  •  Gán quyền User Database
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON tendb.* TO 'tenbuser'@'localhost';
  • Reload all the privileges
    MariaDB [(none)]> FLUSH PRIVILEGES;
  • Show Database
    MariaDB [(none)]> show databases;
  • Thoát MariaDB
    MariaDB [(none)]> exit

Sau khi upload mã nguồn vào thư mục /var/www/html thì nhứ chmod lại nhé

# chown -R www-data:www-data /home/* — đây là chmod toàn bộ thư mục có trong /home/
# chown -R www-data:www-data /home/hoanggiangnam.com

 

VI – Cài đặt phpMyAdmin

phpMyAdmin là ứng dụng dùng để quản lý cơ sở dữ liệu dưới dạng giao diện, thông qua phpMyAdmin sẽ giúp bạn quản lý các database trực quan hơn.

1. Cài đặt phpMyAdmin

Hãy bắt đầu bằng cách cập nhật danh sách gói và cài đặt phpMyAdmin cho Nginx trên Ubuntu 20.04/20.10.

root@ubuntu:~#

apt-get install phpmyadmin -y

Sau khi bạn chạy lệnh sẽ xuất hiện một hộp thoại hỏi bạn chọn webserver để cài. Nếu webserver bạn không có ở đây, bạn không tick và nhấn Tab để di chuyển xuống chữ OK để cài. (cũng có thể nhấn ESC để tiếp tục cài)

Sau đó việc cài đặt sẽ tiếp tục và xuất hiện thêm một hộp thoại với thông tin người dùng với tên phpmyadmin bạn chọn Yes.

Sau đó đặt mật khẩu cho phpmyadmin. Bạn nhập mật khâu xong bấm tab để di chuyển xuống nút OK

Nhập lại mật khẩu một lần nữa để xác nhận.

Quá trình cài đặt hoàn tất, một cơ sở dữ liệu mới có tên là phpmyadmin sẽ được tạo và người dùng cơ sở dữ liệu phpmyadmin có các đặc quyền cần thiết để quản lý cơ sở dữ liệu này. Bạn có thể đăng nhập vào MariaDB và kiểm tra những đặc quyền mà người dùng phpmyadmin đã được cấp.

  root@ubuntu:~# mysql -u root
MariaDB [(none)]> show grants for phpmyadmin@localhost;

2. Tạo liên kết tượng trưng

Để Nginx phục vụ chính xác các tệp phpMyAdmin, chúng ta phải tạo một liên kết tượng trưng từ thư mục phpMyAdmin  /usr/share/phpmyadmin đến thư mục gốc của tài liệu Nginx.

Vị trí mặc định của gốc tài liệu Nginx trong Ubuntu 20.04/20.10 phải là  /var/www/html/, mặc dù nó có thể khác tùy thuộc vào thiết lập của bạn. Nếu bạn đã làm theo hướng dẫn trước đây để thiết lập nhiều miền cho Nginx , thư mục gốc của bạn có thể nằm ở đâu đó như  /home/phpyadmin.hoanggiangnam.com/public_html.

Khi bạn đã xác nhận gốc tài liệu của mình, hãy tạo một liên kết tượng trưng từ thư mục phpMyAdmin đến gốc tài liệu của bạn. Ở đây tôi sẽ giả định IP gốc của bạn là trỏ về  /var/www/html/ và  tôi sẽ chỉ cần thêm  phpmyadmin vào cuối của nó.

Điều này sẽ cho phép tôi truy cập phpMyAdmin tại  ipvps/phpmyadmin.

ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin — dạng ipvps/phpmyadmin

Hoặc
ln -s /usr/share/phpmyadmin /home/phpyadmin.hoanggiangnam.com/public_html/phpmyadmin — Dạng này là https://phpyadmin.hoanggiangnam.com/phpmyadmin
<!——— phần này tham khảo thêm ——-
 Cấu hình dạng sub-domain
Nếu là dạng sub-domain phpmyadmin.hoanggiangnam.com thì lệnh dưới
ln -s /usr/share/phpmyadmin /home/phpmyadmin.hoanggiangnam.com/public_html

Cấu hình để login phpMyAdmin

Bạn tạo một file cấu hình như sau:

root@ubuntu:~# nano /etc/nginx/conf.d/phpmyadmin.conf

Sau đó bạn thêm nội dung cấu hình bên dưới vào, và thay đổi phpmyadmin.hoanggiangnam.com bằng tên miền của bạn.
server {
  listen 80;
  listen [::]:80;
  server_name phpmyadmin.hoanggiangnam.com;
  root /home/phpmyadmin.hoanggiangnam.com/public_html; #root /usr/share/phpmyadmin/;
  index index.php index.html index.htm index.nginx-debian.html;

  access_log /var/log/nginx/phpmyadmin_access.log;
  error_log /var/log/nginx/phpmyadmin_error.log;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ ^/(doc|sql|setup)/ {
    deny all;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /\.ht {
    deny all;
  }
}

 

root@ubuntu:~# nginx -t

Sau đó khởi động lại nginx

root@ubuntu:~# systemctl restart nginx

——————————>

 

3. Kiểm tra phpMyAdmin

Giờ đây, bạn có thể truy cập giao diện web phpMyAdmin bằng cách truy cập tên miền hoặc địa chỉ IP công cộng của máy chủ, sau đó là  /phpmyadmin. ví dụ  http://hoanggiangnam.com/phpmyadmin hoặc http://192.168.1.10/phpmyadmin

 

4. Tạo siêu người dùng MySQL – USER PASSWORD quyền admin/root

Trong MySQL 5.7 trở lên, bạn sẽ không thể đăng nhập vào phpMyAdmin bằng tài khoản root của MySQL và sẽ gặp lỗi “Quyền truy cập bị từ chối đối với người dùng ‘root’@’localhost’” . Thay vào đó, bạn nên tạo một tài khoản siêu người dùng mới chỉ dành cho phpMyAdmin. Nếu bạn muốn buộc MySQL cho phép đăng nhập root qua phpMyAdmin, hãy xem: Không thể đăng nhập vào phpMyAdmin bằng root

Lưu ý:

  • Để truy cập được từ tên miền thì bạn cần phải trỏ tên miền về IP máy chủ.
  • Do các vấn đề bảo mật nên Ubuntu 18.04Ubuntu 20.04 không hỗ trợ đăng nhập bằng root mà thay vào đó bạn hãy tạo User phpMyAdmin và Pasword MySQL

Vậy nên bạn cần tạo User Pass để login

root@ubuntu:~# mysql -u root hoặc mysql -u root -p và nhập mật khẩu root lúc đầu cài đặt

sau đó:

MariaDB [(none)]> CREATE USER 'admin'@'localhost' IDENTIFIED BY '12345678';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

Nhớ thay lại user pass tô đỏ thành của bạn nhé

Thoát MySQL.
exit
Bây giờ bạn có thể truy cập phpMyAdmin bằng tài khoản người dùng mới này.

Bạn nên thiết lập một số bảo mật bổ sung cho phpMyAdmin theo các bước bên dưới.

VII. Bảo Mật phpMyAdmin

Thông thường thì mình làm bước 3 và 4 cho nhanh.

1. URL phpMyAdmin ẩn (Được khuyến nghị)

Bot và những kẻ tấn công liên tục quét các máy chủ web để tìm trang đăng nhập phpMyAdmin, vì vậy bạn nên thay đổi URL thành một trang khác.

Trong ví dụ này, chúng tôi sẽ thay đổi nó từ  hoanggiangnam.com/phpmyadmin thành  hoanggiangnam.com/pma_hidden, mặc dù bạn có thể thay đổi nó thành bất cứ thứ gì bạn muốn.

Ở bước 2, chúng tôi đã tạo một liên kết tượng trưng trong thư mục gốc của tài liệu /var/www/html/phpmyadmin

Tất cả những gì chúng ta cần làm là đổi tên liên kết tượng trưng này, trong ví dụ này, thành:  pma_hidden. Hãy chắc chắn rằng bạn nhập gốc tài liệu chính xác ở đây. Mặc định là  /var/www/html mặc dù nó có thể giống như  /var/www/hoanggiangnam.com/public_html/ trên máy chủ của bạn.

mv /var/www/html/phpmyadmin /var/www/html/pma_hidden

Bây giờ bạn có thể truy cập phpMyAdmin tại hoanggiangnam.com/pma_hidden hoặc ipvps/pma_hidden

2. Bảo mật phpMyAdmin (Được khuyến nghị)

Cái tên apache2-utilsgây hiểu lầm. Nó không phải là một phần của máy chủ Apache. Apache chỉ phụ thuộc vào những thứ mà bạn có thể tìm thấy trong gói này.

Điều này có nghĩa là sau khi biên dịch và cài đặt,  apache2-utilscó thể được gỡ bỏ một cách an toàn thông qua tệp apt-get remove apache-2utils.

 

Để cung cấp thêm một lớp bảo mật, chúng ta có thể thiết lập xác thực trong Nginx.

Bây giờ chúng ta sẽ cài đặt  apache2-utils, có thể tạo  .htpasswd tệp hoạt động với cả Nginx và Apache.

apt install apache2-utils

Sau khi cài đặt, chúng tôi có thể tạo  .htpasswd tệp. Đơn giản chỉ cần thay đổi  username thành bất kỳ tên người dùng nào bạn muốn. Tạo một mật khẩu  và giữ nó an toàn.

htpasswd -c /etc/nginx/.htpasswd username

Bây giờ sẽ có một  .htpasswd tệp chứa tên người dùng và mật khẩu được mã hóa của bạn. Bạn có thể kiểm tra với:

cat /etc/nginx/.htpasswd

Bạn sẽ thấy một cái gì đó nhưusername:$apr1sdfsdf4435sdtskLfWmmg1sfdsdgg4

Bây giờ chúng ta cần thêm hai lệnh vào tệp cấu hình Nginx của mình. Vị trí của tệp cấu hình có thể khác nhau tùy thuộc vào thiết lập của bạn, mặc dù mặc định thường ở định dạng  /etc/nginx/sites-available/default. Nếu bạn thiết lập nhiều miền trong hướng dẫn trước, tệp cấu hình của bạn có thể nằm ở đâu đó như /etc/nginx/sites-available/hoanggiangnam.com

Trong ví dụ này, chúng tôi sẽ giả sử tệp cấu hình ở định dạng  /etc/nginx/sites-available/default. Mở tệp để chỉnh sửa.

nano /etc/nginx/sites-available/default

Cuộn xuống và tìm  location các khối và dán vào một khối mới bên dưới chúng với tên của thư mục phpmyadmin bị đổi tên của bạn, trong ví dụ này  pma_hidden.

/etc/nginx/sites-available/default
location /pma_hidden {
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/.htpasswd;
}

Lưu tệp và thoát (nhấn  CTRL +  X, nhấn  Y rồi nhấn  ENTER).

Kiểm tra xem tệp cấu hình Nginx có hợp lệ không, nếu không máy chủ có thể gặp sự cố khi khởi động lại.

nginx -t

Nếu hợp lệ, hãy tải lại cấu hình Nginx.

service nginx reload

Bây giờ khi truy cập  hoanggiangnam.com/pma_hidden, bạn sẽ thấy một cửa sổ xác thực.

3. Bảo mật bằng user password trên index.php nếu không muốn cài apache2-utils

Thêm 1 lớp bảo mật bằng user pass trong file index.php /usr/share/phpmyadmin/bằng cách chạy lệnh dưới và thêm đoạn code dưới vào sau <?php

nano /usr/share/phpmyadmin/index.php

//===========Thay lại User Pass
$config['user_login'] = 'useradmin';
$config['pass_login'] = 'passadmin';

if ($_SERVER['PHP_AUTH_USER'] != $config['user_login'] || $_SERVER['PHP_AUTH_PW'] != $config['pass_login']){
header('WWW-Authenticate: Basic realm="Please declare admin login information."');
header('HTTP/1.0 401 Unauthorized');

//Trang sẽ hiển thị khi thông tin khai báo sai. (support HTML).
echo '<center>Access Denied!!! This is page for administrators. <br></br><a href="#" title="Login">Login page for customers</a> </center>';
exit;
}
//===========END

Nếu ko ko vào đc ip-vps/phpmyadmin thì khỏi động lại VPS thử nhé

User Pass login lần 1: Trong đoạn code php ở trên

User Pass login lần 2:  root | password của MariaDB or MySQL đã cài lúc đầu.

4. Kích hoạt Google reCAPTCHA

Để kích hoạt Google reCAPTCHA trước tiên các bạn cần đăng ký một API V3 tại link sau: https://www.google.com/recaptcha/intro/v3.html

————————-

Sau khi đăng ký thành công bạn sẽ được cung cấp SITE KEY và SECRET KEY. Tiếp theo các bạn mở file /usr/share/phpMyAdmin/config.inc.php và thêm 2 dòng sau vào cuối file

$cfg['CaptchaLoginPublicKey'] = 'SITE KEY';
$cfg['CaptchaLoginPrivateKey'] = 'SECRET KEY';

Thay thế SITE KEY và SECRET KEY của bạn vào, sau đó truy cập ip-vps/phpmyadmin để kiểm tra

 

 

 

Cách 2: Dạng tải thủ công theo phiên bản chỉ định. ( cái này là bài cũ bên centos mình chưa test lại)

1.1 – Cài đặt PhpMyAdmin 5.0.2

Để cài đặt PhpMyAdmin các bạn chạy lần lượt 7 lệnh sau

cd /usr/share
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.zip
unzip phpMyAdmin-5.2.0-all-languages.zip
mv phpMyAdmin-5.2.0-all-languages phpMyAdmin
rm -rf phpMyAdmin-5.2.0-all-languages.zip
rm -rf /usr/share/phpMyAdmin/setup
ln -s /usr/share/phpMyAdmin /usr/share/nginx/html/phpMyAdmin

Lưu ý: Truy cập phpmyadmin.net để lấy link down phiên bản mới nhất, nhớ sửa tên file phpMyAdmin vì linux phân biệt chử HOA – thường.

1.2 – Cấu hình PhpMyAdmin

File cấu hình của PhpMyadmin là file config.inc.php. Trước tiên các bạn cần chạy lệnh sau để đổi tên:
mv /usr/share/phpMyAdmin/config.sample.inc.php /usr/share/phpMyAdmin/config.inc.php

Tiếp theo mở file /usr/share/phpMyAdmin/config.inc.php và chỉnh sửa các thông số sau
– Tìm
$cfg['blowfish_secret'] = '';

thêm một đoạn ký tự bất kỳ vào giữa cặp nháy đơn. Ví dụ:
$cfg['blowfish_secret'] = 'DILHJClvsrljkvFGltr3ewg3s2df3sAD';

– Tiếp theo thêm vào cuối file doạn code sau
$cfg['TempDir'] = '/usr/share/phpMyAdmin/tmp/';

Sau đó các bạn cần tạo thư mục tmp cho PhpMyAdmin
mkdir -p /usr/share/phpMyAdmin/tmp
chown -R www-data:www-data /usr/share/phpMyAdmin/tmp

1.3 – Cấu hình bảo mật cho PhpMyAdmin

Chặn truy cập thư mục

Các bạn mở file default ở trong thư mục /etc/nginx/sites-available/

Backup file: cp -a /etc/nginx/sites-available/default{,.orig}

nano /etc/nginx/sites-available/default

xoá toàn bộ nội dung và thay thế bằng nội dung sau:

Code:
server {
    listen 80;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name _;
    location / {
            try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
    location ~ /\.ht {
            deny all;
    }

    location /phpmyadmin {
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

# bật lên nếu muốn chặn truy cập phpmyadmin từ bên ngoài
#    location ~ ^/phpmyadmin {
#        rewrite ^/* /phpmyadmin last;
#    }
#    location ~ ^/pma {
#        rewrite ^/* /phpmyadmin last;
#    }
    location ^~ /phpmyadmin/log/ {
        deny all;
    }
    location ^~ /phpmyadmin/libraries/ {
        deny all;
    }
    location ^~ /phpmyadmin/templates/ {
        deny all;
    }
    location ^~ /phpmyadmin/tmp/ {
        deny all;
    }
}
Mở file /etc/nginx/nginx.conf tìm và thêm vào bên trên dòng 

include /etc/nginx/conf.d/*.conf;

 đoạn rule sau: include /etc/nginx/default.conf;

 

 

Tham khảo thêm:

Cảm ơn các bạn đã theo dõi bài viết này, tiếp tục về LEMP Stack trên Ubuntu. Ở các bài viết sau mình sẽ hướng dẫn các bạn cài đặt WordPress, SSL và các ứng dụng cache đi kèm.

Leave a Reply