Cài đặt Apache Web Server trên Debian 11 - Install Apache Web Server on Debian 11

Máy chủ HTTP Apache là máy chủ web đượ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 mô-đun có thể tải động, hỗ trợ phương tiện 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, bạn sẽ install máy chủ web Apache trên máy chủ Debian 11.

Chuẩn bị trước khi cài đặt

  • Trước khi bạn bắt đầu hướng dẫn này, bạn cần có một máy chủ Debian 11 được thiết lập với một người dùng không phải root có đặc quyền sudo và có tường lửa được kích hoạt để chặn các cổng không cần thiết. 
  • Khi bạn đã hoàn tất việc này, đăng nhập với tư cách người dùng không phải root và tiếp tục đến bước đầu tiên.

Bước 1: Install Apache

Apache có sẵn trong kho lưu trữ phần mềm mặc định của Debian, cho phép bạn cài đặt nó bằng các công cụ quản lý gói thông thường.

Bắt đầu bằng cách cập nhật chỉ mục gói cục bộ để phản ánh các thay đổi từ nguồn gốc 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 cần thiết.

Bước 2: Chỉnh sửa tường lửa

Trước khi kiểm tra Apache, cần sửa đổi cài đặt tường lửa để cho phép bên ngoài truy cập vào các cổng web mặc định. Nếu bạn làm theo hướng dẫn trong các yêu cầu đầu tiên, bạn nên cấu hình tường lửa UFW để hạn chế quyền truy cập vào máy chủ của mình.

Trong quá trình cài đặt, Apache tự đăng ký với UFW để cung cấp một số cấu hình ứng dụng có thể được sử dụng để bật hoặc tắt quyền truy cập vào Apache thông qua tường lửa.

Liệt kê các cấu hình ứng dụng ufw bằng cách chạy như sau:

sudo ufw app list

Đầu ra của bạn sẽ là danh sách các hồ sơ ứng dụng:

Output
Available applications: AIM Bonjour CIFS . . . WWW WWW Cache WWW Full WWW Secure . . .

Cấu hình Apache bắt đầu bằng WWW:

  • WWW: 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)
  • WWW Cache: Cấu hình này chỉ mở cổng 8080 (đôi khi được sử dụng cho bộ nhớ đệm và proxy web)
  • WWW 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 truy cập được mã hóa TLS/SSL)
  • WWW Secure: Cấu hình này chỉ mở cổng 443 (lưu lượng được mã hóa TLS/SSL)

Bạn nên bật cấu hình hạn chế nhất để vẫn cho phép lưu lượng truy cập bạn đã định cấu hình. Vì bạn chưa định 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 truy cập trên cổng 80:

sudo ufw allow 'WWW'

Bạn có thể xác minh thay đổi bằng cách kiểm tra trạng thái:

sudo ufw status

Đầu ra sẽ cung cấp danh sách lưu lượng HTTP được phép:

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

Như được chỉ ra ở đầu ra, cấu hình đã được kích hoạt để cho phép truy cập vào máy chủ web Apache.

Bước 3: Kiểm tra Web Server

Khi kết thúc quá trình cài đặt, Debian 11 khởi động Apache. Máy chủ web đã được thiết lập và chạy.

Đảm bảo dịch vụ đang hoạt động bằng cách chạy lệnh cho hệ thống init systemd:

sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese> Active: active (running) since Wed 2022-07-06 22:05:45 UTC; 23s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 2796 (apache2) Tasks: 55 (limit: 9509) Memory: 21.0M CPU: 67ms CGroup: /system.slice/apache2.service ├─2796 /usr/sbin/apache2 -k start ├─2798 /usr/sbin/apache2 -k start └─2799 /usr/sbin/apache2 -k start

Đầu ra này xác nhận rằng dịch vụ đã bắt đầu thành công. Tuy nhiên, cách tốt nhất để kiểm tra điều này là yêu cầu một trang từ Apache.

Bạn có thể truy cập trang đích Apache mặc định để xác nhận rằng phần mềm đang chạy bình thường thông qua địa chỉ IP của bạn. Nếu bạn không biết địa chỉ IP máy chủ của mình, bạn có thể lấy địa chỉ đó bằng một số cách khác nhau từ dòng lệnh.

