Hướng dẫn Linux

Hướng dẫn cài đặt LAMP trên Ubuntu 20.04

Bạn đang có nhu cầu sử dụng webserver cho công việc của mình? Nhưng bạn mới sử dụng Ubuntu 20.04 và vẫn chưa rõ cách cài đặt một webserver trên máy như thế nào? Bài viết này sẽ hướng dẫn bạn toàn tập về cách cài đặt LAMP trên Ubuntu 20.04.

Note: Các bước cài đặt trong bài viết này bạn cũng có thể áp dụng tương tự cho VPS Ubuntu 20.04.

Nếu bạn chưa quen với Ubuntu bản gốc, hãy tải và dùng bản do chính người Việt mod lại tại đây: Ubuntuvn

LAMP là gì?

LAMP là một nhóm phần mềm nguồn mở thường được gom chung vào cùng bộ cài đặt để cho phép một máy chủ lưu trữ các trang web động và ứng dụng web được viết bằng PHP.

Thuật ngữ này là từ viết tắt đại diện cho hệ điều hành Linux, với máy chủ web Apache. Dữ liệu trang web được lưu trữ trong cơ sở dữ liệu MySQL và nội dung động được xử lý bởi PHP.

Trong bài viết này, chúng ta sẽ cùng cài đặt LAMP trên Ubuntu 20.04. Việc cài đặt LAMP trên Ubuntu rất đơn giản, chúng ta bắt đầu thôi nào!

Các bước cài đặt LAMP trên Ubuntu 20.04

Cài đặt Apache

Cài đặt LAMP trên Ubuntu – cài Apache

Để bắt đầu tiến trình cài đặt LAMP trên Ubuntu, bạn chạy lần lượt từng câu lệnh sau:

sudo apt update
sudo apt install apache2 -y

Và đợi cho quá trình cài đặt Apache diễn ra. Sau khi quá trình cài đặt hoàn tất, bạn sẽ cần phải điều chỉnh cài đặt tường lửa của mình để cho phép lưu lượng truy cập thông qua HTTP. UFW có các cấu hình ứng dụng khác nhau mà bạn có thể tận dụng để thực hiện điều đó. Để liệt kê tất cả các cấu hình ứng dụng UFW hiện có, bạn chạy lệnh sau:

sudo ufw app list

Và dưới đây là output:

Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Ở đây, ý nghĩa của mỗi cấu hình này là:

  • Apache: Cấu hình này chỉ mở cổng 80 (lưu lượng truy cập web bình thường, không được mã hóa).
  • Apache Full: Cấu hình này mở cả cổng 80 (lưu lượng truy cập web bình thường, không được mã hóa) và cổng 443 (lưu lượng được mã hóa TLS/SSL).
  • Apache Secure: Cấu hình này chỉ mở cổng 443 (lưu lượng được mã hóa TLS/SSL).

Hiện tại, tốt nhất là bạn chỉ cho phép kết nối trên cổng 80, vì đây là bản cài đặt Apache mới và bạn vẫn chưa có chứng chỉ TLS/SSL được cấu hình để cho phép lưu lượng truy cập qua giao thức HTTPS trên máy tính của bạn.

Và để chỉ cho phép lưu lượng truy cập trên cổng 80, hãy thiết lập cấu hình Apache như sau:

sudo ufw allow in “Apache”

Bạn có thể xem trạng thái bằng câu lệnh sau:

sudo ufw status

Và thường output của câu lệnh này sẽ là:

Status: active
To                           Action                   From
—                              ——                      —-
OpenSSH             ALLOW             Anywhere
Apache                 ALLOW             Anywhere
OpenSSH (v6)    ALLOW             Anywhere (v6)
Apache (v6)        ALLOW             Anywhere (v6)

Nếu bạn thấy dòng Status: active. Thì lưu lượng truy cập trên cổng 80 hiện đã được phép thông qua tường lửa.

Bạn có thể thực hiện kiểm tra tại chỗ ngay lập tức để xác minh rằng mọi thứ đã được lên kế hoạch bằng cách truy cập máy chủ của bạn bằng địa chỉ IP VPS của bạn ngay trong trình duyệt web của bạn:

http://ip_server_cua_ban

Hoặc: http://localhost nếu như bạn cài trên máy cá nhân.

Mặc định thư mục chứa website của Apache là: /var/www/html

Nếu bạn thấy trang này, thì máy chủ web của bạn hiện đã được cài đặt chính xác và có thể truy cập thông qua tường lửa của bạn.

Cài đặt MySQL

Cài đặt LAMP trên Ubuntu – cài MySQL

Bây giờ bạn đã có một máy chủ web hoạt động bình thường, tuy nhiên bạn cần phải cài đặt hệ thống cơ sở dữ liệu để có thể lưu trữ và quản lý dữ liệu cho website của mình. Và để tiếp tục quá trình cài đặt LAMP trên Ubuntu, chúng ta sẽ cài MySQL. MySQL là một hệ thống quản lý cơ sở dữ liệu phổ biến được sử dụng cùng với PHP.

Để cài đặt MySQL, bạn chạy câu lệnh sau và đợi cho quá trình cài đặt tự động hoàn thành:

sudo apt install mysql-server -y

Khi quá trình cài đặt kết thúc, mình khuyên bạn nên chạy tập lệnh bảo mật được cài đặt sẵn của 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. Mục đích làm cho hệ thống CSDL thật bảo mật, tránh xảy ra các sự cố không mong muốn.

