Mục lục

Không có mục lục
Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP stack) trên Ubuntu 20.04

Ngày đăng: 27 tháng 2 năm 2023

Ubuntu

Giới thiệu

LEMP software stack là một nhóm phần mềm có thể được sử dụng để phục vụ các trang web động và ứng dụng web được viết bằng PHP. Đây là từ viết tắt mô tả hệ điều hành Linux, với máy chủ web Nginx (phát âm giống như “Engine-X”). Dữ liệu phụ trợ được lưu trữ trong cơ sở dữ liệu MySQL và quá trình xử lý động được xử lý bởi PHP.

Hướng dẫn này trình bày cách cài đặt LEMP stack trên máy chủ Ubuntu 20.04. Hệ điều hành Ubuntu đáp ứng yêu cầu đầu tiên. Chúng tôi sẽ mô tả cách thiết lập và chạy các thành phần còn lại.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn sẽ cần truy cập vào máy chủ Ubuntu 20.04 với tư cách là non-root sudo user thông thường và bật tường lửa trên máy chủ của bạn. Để thiết lập điều này, bạn có thể làm theo hướng dẫn thiết lập máy chủ ban đầu của chúng tôi cho Ubuntu 20.04.

Bước 1 – Cài đặt Nginx Web Server

Để hiển thị các trang web cho khách truy cập trang web của chúng tôi, chúng tôi sẽ sử dụng Nginx, một máy chủ web hiệu suất cao. Chúng tôi sẽ sử dụng trình quản lý gói apt để lấy phần mềm này.

Vì đây là lần đầu tiên chúng tôi sử dụng apt cho phiên này, hãy bắt đầu bằng cách cập nhật chỉ mục gói máy chủ của bạn. Sau đó, bạn có thể sử dụng apt install để cài đặt Nginx:

  1. sudo apt update
  2. sudo apt install nginx

Khi được nhắc, hãy nhập Y để xác nhận rằng bạn muốn cài đặt Nginx. Sau khi cài đặt xong, máy chủ web Nginx sẽ hoạt động và chạy trên máy chủ Ubuntu 20.04 của bạn.

Nếu bạn đã bật tường lửa ufw, như được đề xuất trong hướng dẫn thiết lập máy chủ ban đầu của chúng tôi, bạn sẽ cần cho phép kết nối với Nginx. Nginx đăng ký một vài cấu hình ứng dụng UFW khác nhau khi cài đặt. Để kiểm tra cấu hình UFW nào khả dụng, hãy chạy:

  1. sudo ufw app list
Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Bạn nên kích hoạt cấu hình hạn chế nhất vẫn cho phép lưu lượng bạn cần. Vì bạn chưa thiết lập cấu hình SSL cho máy chủ của mình trong hướng dẫn này, nên bạn chỉ cần cho phép lưu lượng HTTP thông thường trên cổng 80.

Kích hoạt tính năng này bằng cách gõ:

  1. sudo ufw allow 'Nginx HTTP'

Bạn có thể xác minh thay đổi bằng cách chạy:

  1. sudo ufw status

Đầu ra của lệnh này sẽ hiển thị rằng lưu lượng HTTP hiện được cho phép:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Với quy tắc tường lửa mới được thêm vào, 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 vào tên miền hoặc địa chỉ IP công cộng của máy chủ trong trình duyệt web của bạn.

Nếu bạn không có tên miền trỏ đến máy chủ của mình và bạn không biết địa chỉ IP công khai của máy chủ, bạn có thể tìm thấy nó bằng cách chạy lệnh sau:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Thao tác này sẽ in ra một vài địa chỉ IP. Bạn có thể thử lần lượt từng cái trong trình duyệt web của mình.

Thay vào đó, bạn có thể kiểm tra địa chỉ IP nào có thể truy cập được, như được xem từ các vị trí khác trên internet:

  1. curl -4 icanhazip.com

Nhập địa chỉ mà bạn nhận được trong trình duyệt web của mình và nó sẽ đưa bạn đến trang đích mặc định của Nginx:

http://server_domain_or_IP

description image

Nếu bạn thấy trang này, điều đó có nghĩa là bạn đã cài đặt Nginx thành công và kích hoạt lưu lượng HTTP cho máy chủ web của mình.

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

Bây giờ bạn đã có một máy chủ web đang hoạt động, bạn cần cài đặt hệ thống cơ sở dữ liệu để có thể lưu trữ và quản lý dữ liệu cho trang web của mình. MySQL là một hệ thống quản lý cơ sở dữ liệu phổ biến được sử dụng trong môi trường PHP.