Hãy thử viết dòng sau tại dấu nhắc lệnh của máy chủ của bạn:

hostname -I

Bạn sẽ nhận được một vài địa chỉ cách nhau bằng dấu cách. Bạn có thể thử từng cái trong trình duyệt web của mình để 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ụ ianhazip.com, đây là một trang web mà khi được truy cập sẽ trả về địa chỉ IP công cộng của máy của bạn dưới dạng được đọc từ một vị trí khác trên internet. Nếu bạn chưa cài đặt Curl, bạn có thể cài đặt nó bằng lệnh sau:

sudo apt install curl

Sau đó, sử dụng Curl để truy xuất icanhazip.com bằng IPv4:

curl -4 icanhazip.com

Khi bạn có địa chỉ IP của máy chủ, 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 Apache Debian 11 mặc định:

trang mặc định Debian 11 Apache

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 tệp Apache và vị trí thư mục quan trọng.

Bước 4: Quản lý quá trình Apache

Bây giờ bạn đã thiết lập và chạy máy chủ web của mình, hãy xem lại một số lệnh quản lý cơ bản bằng cách sử dụng systemctl.

Để dừng máy chủ web của bạn, hãy chạy:

sudo systemctl stop apache2

Để khởi động máy chủ web khi nó bị dừng, hãy chạy:

sudo systemctl start apache2

Để dừng và sau đó bắt đầu lại dịch vụ, hãy chạy:

sudo systemctl restart apache2

Nếu bạn chỉ thực hiện thay đổi cấu hình, Apache thường có thể tải lại 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 để tự động khởi động khi máy chủ khởi động. Nếu đây không phải là điều bạn muốn, hãy tắt hành vi này bằng cách chạy:

sudo systemctl disable apache2

Để kích hoạt lại dịch vụ để khởi động khi khởi động, hãy chạy:

sudo systemctl enable apache2

Apache bây giờ sẽ tự động khởi động khi máy chủ khởi động lại.

Bước 5: Thiết lập máy chủ ảo - Virtual Hosts (Tùy chọn)

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

Apache trên Debian 11 có một khối máy chủ được bật theo mặc định được định cấu hình để phân phát tài liệu từ thư mục /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 thư mục trong /var/www cho trang your_domain, để lại /var/www/html làm thư mục mặc định sẽ được cung cấp nếu yêu cầu của khách hàng không khớp với bất kỳ yêu cầu nào khác các trang web.

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

sudo mkdir -p /var/www/your_domain

Tiếp theo, gán quyền sở hữu thư mục cho người dùng mà bạn hiện đang đăng nhập bằng biến môi trường $USER:

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

Các quyền của web root 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 quyền truy cập tệp mặc định. Để đảm bảo rằng 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 tệp trong khi chỉ cấp quyền đọc và thực thi cho các nhóm 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 trình soạn thảo văn bản ưa thích của bạn. Ở đây, chúng ta sẽ sử dụng nano:

nano /var/www/your_domain/index.html

Bên trong, thêm HTML mẫu sau:

/var/www/your_domain/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

Lưu và đóng tập tin khi bạn hoàn tất. Nếu bạn đang sử dụng nano, bạn có thể thực hiện việc này bằng cách nhấn CTRL X, sau đó nhấn YENTER.

Để Apache phục vụ nội dung này, cần tạo một tệp máy chủ ảo với các chỉ thị chính xác. Thay vì sửa đổi trực tiếp tệp cấu hình mặc định có tại /etc/apache2/sites-available/000-default.conf, hãy tạo một tệp mới tại /etc/apache2/sites-available/your_domain.conf:

sudo nano /etc/apache2/sites-available/your_domain.conf

Chèn khối cấu hình sau, tương tự như khối mặc định nhưng được cập nhật cho thư mục và tên miền mới của bạn:

/etc/apache2/sites-available/your_domain.conf
<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 ý rằng chúng tôi đã cập nhật DocumentRoot vào thư mục mới và ServerAdmin thành email mà quản trị viên trang your_domain có thể truy cập. Chúng tôi cũng đã thêm hai lệnh: ServerName, thiết lập miền cơ sở phù hợp với định nghĩa máy chủ ảo này và ServerAlias, xác định các tên khác sẽ khớp như thể chúng là tên cơ sở.

