Cách cài đặt web server Apache trên Ubuntu 20.04
Server Apache HTTP là web server được sử dụng rộng rãi nhất trên thế giới. Nó cung cấp nhiều tính năng mạnh mẽ bao gồm các module có thể tải động, hỗ trợ phương tiện truyền thông mạnh mẽ và tích hợp rộng rãi với các phần mềm phổ biến khác.Trong hướng dẫn này, ta sẽ giải thích cách cài đặt web server Apache trên server Ubuntu 20.04 của bạn.
Yêu cầu
Trước khi bắt đầu hướng dẫn này, bạn nên có một regular user , không phải root có các quyền sudo được cấu hình trên server của bạn. Ngoài ra, bạn cần kích hoạt firewall cơ bản để chặn các cổng không cần thiết. Bạn có thể tìm hiểu cách cấu hình account regular user và cài đặt firewall cho server của bạn theo Hướng dẫn cài đặt server ban đầu cho Ubuntu 20.04 của ta .
Khi bạn có account , hãy đăng nhập với quyền user không phải root của bạn để bắt đầu.
Bước 1 - Cài đặt Apache
Apache có sẵn trong repository mặc định của Ubuntu, giúp bạn có thể cài đặt nó bằng các công cụ quản lý gói thông thường.
Hãy bắt đầu bằng cách cập nhật index gói local để cập nhật thay đổi mới nhất :
- sudo apt update 
Sau đó, cài đặt gói apache2 :
- sudo apt install apache2 
Sau khi xác nhận cài đặt, apt sẽ cài đặt Apache và tất cả các  phụ thuộc .
Bước 2 - Điều chỉnh firewall
Trước khi thử nghiệm Apache, cần phải sửa đổi cài đặt firewall để cho phép bên ngoài truy cập vào các cổng web mặc định. Giả sử rằng bạn đã làm theo các hướng dẫn trong yêu cầu , bạn nên cấu hình firewall UFW để hạn chế quyền truy cập vào server của bạn .
Trong khi cài đặt, Apache tự đăng ký với UFW để cung cấp một số cấu hình ứng dụng được dùng để bật hoặc tắt quyền truy cập vào Apache thông qua firewall .
 Liệt kê các cấu hình ứng dụng ufw  bằng lệnh :