Một lần nữa, sử dụng apt để tải và cài đặt phần mềm này:

  1. sudo apt install mysql-server

Khi được nhắc, hãy xác nhận cài đặt bằng cách nhập Y, rồi ENTER.

Khi quá trình cài đặt kết thúc, bạn nên chạy tập lệnh bảo mật được cài đặt sẵn với MySQL. Tập lệnh này sẽ xóa một số cài đặt mặc định không an toàn và khóa quyền truy cập vào hệ thống cơ sở dữ liệu của bạn. Bắt đầu tập lệnh tương tác bằng cách chạy:

  1. sudo mysql_secure_installation

Thao tác này sẽ hỏi bạn có muốn thiết lập cấu hình VALIDATE PASSWORD PLUGIN không.

Lưu ý: Kích hoạt tính năng này là một cuộc gọi phán xét. Nếu được bật, mật khẩu không phù hợp với tiêu chí đã chỉ định sẽ bị MySQL từ chối kèm theo lỗi. Việc tắt tính năng xác thực là an toàn, nhưng bạn phải luôn sử dụng mật khẩu mạnh, duy nhất cho thông tin đăng nhập cơ sở dữ liệu.

Trả lời Y nếu có hoặc bất kỳ điều gì khác để tiếp tục mà không cần bật.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Nếu bạn trả lời “yes”, bạn sẽ được yêu cầu chọn mức độ xác thực mật khẩu. Hãy nhớ rằng nếu bạn nhập 2 cho mức mạnh nhất, bạn sẽ gặp lỗi khi cố gắng đặt bất kỳ mật khẩu nào không chứa số, chữ hoa và chữ thường, ký tự đặc biệt hoặc dựa trên các từ thông dụng trong từ điển.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary              file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: `1`

Bất kể bạn có chọn thiết lập VALIDATE PASSWORD PLUGIN hay không, máy chủ của bạn tiếp theo sẽ yêu cầu bạn chọn và xác nhận mật khẩu cho MySQL root user. Điều này không được nhầm lẫn với system root. Database root user là người dùng quản trị có đầy đủ đặc quyền đối với hệ thống cơ sở dữ liệu. Mặc dù phương thức xác thực mặc định cho MySQL root user không sử dụng mật khẩu, ngay cả khi mật khẩu được đặt, bạn nên xác định một mật khẩu mạnh tại đây như một biện pháp an toàn bổ sung. Chúng ta sẽ nói về điều này trong giây lát.

Nếu bạn đã bật xác thực mật khẩu, bạn sẽ được hiển thị độ mạnh của mật khẩu cho mật khẩu gốc mà bạn vừa nhập và máy chủ của bạn sẽ hỏi bạn có muốn tiếp tục với mật khẩu đó không. Nếu bạn hài lòng với mật khẩu hiện tại của mình, hãy nhập Y cho “yes” tại dấu nhắc:

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Đối với các câu hỏi còn lại, nhấn Y và nhấn phím ENTER tại mỗi dấu nhắc. Thao tác này sẽ xóa một số người dùng ẩn danh và cơ sở dữ liệu thử nghiệm, vô hiệu hóa đăng nhập gốc từ xa và tải các quy tắc mới này để MySQL ngay lập tức tôn trọng những thay đổi bạn đã thực hiện.

Khi bạn hoàn tất, hãy kiểm tra xem bạn có thể đăng nhập vào bảng điều khiển MySQL hay không bằng cách nhập:

  1. sudo mysql

Điều này sẽ kết nối với máy chủ MySQL với tư cách là administrative database user root, điều này được suy ra bằng cách sử dụng sudo khi chạy lệnh này. Bạn sẽ thấy đầu ra như thế này:

Output
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 22 Server version: 8.0.19-0ubuntu5 (Ubuntu) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

Để thoát khỏi bảng điều khiển MySQL, hãy nhập:

  1. exit