Bạn có thể bắt đầu thực thi tập lệnh này bằng cách chạy:

sudo mysql_secure_installation

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

Lưu ý: cần cẩn trọng khi kích hoạt VALIDATE PASSWORD PLUGIN. Nếu được bật, mật khẩu bạn nhập nếu không phù hợp với điều kiện đã được xác định sẽ bị MySQL từ chối. Bạn hoàn toàn an toàn nếu không kích hoạt tính năng này, nhưng bạn phải luôn sử dụng mật khẩu mạnh và duy nhất cho việc truy cập cơ sở dữ liệu.

Trả lời Y là đồng ý, hoặc nhấn bất cứ phím nào khác để bỏ qua việc cài cấu hình trên.

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 chọn y, bạn sẽ được hệ thống yêu cầu chọn 1 trong các cấp độ để xác minh mật khẩu. Hãy nhớ rằng nếu bạn nhập số 2 cho cấp độ mạnh nhất, bạn sẽ bị lỗi khi cố gắng đặt bất kỳ mật khẩu không chứa số, chữ hoa và chữ thường và ký tự đặc biệt hoặc dựa trên các từ điển thông dụng.

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, tiếp theo máy chủ của bạn sẽ yêu cầu bạn chọn và xác nhận mật khẩu cho tài khoản root của MySQL.

Tuyệt đối không được nhầm lẫn cái này với tài khoản root của hệ thống. Tài khoản root của cơ sở dữ liệu là tài khoản quản trị có đầy đủ các đặc quyền trên hệ thống cơ sở dữ liệu.

Mặc dù phương thức xác thực mặc định cho tài khoản root MySQL không cho phép sử dụng mật khẩu, ngay cả khi được đặt, bạn nên xác định mật khẩu mạnh ở đây như một biện pháp bổ sung an toàn.

Nếu bạn đã bật xác thực mật khẩu, bạn sẽ thấy hiển thị cường độ mật khẩu cho mật khẩu gốc 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 đó hay 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 để tiếp tụ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, hãy nhấn Y và nhấn phím ENTER tại mỗi dấu nhắc. Việc này sẽ xóa một số tài khoản ẩn danh và cơ sở dữ liệu mẫu cho việc thử nghiệm, đồng thời cũng vô hiệu hóa việc đăng nhập tài khoản root từ xa và tải các quy tắc mới này để MySQL ngay lập tức lưu các 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 gõ:

sudo mysql

Câu lệnh trên sẽ kết nối với máy chủ MySQL bằng tài khoản root của hệ thống cơ sở dữ liệu MySQL, Bạn sẽ thấy output như sau:

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 quản trị MySQL, gõ vào terminal và nhấn Enter dòng sau:

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 là tài khoản root, mặc dù bạn đã xác định mật khẩu khi chạy tập lệnh mysql_secure_installation. Đó là bởi vì phương thức xác thực mặc định cho tài khoản quản trị MySQL là unix_socket thay vì password.

Mặc dù lúc đầu việc này có vẻ giống như một vấn đề bảo mật nghiêm trọng, nhưng nó làm cho máy chủ cơ sở dữ liệu an toàn hơn vì người dùng duy nhất được phép đăng nhập với tư cách tài khoản root MySQL là tài khoản hệ thống có đặc quyền sudo kết nối từ bảng điều khiển hoặc thông qua ứng dụng chạy với đặc quyền quản trị.

Trong điều kiện thực tế, việc đó có nghĩa là bạn sẽ không thể sử dụng tài khoản root của hệ thống cơ sở dữ liệu để kết nối từ app PHP của bạn. Việc đặt mật khẩu cho tài khoản root MySQL 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 tính bảo mật, tốt nhất là bạn nên có các tài khoản chuyên dụng với các đặc quyền ít hơn được thiết lập cho mọi cơ sở dữ liệu, đặc biệt nếu bạn dự định sẽ tạo nhiều cơ sở dữ liệu để lưu trữ trên máy chủ của mình.

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

Cài đặt PHP

Cài đặt LAMP trên Ubuntu – Cài PHP

Ở 2 bước trên, bạn đã cài đặt thành công Apache và MySQL. Tiếp tục quá trình cài đặt LAMP trên Ubuntu, tiếp theo chúng ta sẽ cài PHP. PHP là thành phần mà sẽ xử lý mã lệnh PHP để hiển thị nội dung động cho người xem website của bạn.

Ngoài việc cài đặt gói php, bạn sẽ cần phải cài thêm 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. Bạn cũng sẽ cần gói libapache2-mod-php để cho phép Apache xử lý các tệp PHP. Các gói PHP gốc sẽ tự động được cài đặt.

Để cài đặt các gói trên, hãy chạy câu lệnh sau:

sudo apt install php libapache2-mod-php php-mysql -y

Và chờ đợi cho quá trình cài đặt hoàn tất. Khi quá trình cài đặt kết thúc, bạn có thể chạy lệnh sau để xác nhận việc cài đặt có thành công hay không, đồng thời kiểm tra luôn phiên bản PHP của mình đã cài đặt là gì:

php -v

Và dưới đây là output của Terminal:

PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Xin chúc mừng, bạn đã cài đặt LAMP trên Ubuntu 20.04 thành công!

Cài đặt LAMP trên Ubuntu 20.04

Cài đặt LAMP trên Ubuntu 20.04

Hits: 345