- sudo ufw app list 
Bạn sẽ nhận được danh sách các profile ứng dụng:
OutputAvailable applications:   Apache   Apache Full   Apache Secure   OpenSSH Như được chỉ ra bởi kết quả , có ba cấu hình có sẵn cho Apache:
- Apache : Cấu hình này chỉ mở cổng 80 ( 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 ( truy cập web bình thường, không được mã hóa) và cổng 443 ( truy cập được mã hóa TLS / SSL)
- Apache Secure : Cấu hình này chỉ mở cổng 443 ( truy cập được mã hóa TLS / SSL)
Bạn nên bật cấu hình chặn tối đa mà vẫn cho phép lưu lượng bạn đã cấu hình . Vì ta chưa cấu hình SSL cho server của bạn trong hướng dẫn này, ta sẽ chỉ cần cho phép lưu lượng truy cập trên cổng 80:
- sudo ufw allow 'Apache' 
Bạn có thể kiểm tra thay đổi bằng lệnh :
- sudo ufw status 
Đầu ra sẽ cung cấp danh sách truy cập HTTP được phép:
OutputStatus: active  To                         Action      From --                         ------      ---- OpenSSH                    ALLOW       Anywhere                   Apache                     ALLOW       Anywhere                 OpenSSH (v6)               ALLOW       Anywhere (v6)              Apache (v6)                ALLOW       Anywhere (v6) Như được chỉ ra bởi kết quả , cấu hình đã được kích hoạt để cho phép truy cập vào web server Apache.
Bước 3 - Kiểm tra Server Web của bạn
Khi kết thúc quá trình cài đặt, Ubuntu 20.04 khởi động Apache. Web server đã được cài đặt và đang chạy.
 Kiểm tra với systemd init  đảm bảo  dịch vụ đang chạy  bằng lệnh :
- sudo systemctl status apache2 
Output● apache2.service - The Apache HTTP Server      Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)      Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago        Docs: https://httpd.apache.org/docs/2.4/    Main PID: 29435 (apache2)       Tasks: 55 (limit: 1137)      Memory: 8.0M      CGroup: /system.slice/apache2.service              ├─29435 /usr/sbin/apache2 -k start              ├─29437 /usr/sbin/apache2 -k start              └─29438 /usr/sbin/apache2 -k start  Như được xác nhận bởi kết quả này, dịch vụ đã chạy . Tuy nhiên, cách tốt nhất để kiểm tra là truy cập một trang từ Apache.
Bạn có thể truy cập trang đích Apache mặc định để xác nhận phần mềm đang chạy đúng thông qua địa chỉ IP của bạn. Nếu bạn không biết địa chỉ IP của server của bạn , bạn có thể tìm bằng một số cách nhau từ dòng lệnh.
Hãy thử nhập vào dấu nhắc lệnh của server của bạn:
- hostname -I 
Bạn sẽ nhận lại một vài địa chỉ được phân tách bằng dấu cách. Bạn có thể thử từng cái trong trình duyệt web của bạn để xác định xem chúng có hoạt động không.
Một tùy chọn khác là sử dụng công cụ Icanhazip, công cụ này sẽ cung cấp cho bạn địa chỉ IP công cộng của bạn khi được đọc từ một vị trí khác trên internet:
- curl -4 icanhazip.com 
Khi bạn có địa chỉ IP của server , hãy nhập địa chỉ đó vào thanh địa chỉ của trình duyệt:
http://your_server_ip Bạn sẽ thấy trang web Ubuntu 20.04 Apache mặc định:
Trang này cho biết Apache đang hoạt động chính xác. Nó cũng bao gồm một số thông tin cơ bản về các file Apache quan trọng và vị trí folder .
Bước 4 - Quản lý tiến trình Apache
  Đến đây bạn  đã  cài đặt  và chạy  web server   của bạn , hãy cùng xem qua một số lệnh quản lý cơ bản bằng systemctl .
Để dừng web server của bạn, hãy nhập:
- sudo systemctl stop apache2 
Để khởi động web server khi nó bị dừng, hãy nhập:
- sudo systemctl start apache2 
Để dừng và sau đó bắt đầu lại dịch vụ, hãy nhập:
- sudo systemctl restart apache2 
Nếu bạn chỉ đơn giản là thực hiện thay đổi cấu hình, Apache có thể reload mà không làm mất kết nối . Để thực hiện việc này, hãy sử dụng lệnh sau:
- sudo systemctl reload apache2 
Theo mặc định, Apache được cấu hình để khởi động tự động khi server khởi động. Nếu bạn không muốn vậy , hãy tắt hành vi này bằng lệnh :
- sudo systemctl disable apache2 
Để bật lại dịch vụ khởi động khi server khởi động , hãy nhập:
- sudo systemctl enable apache2 
Apache bây giờ sẽ tự động khởi động khi server khởi động lại.
Bước 5 - Cài đặt server ảo (Khuyến nghị)
Khi sử dụng web server Apache, bạn có thể sử dụng server ảo (tương tự như khối server trong Nginx) để đóng gói chi tiết cấu hình và lưu trữ nhiều domain từ một server duy nhất. Ta sẽ cài đặt một domain có tên your_domain , nhưng bạn nên thay thế domain này bằng domain của bạn . Nếu bạn đang cài đặt domain với DigitalOcean, vui lòng tham khảo Tài liệu về mạng của ta .
 Apache trên Ubuntu 20.04 có một khối  server  được bật theo mặc định được cấu hình để cung cấp tài liệu từ folder  /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ó sử dụng nếu bạn đang lưu trữ nhiều trang web. Thay vì sửa đổi /var/www/html , hãy tạo cấu trúc folder  bên trong /var/www cho trang your_domain , giữ nguyên /var/www/html làm folder  mặc định được cung cấp nếu yêu cầu của khách hàng không  trùng với  bất kỳ các trang web khác.