Lưu ý rằng bạn không cần cung cấp mật khẩu để kết nối với tư cách root user, mặc dù bạn đã xác định mật khẩu khi chạy tập lệnh mysql_secure_installation. Đó là vì phương thức xác thực mặc định cho administrative MySQL user là unix_socket thay vì password. Mặc dù ban đầu điều này có vẻ giống như một vấn đề bảo mật, nhưng nó làm cho máy chủ cơ sở dữ liệu an toàn hơn vì những người dùng duy nhất được phép đăng nhập với tư cách là root MySQL user là những người dùng hệ thống có đặc quyền sudo kết nối từ bảng điều khiển hoặc thông qua một ứng dụng đang chạy với cùng đặc quyền. Về mặt thực tế, điều đó có nghĩa là bạn sẽ không thể sử dụng administrative database root user để kết nối từ ứng dụng PHP của mình. Đặt mật khẩu cho tài khoản MySQL gốc hoạt động như một biện pháp bảo vệ, trong trường hợp phương thức xác thực mặc định được thay đổi từ unix_socket thành password.

Để tăng cường bảo mật, tốt nhất bạn nên thiết lập tài khoản người dùng chuyên dụng với các đặc quyền ít mở rộng hơn cho mọi cơ sở dữ liệu, đặc biệt nếu bạn dự định có nhiều cơ sở dữ liệu được lưu trữ trên máy chủ của mình.

Lưu ý: Tại thời điểm viết bài này, thư viện MySQL PHP gốc mysqlnd không hỗ trợ caching_sha2_authentication, phương thức xác thực mặc định cho MySQL 8. Vì lý do đó, khi tạo người dùng cơ sở dữ liệu cho các ứng dụng PHP trên MySQL 8, bạn sẽ cần thực hiện chắc chắn rằng chúng được thiết lập cấu hình để sử dụng mysql_native_password thay thế. Chúng tôi sẽ trình bày cách thực hiện điều đó trong Bước 6.

Máy chủ MySQL của bạn hiện đã được cài đặt và bảo mật. Tiếp theo, chúng ta sẽ cài đặt PHP, thành phần cuối cùng trong LEMP stack.

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

Bạn đã cài đặt Nginx để phục vụ nội dung của mình và cài đặt MySQL để lưu trữ và quản lý dữ liệu của bạn. Bây giờ bạn có thể cài đặt PHP để xử lý mã và tạo nội dung động cho máy chủ web.

Trong khi Apache nhúng PHP interpreter trong mỗi yêu cầu, Nginx yêu cầu một chương trình bên ngoài để xử lý việc xử lý PHP và hoạt động như một cầu nối giữa chính PHP interpreter và máy chủ web. Điều này cho phép hiệu suất tổng thể tốt hơn trong hầu hết các trang web dựa trên PHP, nhưng nó yêu cầu cấu hình bổ sung. Bạn sẽ cần cài đặt php-fpm, viết tắt của “PHP fastCGI process manager” và yêu cầu Nginx chuyển các yêu cầu PHP tới phần mềm này để xử lý. Ngoài ra, bạn sẽ cần php-mysql, một mô-đun PHP cho phép PHP giao tiếp với cơ sở dữ liệu dựa trên MySQL. Các gói PHP lõi sẽ tự động được cài đặt dưới dạng phụ thuộc.

Để cài đặt các gói php-fpmphp-mysql, hãy chạy:

  1. sudo apt install php-fpm php-mysql

Khi được nhắc, hãy nhập YENTER để xác nhận cài đặt.

Bây giờ bạn đã cài đặt các thành phần PHP của mình. Tiếp theo, bạn sẽ thiết lập cấu hình Nginx để sử dụng chúng.

Bước 4 - Thiết lập cấu hình Nginx để sử dụng Bộ xử lý PHP

Khi sử dụng máy chủ web Nginx, chúng ta có thể tạo các khối máy chủ (tương tự như máy chủ ảo trong Apache) để đóng gói các chi tiết cấu hình và lưu trữ nhiều tên miền trên một máy chủ. Trong hướng dẫn này, chúng tôi sẽ sử dụng your_domain làm tên miền mẫu.

Trên Ubuntu 20.04, Nginx có một khối máy chủ được bật theo mặc định và được thiết lập cấu hình để phân phối tài liệu ra khỏi thư mục tại /var/www/html. Mặc dù điều này hoạt động tốt cho một trang web, nhưng nó có thể trở nên khó quản lý nếu bạn đang lưu trữ nhiều trang web. Thay vì sửa đổi /var/www/html, chúng tôi sẽ tạo cấu trúc thư mục trong /var/www cho trang web your_domain, để lại /var/www/html làm thư mục mặc định sẽ được phục vụ nếu yêu cầu của khách hàng không phù hợp với bất kỳ trang web khác.

Tạo thư mục web gốc cho your_domain như sau:

  1. sudo mkdir /var/www/your_domain