Lưu và đóng tập tin khi bạn hoàn tất.

Bây giờ kích hoạt tệp bằng công cụ a2ensite:

sudo a2ensite your_domain.conf

Vô hiệu hóa trang mặc định được xác định trong 000-default.conf:

sudo a2dissite 000-default.conf

Tiếp theo, kiểm tra lỗi cấu hình:

sudo apache2ctl configtest

Bạn sẽ nhận được kết quả đầu ra sau:

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

Khởi động lại Apache để thực hiện các thay đổi của bạn:

sudo systemctl restart apache2

Apache bây giờ sẽ phục vụ tên miền của bạn. Bạn có thể kiểm tra điều này bằng cách điều hướng đến http://your_domain, nơi bạn sẽ thấy nội dung như sau:

install apache debian 11

Bước 6 - Làm quen với các tệp và thư mục quan trọng của Apache

Bây giờ bạn đã biết cách quản lý dịch vụ Apache, bạn nên dành vài phút để làm quen với một số thư mục và tệp 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 đã thấy trước đó, được cung cấp bên ngoài thư mục /var/www/html. Điều này có thể được thay đổi bằng cách thay đổi các tệp cấu hình Apache.

Cấu hình máy chủ

  • /etc/apache2: Thư mục cấu hình Apache. Tất cả các tệp 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 để thực hiện các thay đổi đối với cấu hình toàn cầu Apache. Tệp này chịu trách nhiệm tải nhiều tệp khác trong thư mục 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à bổ sung lắng nghe trên cổng 443 khi mô-đun cung cấp khả năng SSL được bật.
  • /etc/apache2/sites-available/: Thư mục nơi các máy chủ ảo trên mỗi trang có thể được lưu trữ. Apache sẽ không sử dụng các tệp cấu hình được tìm thấy trong thư mục này trừ khi chúng được liên kết với thư mục hỗ trợ trang web. Thông thường, tất cả cấu hình khối máy chủ được thực hiện trong thư mục này và sau đó được kích hoạt bằng cách liên kết với thư mục khác bằng lệnh a2ensite.
  • /etc/apache2/sites-enabled/: Thư mục lưu trữ các máy chủ ảo đã kích hoạt trên mỗi trang. Thông thường, chúng được tạo bằng cách liên kết đến các tệp cấu hình được tìm thấy trong thư mục có sẵn của trang web với tệp a2ensite. Apache đọc các tệp cấu hình và các liên kết được tìm thấy trong thư mục này khi nó khởi động hoặc tải lại để biên dịch một cấu hình hoàn chỉnh.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: Các thư mục này có cùng mối quan hệ với các thư mục site-availablesite-enabled, nhưng được sử dụng để lưu trữ các đoạn cấu hình không thuộc về một máy chủ ảo. Các tệp trong thư mục conf-available có thể được bật bằng lệnh a2enconf và bị vô hiệu hóa bằng lệnh a2disconf.
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: Các thư mục này lần lượt chứa các mô-đun có sẵn và được kích hoạt. Các tệp kết thúc bằng .load chứa các đoạn để tải các mô-đun cụ thể, trong khi các tệp kết thúc bằng .conf chứa cấu hình cho các mô-đun đó. Các mô-đun có thể được bật và tắt bằng lệnh a2enmoda2dismod.

Nhật ký máy chủ

  • /var/log/apache2/access.log: Theo mặc định, mọi yêu cầu tới máy chủ web của bạn đều được ghi lại trong tệp nhật ký này trừ khi Apache được định cấu hình để thực hiện khác.
  • /var/log/apache2/error.log: Theo mặc định, tất cả các lỗi đều được ghi lại trong tệp này. Lệnh LogLevel trong cấu hình Apache chỉ định mức độ chi tiết của nhật ký lỗi.

Phần kết luận install Apache trên Debian 11

Bây giờ bạn đã install thành công Apache Web Server trên Debian 11, bạn có nhiều tùy chọn về loại nội dung bạn có thể phân phối và các công nghệ bạn có thể sử dụng để tạo ra trải nghiệm phong phú hơn.

Mọi người cũng tìm kiếm: debian apache, debian 11 server, debian default web server