Tạo folder cho your_domain như sau:
- sudo mkdir /var/www/your_domain 
Tiếp theo, chỉ định quyền sở hữu folder  với biến môi trường $USER :
- sudo chown -R $USER:$USER /var/www/your_domain 
Các quyền của root web của bạn phải chính xác nếu bạn chưa sửa đổi giá trị umask, giá trị này sẽ đặt các quyền mặc định cho file . Để đảm bảo các quyền của bạn là chính xác và cho phép chủ sở hữu đọc, ghi và thực thi các file trong khi chỉ cấp quyền đọc và thực thi cho các group và những người khác, bạn có thể nhập lệnh sau:
- sudo chmod -R 755 /var/www/your_domain 
Tiếp theo, tạo một trang index.html mẫu bằng nano hoặc trình soạn thảo yêu thích của bạn:
- sudo nano /var/www/your_domain/index.html 
Bên trong, hãy thêm HTML mẫu sau:
<html>     <head>         <title>Welcome to Your_domain!</title>     </head>     <body>         <h1>Success!  The your_domain virtual host is working!</h1>     </body> </html> Lưu file khi bạn hoàn tất.
 Để Apache phân phát nội dung này, bạn cần tạo một file   server  ảo với các lệnh chính xác. Thay vì sửa đổi trực tiếp file  cấu hình mặc định đặt tại /etc/apache2/sites-available/000-default.conf , hãy tạo một file  mới tại /etc/apache2/sites-available/ your_domain .conf :
- sudo nano /etc/apache2/sites-available/your_domain.conf 
Dán vào đoạn cấu hình sau, khối này tương tự như khối mặc định, nhưng được cập nhật cho folder và domain mới của ta :
<VirtualHost *:80>     ServerAdmin webmaster@localhost     ServerName your_domain     ServerAlias www.your_domain     DocumentRoot /var/www/your_domain     ErrorLog ${APACHE_LOG_DIR}/error.log     CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>  Lưu ý   ta  đã cập nhật DocumentRoot vào folder  mới và ServerAdmin thành một email mà người quản trị trang your_domain có thể truy cập.  Ta  cũng đã thêm hai chỉ thị: ServerName ,  cài đặt  domain  cơ sở phù hợp với định nghĩa  server  ảo này và ServerAlias , xác định các tên khác phải khớp như thể chúng là tên cơ sở.
Lưu file khi bạn hoàn tất.
 Hãy kích hoạt file  bằng công cụ a2ensite :
- sudo a2ensite your_domain.conf 
Vô hiệu hóa trang web mặc định được xác định trong 000-default.conf :
- sudo a2dissite 000-default.conf 
Tiếp theo, hãy kiểm tra lỗi cấu hình:
- sudo apache2ctl configtest 
Bạn sẽ nhận được kết quả sau:
OutputSyntax OK Khởi động lại Apache để triển khai các thay đổi :
- sudo systemctl restart apache2 
Apache bây giờ  sẽ cho truy cập domain   của bạn. Bạn  có thể kiểm tra  bằng cách  chuyển  đến http:// your_domain , nơi bạn sẽ thấy  thông tin như  sau: 
Bước 6 - Làm quen với các file và folder Apache quan trọng
Đến đây bạn đã biết cách quản lý chính dịch vụ Apache, bạn nên dành vài phút để tự làm quen với một số folder và file quan trọng.
Nội dung
-  /var/www/html: Nội dung web thực tế, theo mặc định chỉ bao gồm trang Apache mặc định mà bạn đã xem trước đó, được cung cấp từ folder/var/www/html. Điều này có thể được thay đổi bằng cách thay đổi các file cấu hình Apache.
Cấu hình server
-  /etc/apache2: Thư mục cấu hình Apache. Tất cả các file cấu hình Apache đều nằm ở đây.
-  /etc/apache2/apache2.conf: Tệp cấu hình Apache chính. Điều này có thể được sửa đổi để thay đổi cấu hình chung của Apache. Tệp này chịu trách nhiệm tải nhiều file khác trong folder cấu hình.
-  /etc/apache2/ports.conf: Tệp này chỉ định các cổng mà Apache sẽ lắng nghe. Theo mặc định, Apache lắng nghe trên cổng 80 và cũng lắng nghe trên cổng 443 khi một module cung cấp khả năng SSL được bật.
-  /etc/apache2/sites-available/: Thư mục chứa các server ảo trên mỗi trang web. Apache sẽ không sử dụng các file cấu hình được tìm thấy trong folder này trừ khi chúng được liên kết với foldersites-enabled. Thông thường, tất cả cấu hình khối server được thực hiện trong folder này, và sau đó được kích hoạt bằng cách liên kết đến folder khác bằng lệnha2ensite.
-  /etc/apache2/sites-enabled/: Thư mục lưu trữ các server ảo cho mỗi trang web. Thông thường, chúng được tạo bằng cách liên kết đến các file cấu hình được tìm thấy trong foldersites-availablecủasites-availablevớia2ensite. Apache đọc các file cấu hình và liên kết được tìm thấy trong folder này khi nó khởi động hoặc reload để biên dịch một cấu hình hoàn chỉnh.
-  /etc/apache2/conf-available/,/etc/apache2/conf-enabled/: Những folder có mối quan hệ tương tự như cácsites-availablevàsites-enabledfolder , nhưng được sử dụng để đoạn cấu hình được lưu trữ mà không làm thuộc trong một Server ảo. Các file trong folderconf-availablethể được bật bằng lệnha2enconfvà vô hiệu hóa bằng lệnha2disconf.
-  /etc/apache2/mods-available/,/etc/apache2/mods-enabled/: Các folder này chứa các module có sẵn và được kích hoạt tương ứng. Các file kết thúc bằng.loadchứa các phân đoạn để tải các module cụ thể, trong khi các file kết thúc bằng.confchứa cấu hình cho các module đó. Các module có thể được bật và tắt bằng cách sử dụng lệnha2enmodvàa2dismod.
Nhật ký server
-  /var/log/apache2/access.log: Theo mặc định, mọi yêu cầu đến web server của bạn đều được ghi lại trong file log này trừ khi Apache được cấu hình để làm theo cách khác.
-  /var/log/apache2/error.log: Theo mặc định, tất cả các lỗi được ghi lại trong file này. Chỉ thịLogLeveltrong cấu hình Apache chỉ định mức độ chi tiết mà các bản ghi lỗi sẽ chứa.
Kết luận
Đến đây bạn đã cài đặt web server của bạn , bạn có nhiều tùy chọn cho loại nội dung bạn có thể phân phát và các công nghệ bạn có thể sử dụng để tạo ra trải nghiệm phong phú hơn.
Nếu bạn muốn xây dựng một ứng dụng hoàn chỉnh hơn, bạn có thể đọc bài viết này về cách cấu hình LAMP trên Ubuntu 20.04
Các tin liên quan
Cách cài đặt web server Apache trên CentOS 82020-04-24
Cách thiết lập server ảo Apache trên Ubuntu 18.04 [Quickstart]
2020-02-19
Các bước được đề xuất để ngăn chặn HTTP Apache trên FreeBSD 12.0
2020-02-12
Cách thiết lập server ảo Apache trên Ubuntu 18.04
2020-02-10
Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 18.04 [Quickstart]
2020-02-04
Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 18.04
2020-02-03
Cách cài đặt Apache Kafka trên Debian 10
2019-12-20
Cách sử dụng Ansible để cài đặt và thiết lập Apache trên Ubuntu 18.04
2019-12-06
Cách bảo mật Apache bằng Let's Encrypt trên FreeBSD 12.0
2019-11-08
Cách cài đặt Apache Tomcat 9 trên Debian 10
2019-10-24
 