Tiếp theo, chỉ định quyền sở hữu thư mục với biến môi trường $USER, sẽ tham chiếu người dùng hệ thống hiện tại của bạn:

  1. sudo chown -R $USER:$USER /var/www/your_domain

Sau đó, mở một tệp cấu hình mới trong thư mục có sẵn các trang web của Nginx bằng trình chỉnh sửa dòng lệnh ưa thích của bạn. Ở đây, chúng tôi sẽ sử dụng nano:

  1. sudo nano /etc/nginx/sites-available/your_domain

Thao tác này sẽ tạo một tệp trống mới. Dán vào cấu hình cơ bản sau:

/etc/nginx/sites-available/your_domain
server {
    listen 80;
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    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;
    }

}

Đây là những gì mỗi chỉ thị và khối vị trí này làm:

  • listen - Xác định cổng Nginx sẽ lắng nghe. Trong trường hợp này, nó sẽ lắng nghe trên cổng 80, cổng mặc định cho HTTP.
  • root — Xác định gốc tài liệu nơi lưu trữ các tệp do trang web này cung cấp.
  • index — Xác định thứ tự Nginx sẽ ưu tiên các tệp chỉ mục cho trang web này. Thực tế phổ biến là liệt kê các tệp index.html có mức độ ưu tiên cao hơn các tệp index.php để cho phép nhanh chóng thiết lập trang đích bảo trì trong các ứng dụng PHP. Bạn có thể điều chỉnh các cài đặt này để phù hợp hơn với nhu cầu ứng dụng của mình.
  • server_name — Xác định tên miền và/hoặc địa chỉ IP mà khối máy chủ này sẽ phản hồi. Trỏ lệnh này tới tên miền hoặc địa chỉ IP công cộng của máy chủ của bạn.
  • location / — Khối vị trí đầu tiên bao gồm lệnh try_files, kiểm tra sự tồn tại của tệp hoặc thư mục khớp với yêu cầu URI. Nếu Nginx không thể tìm thấy tài nguyên phù hợp, nó sẽ trả về lỗi 404.
  • location ~ \.php$ — Khối vị trí này xử lý quá trình xử lý PHP thực tế bằng cách trỏ Nginx tới tệp cấu hình fastcgi-php.conf và tệp php7.4-fpm.sock, tệp này khai báo ổ cắm nào được liên kết với php-fpm.
  • location ~ /\.ht — Khối vị trí cuối cùng xử lý các tệp .htaccess mà Nginx không xử lý. Bằng cách thêm lệnh deny all, nếu bất kỳ tệp .htaccess nào tìm được đường vào thư mục gốc của tài liệu, chúng sẽ không được cung cấp cho khách truy cập.

Khi bạn chỉnh sửa xong, hãy lưu và đóng tệp. Nếu bạn đang sử dụng nano, bạn có thể làm như vậy bằng cách nhập CTRL+X rồi yENTER để xác nhận.

Kích hoạt cấu hình của bạn bằng cách liên kết đến tệp cấu hình từ thư mục sites-enabled của Nginx:

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Sau đó, hủy liên kết tệp cấu hình mặc định khỏi thư mục /sites-enabled/:

  1. sudo unlink /etc/nginx/sites-enabled/default

Lưu ý: Nếu bạn cần khôi phục cấu hình mặc định, bạn có thể làm như vậy bằng cách tạo lại liên kết tượng trưng, như sau:

  1. sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

Điều này sẽ yêu cầu Nginx sử dụng cấu hình vào lần tải lại tiếp theo. Bạn có thể kiểm tra cấu hình của mình để tìm lỗi cú pháp bằng cách nhập:

  1. sudo nginx -t

Nếu có bất kỳ lỗi nào được báo cáo, hãy quay lại tệp cấu hình của bạn để xem lại nội dung trước khi tiếp tục.

Khi bạn đã sẵn sàng, hãy tải lại Nginx để áp dụng các thay đổi:

  1. sudo systemctl reload nginx

Trang web mới của bạn hiện đang hoạt động nhưng gốc web /var/www/your_domain vẫn trống. Tạo tệp index.html ở vị trí đó để chúng ta có thể kiểm tra xem khối máy chủ mới của bạn có hoạt động như mong đợi không:

  1. nano /var/www/your_domain/index.html

Bao gồm nội dung sau trong tệp này:

/var/www/your_domain/index.html
<html>
  <head>
    <title>your_domain website</title>
  </head>
  <body>
    <h1>Hello World!</h1>

    <p>This is the landing page of <strong>your_domain</strong>.</p>
  </body>
