Trong hướng dẫn này, chúng ta sẽ cài đặt một LAMP (Apache, MySQL, PHP) trên Ubuntu Server 20.04 / 20.10 và cấu hình một máy chủ web.
Kiến thức
Bạn nên sử dụng một tài khoản người dùng không phải là root có quyền sudo. Xem thêm hướng dẫn Khởi tạo máy chủ Ubuntu 20.04 để biết thêm chi tiết.
Cài đặt Apache
Cập nhật và cài đặt Apache
sudo apt update && sudo apt install apache2
Quá trình cài đặt có thể mất vài phút. Khi đã cài đặt xong, tiếp tục đến bước Cấu hình Firewall để cấu hình tường lửa trên Ubuntu 20.04 / 20.10.
Cấu hình Firewall
Bạn nên định cấu hình tường lửa để tăng cường bảo mật cho LAMP Stack trên Ubuntu 20.04 / 20.10.
Chúng ta sẽ bắt đầu bằng cách thêm quy tắc tường lửa cho SSH vì nếu bạn đang định cấu hình máy chủ của mình từ xa, bạn sẽ không muốn bị khóa khi bật tường lửa. Bạn có thể đã thực hiện việc này trong hướng dẫn Khởi tạo máy chủ Ubuntu 20.04 của chúng tôi, nhưng sẽ không có hại gì khi thêm lại nó để đề phòng. Nếu quy tắc đã tồn tại, lệnh sẽ bỏ qua nó.
sudo ufw allow OpenSSH
Nếu bạn gặp lỗi “ERROR: could find a profilematch openSSH”, điều này có thể có nghĩa là bạn không định cấu hình máy chủ từ xa và có thể bỏ qua nó.
Bây giờ chúng ta có thể thêm các quy tắc tường lửa cho Apache.
sudo ufw allow in "Apache Full"
Kích hoạt tường lửa nếu nó chưa có.
sudo ufw enable
Nhấn y
nếu bạn thấy thông báo “Command may disrupt existing ssh connections”.
Nếu tường lửa được kích hoạt chính xác, bạn sẽ thấy “Firewall is active and enabled on system startup”.
Bạn cũng có thể kiểm tra trạng thái tường lửa hiện tại bằng:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Ở trên chúng ta có thể thấy tường lửa đang hoạt động và có hai quy tắc cho mỗi dịch vụ. v6 là viết tắt của IPv6.
Test Apache
Để xem Apache đã được cài đặt đúng trên Ubuntu 20.04/20.10 hay chưa, chúng ta có thể kiểm tra trạng thái bằng dòng lệnh.
sudo service apache2 status
Nếu Apache đang hoạt động, bạn sẽ thấy trạng thái hoạt động màu xanh lục.
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Sat 2020-03-31 08:44:04 CEST; 15min ago
Main PID: 5727 (apache2)
Tasks: 55 (limit: 4915)
CGroup: /system.slice/apache2.service
├─5727 /usr/sbin/apache2 -k start
├─5728 /usr/sbin/apache2 -k start
└─5729 /usr/sbin/apache2 -k start
Mar 31 08:44:04 ubuntu2004 systemd[1]: Starting The Apache HTTP Server...
Mar 31 08:44:04 ubuntu2004 apachectl[5675]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1.
Mar 31 08:44:04 ubuntu2004 systemd[1]: Started The Apache HTTP Server.
Nếu bạn gặp lỗi trên về một tên miền đủ điều kiện, bạn có thể bỏ qua nó.
Bạn có thể cần nhấn q
để thoát trạng thái máy chủ nếu sử dụng máy khách SSH.
Bây giờ dịch vụ Apache đã hoạt động, bạn sẽ có thể xem trang web Apache thử nghiệm thông qua trình duyệt web của mình.
Nhập địa chỉ IP của máy chủ của bạn vào thanh địa chỉ và nhấn ENTER
. Nếu bạn không biết IP của mình, bạn có thể tìm hiểu bằng lệnh sau.
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Hoàn tất! Bạn có thể tìm thấy trang chào mừng mặc định của Apache này trong thư mục /var/www/html. Để chỉnh sửa tập tin này:
sudo nano /var/www/html/index.html
Nhấn CTRL
+ X
để thoát.
Trong trường hợp bạn có tên miền, bạn có thể chỉ định nó đến địa chỉ IP của máy chủ của bạn mà không cần cấu hình thêm và Apache sẽ tải trang mặc định này. Tuy nhiên, nếu bạn muốn lưu trữ nhiều tên miền trên máy chủ của bạn hoặc thiết lập chứng chỉ SSL với Let’s Encrypt, bạn nên thiết lập một máy chủ ảo (virtual host) ở bước cuối hướng dẫn này.
Cài đặt MySQL
Thành phần tiếp theo của LAMP Stack trên Ubuntu 20.04 / 20.10 là MySQL.
Bắt đầu bằng cách cập nhật kho lưu trữ và cài đặt gói MySQL.
Nhấn y
và ENTER
nếu được nhắc cài đặt.
sudo apt update && sudo apt install mysql-server
Sau khi trình cài đặt gói hoàn tất, chúng ta có thể kiểm tra xem dịch vụ MySQL có đang chạy hay không.
sudo service mysql status
Nếu đang chạy bạn sẽ thấy trạng thái Active màu xanh như bên dưới.
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-04-02 02:40:59 CEST; 2min 47s ago
Main PID: 18476 (mysqld)
Status: "Server is operational"
Tasks: 27 (limit: 4915)
CGroup: /system.slice/mysql.service
└─18476 /usr/sbin/mysqld
Apr 02 02:40:59 ubuntu2004 systemd[1]: Starting MySQL Community Server...
Apr 02 02:40:59 ubuntu2004 systemd[1]: Started MySQL Community Server.
Bạn có thể cần nhấn phím “q” để thoát khỏi trạng thái dịch vụ nếu bạn tiếp tục.
Cấu hình bảo mật cho MySQL
Bây giờ bạn nên chạy mysql_secure_installation
để định cấu hình bảo mật cho máy chủ MySQL của mình trên Ubuntu 20.04 / 20.10.
sudo mysql_secure_installation
Cài đặt PHP
Thành phần tiếp theo và cuối cùng của LAMP Stack trên Ubuntu 20.04 / 20.10 là PHP.
Bắt đầu bằng cách cập nhật kho lưu trữ và cài đặt gói PHP. Chúng tôi cũng sẽ cài đặt thêm hai gói libapache2-mod-php
và php-mysql
, cho phép PHP giao tiếp với cơ sở dữ liệu MySQL.
Nhấn y
và ENTER
khi được nhắc cài đặt gói PHP.
sudo apt update && sudo apt install php libapache2-mod-php php-mysql
Test PHP
php -version
Nếu PHP được cài đặt đúng, bạn sẽ thấy nội dung tương tự bên dưới:
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
Cầu hình Virtual Host (tùy chọn)
Tạo thư mục và file index.html
sudo mkdir -p /var/www/mydomain.com/public_html
sudo nano /var/www/mydomain.com/public_html/index.html
Create Virtual Host
sudo nano /etc/apache2/sites-available/mydomain.com.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /var/www/mydomain.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Lưu lại và thoát ra (nhấn CTRL
+ X
, nhấn Y
và nhấn ENTER
)
Cho phép máy chủ ảo của bạn thay thế mydomain.com bằng máy chủ của riêng bạn.
sudo a2ensite mydomain.com.conf
Vô hiệu hóa trang web Apache mặc định, nếu không nó sẽ ghi đè lên máy chủ ảo của bạn.
sudo a2dissite 000-default
Khởi động lại Apache
sudo systemctl reload apache2
Cấu hình Apache (tùy chọn)
Bây giờ bạn đã có các trang web phục vụ Apache trên máy chủ LAMP Ubuntu 20.04 / 20.10 của mình, có thể có một số cài đặt cấu hình bổ sung sẽ hữu ích cho bạn.
Vô hiệu hóa Directory Listing and kích hoạt AllowOverride
sudo nano /etc/apache2/apache2.conf
Nhấn CTRL + W
và tìm kiếm.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Xóa Indexes
để dừng các thư mục liệt kê Apache và thay đổi AllowOverride
thành All
để bật .htaccess
. Bây giờ nó sẽ trông như thế này:
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Lưu và thoát (nhấn CTRL + X
, nhấn Y
rồi nhấn ENTER
)
Khởi động lại Apache.
sudo systemctl restart apache2
Enable mod_rewrite
sudo a2enmod rewrite