</html>}

Bây giờ, hãy truy cập trình duyệt của bạn và truy cập tên miền hoặc địa chỉ IP của máy chủ, như được liệt kê trong chỉ thị server_name trong tệp cấu hình khối máy chủ của bạn:

http://server_domain_or_IP

Bạn sẽ thấy một trang như thế này:

description image

Nếu bạn thấy trang này, điều đó có nghĩa là khối máy chủ Nginx của bạn đang hoạt động như mong đợi.

Bạn có thể để nguyên tệp này làm trang đích tạm thời cho ứng dụng của mình cho đến khi bạn thiết lập tệp index.php để thay thế nó. Khi bạn thực hiện điều đó, hãy nhớ xóa hoặc đổi tên tệp index.html khỏi thư mục gốc của tài liệu, vì nó sẽ được ưu tiên hơn tệp index.php theo mặc định.

Ngăn xếp LEMP của bạn hiện đã được định cấu hình đầy đủ. Trong bước tiếp theo, chúng tôi sẽ tạo một tập lệnh PHP để kiểm tra xem Nginx có thực sự có thể xử lý các tệp .php trong trang web mới được định cấu hình của bạn hay không.

Bước 5 – Kiểm tra PHP với Nginx

LEMP stack của bạn bây giờ sẽ được thiết lập hoàn chỉnh. Bạn có thể kiểm tra nó để xác thực rằng Nginx có thể chuyển giao chính xác các tệp .php cho bộ xử lý PHP của bạn.

Bạn có thể làm điều này bằng cách tạo một tệp PHP thử nghiệm trong thư mục gốc của tài liệu. Mở một tệp mới có tên info.php trong thư mục gốc của tài liệu trong trình soạn thảo văn bản của bạn:

  1. nano /var/www/your_domain/info.php

Nhập hoặc dán các dòng sau vào tệp mới. Đây là mã PHP hợp lệ sẽ trả về thông tin về máy chủ của bạn:

/var/www/your_domain/info.php
<?php
phpinfo();

Khi bạn hoàn tất, hãy lưu và đóng tệp bằng cách nhập CTRL+X rồi yENTER để xác nhận.

Bây giờ bạn có thể truy cập trang này trong trình duyệt web của mình bằng cách truy cập tên miền hoặc địa chỉ IP công khai mà bạn đã thiết lập trong tệp cấu hình Nginx của mình, theo sau là /info.php:

http://server_domain_or_IP/info.php

Bạn sẽ thấy một trang web chứa thông tin chi tiết về máy chủ của bạn:

description image

Sau khi kiểm tra thông tin liên quan về máy chủ PHP của bạn thông qua trang đó, tốt nhất bạn nên xóa tệp bạn đã tạo vì tệp này chứa thông tin nhạy cảm về môi trường PHP và máy chủ Ubuntu của bạn. Bạn có thể sử dụng rm để xóa tệp đó:

  1. sudo rm /var/www/your_domain/info.php

Bạn luôn có thể tạo lại tệp này nếu sau này bạn cần.

Bước 6 — Kiểm tra kết nối cơ sở dữ liệu từ PHP (Tùy chọn)

Nếu bạn muốn kiểm tra xem PHP có thể kết nối với MySQL và thực hiện các truy vấn cơ sở dữ liệu hay không, bạn có thể tạo một bảng kiểm tra với dữ liệu giả và truy vấn nội dung của nó từ tập lệnh PHP. Trước khi có thể làm điều đó, chúng ta cần tạo một cơ sở dữ liệu thử nghiệm và một MySQL user mới được cấu hình đúng cách để truy cập nó.

Tại thời điểm viết bài này, thư viện MySQL PHP gốc mysqlnd không hỗ trợ caching_sha2_authentication, phương thức xác thực mặc định cho MySQL 8. Chúng ta sẽ cần tạo một user mới với phương thức xác thực mysql_native_password để có thể kết nối với Cơ sở dữ liệu MySQL từ PHP.

Chúng ta sẽ tạo một cơ sở dữ liệu có tên là example_database và một người dùng có tên là example_user, nhưng bạn có thể thay thế những tên này bằng các giá trị khác.

Đầu tiên, kết nối với bảng điều khiển MySQL bằng tài khoản root:

  1. sudo mysql

Để tạo cơ sở dữ liệu mới, hãy chạy lệnh sau từ bảng điều khiển MySQL của bạn:

  1. CREATE DATABASE example_database;

Giờ đây, bạn có thể tạo người dùng mới và cấp cho họ đầy đủ đặc quyền trên cơ sở dữ liệu tùy chỉnh mà bạn vừa tạo.

Lệnh sau tạo một người dùng mới có tên example_user, sử dụng mysql_native_password làm phương thức xác thực mặc định. Chúng ta đang xác định mật khẩu của người dùng này là password, nhưng bạn nên thay thế giá trị này bằng mật khẩu an toàn do chính bạn chọn.

  1. CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Bây giờ chúng ta cần cấp quyền cho người dùng này đối với cơ sở dữ liệu example_database:

  1. GRANT ALL ON example_database.* TO 'example_user'@'%';

Điều này sẽ cung cấp cho người dùng example_user toàn quyền đối với cơ sở dữ liệu example_database, đồng thời ngăn người dùng này tạo hoặc sửa đổi các cơ sở dữ liệu khác trên máy chủ của bạn.

Bây giờ hãy thoát khỏi MySQL shell bằng:

  1. exit

Bạn có thể kiểm tra xem người dùng mới có quyền phù hợp hay không bằng cách đăng nhập lại vào bảng điều khiển MySQL, lần này bằng thông tin xác thực người dùng tùy chỉnh:

  1. mysql -u example_user -p

Lưu ý cờ -p trong lệnh này, nó sẽ nhắc bạn nhập mật khẩu được sử dụng khi tạo người dùng example_user. Sau khi đăng nhập vào bảng điều khiển MySQL, hãy xác nhận rằng bạn có quyền truy cập vào cơ sở dữ liệu example_database:

  1. SHOW DATABASES;

Điều này sẽ cung cấp cho bạn đầu ra sau:

Output
+--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

Tiếp theo, chúng ta sẽ tạo một bảng thử nghiệm có tên todo_list. Từ bảng điều khiển MySQL, hãy chạy câu lệnh sau:

  1. CREATE TABLE example_database.todo_list (
  2. item_id INT AUTO_INCREMENT,
  3. content VARCHAR(255),
  4. PRIMARY KEY(item_id)
  5. );

Chèn một vài hàng nội dung vào bảng kiểm tra. Bạn có thể muốn lặp lại lệnh tiếp theo một vài lần, sử dụng các giá trị khác nhau:

  1. INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

Để xác nhận rằng dữ liệu đã được lưu thành công vào bảng của bạn, hãy chạy:

  1. SELECT * FROM example_database.todo_list;

Bạn sẽ thấy đầu ra sau:

Output
+---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

Sau khi xác nhận rằng bạn có dữ liệu hợp lệ trong bảng thử nghiệm của mình, bạn có thể thoát khỏi bảng điều khiển MySQL:

  1. exit

Bây giờ bạn có thể tạo tập lệnh PHP sẽ kết nối với MySQL và truy vấn nội dung của bạn. Tạo một tệp PHP mới trong thư mục gốc web tùy chỉnh của bạn bằng trình chỉnh sửa ưa thích của bạn. Chúng tôi sẽ sử dụng nano cho điều đó:

  1. nano /var/www/your_domain/todo_list.php

Tập lệnh PHP sau đây kết nối với cơ sở dữ liệu MySQL và truy vấn nội dung của bảng todo_list, hiển thị kết quả trong một danh sách. Nếu có vấn đề với kết nối cơ sở dữ liệu, nó sẽ đưa ra một ngoại lệ. Sao chép nội dung này vào tập lệnh todo_list.php của bạn:

/var/www/your_domain/todo_list.php
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>TODO</h2><ol>"; 
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

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

Bây giờ bạn có thể truy cập trang này trong trình duyệt web của mình bằng cách truy cập tên miền hoặc địa chỉ IP công cộng được thiết lập cấu hình cho trang web của bạn, theo sau là /todo_list.php:

http://server_domain_or_IP/todo_list.php

Bạn sẽ thấy một trang như thế này, hiển thị nội dung bạn đã chèn vào bảng kiểm tra của mình:

description image

Điều đó có nghĩa là môi trường PHP của bạn đã sẵn sàng để kết nối và tương tác với máy chủ MySQL của bạn.

Kết luận

Trong hướng dẫn này, chúng tôi đã xây dựng một nền tảng linh hoạt để phục vụ các trang web và ứng dụng PHP cho khách truy cập của bạn, sử dụng Nginx làm máy chủ web và MySQL làm hệ thống cơ sở dữ liệu.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời