Cách cài đặt máy chủ web Apache trên Ubuntu 18.04

Tác giả Network Engineer, T.Mười 21, 2021, 05:08:23 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách cài đặt máy chủ web Apache trên Ubuntu 18.04


Máy chủ Apache HTTP 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 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, bạn sẽ học cách cài đặt máy chủ web Apache trên máy chủ Ubuntu 18.04 của mình. Hướng dẫn này cũng phác thảo thông tin về các tập tin và thư mục Apache quan trọng.

Trước khi bắt đầu hướng dẫn này, bạn nên có một người dùng thông thường, không phải root nhưng có quyền sudo được cấu hình trên máy chủ của bạn. Ngoài ra, bạn sẽ cần kích hoạt tường lửa 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 tài khoản người dùng thông thường và thiết lập tường lửa cho máy chủ của mình bằng cách làm theo hướng dẫn thiết lập máy chủ ban đầu của mình cho Ubuntu 18.04.

Khi bạn đã tạo một tài khoản, hãy đăng nhập với tư cách là người dùng không phải root nhưng có quyền sudo của bạn để bắt đầu.

1. Cài đặt Apache.

Apache có sẵn trong kho phần mềm 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 chỉ mục gói cục bộ để phản ánh những thay đổi ngược dòng mới nhất:

Mã nguồn [Chọn]
# sudo apt update
Sau đó, cài đặt gói apache2:

Mã nguồn [Chọn]
# 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ắt buộc.

2. Điều chỉnh tường lửa.

Trước khi thử nghiệm Apache, cần phải 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 các hướng dẫn trong điều kiện yêu cầu trước, 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 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ó 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 được phép qua tường lừa UFW bằng cách chạy lệnh sau:

Mã nguồn [Chọn]
# sudo ufw app list
Thao tác này sẽ trả về danh sách các hồ sơ ứng dụng:
       
Mã nguồn [Chọn]
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Danh sách này chỉ ra rằng có ba cấu hình có sẵn cho Apache:

  • Apache: Cấu hình này chỉ mở cổng 80 (lưu lượng 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 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)

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 mà bạn đã định cấu hình. Vì bạn chưa cấu hình SSL cho máy chủ của mình trong hướng dẫn này, bạn sẽ chỉ cần cho phép lưu lượng truy cập trên cổng 80:

Mã nguồn [Chọn]
# sudo ufw allow 'Apache'
Xác minh thay đổi này bằng cách kiểm tra trạng thái:

Mã nguồn [Chọn]
# sudo ufw status
Bây giờ lưu lượng HTTP được phép sẽ được hiển thị trong đầu ra:
       
Mã nguồn [Chọn]
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                 
Apache                     ALLOW       Anywhere                 
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)


Các hồ sơ Apache đã được kích hoạt để cho phép truy cập vào các máy chủ web.

3. Kiểm tra máy chủ Web của bạn.

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

Kiểm tra với systemd để đảm bảo dịch vụ đang chạy:

Mã nguồn [Chọn]
# sudo systemctl status apache2        
Mã nguồn [Chọn]
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2021-09-28 16:52:56 UTC; 1min 14s ago
 Main PID: 9409 (apache2)
    Tasks: 55 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─9409 /usr/sbin/apache2 -k start
           ├─9410 /usr/sbin/apache2 -k start
           └─9411 /usr/sbin/apache2 -k start


Kết quả này chứng tỏ rằng dịch vụ đã bắt đầu thành công. Tuy nhiên, cách tốt nhất để xác minh đ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 chính xác thông qua địa chỉ IP của bạn. Nếu bạn không biết địa chỉ IP của máy chủ của mình, bạn có thể lấy nó theo một vài cách khác nhau từ dòng lệnh.

Chạy phần sau tại dấu nhắc lệnh của máy chủ của bạn:

Mã nguồn [Chọn]
# hostname -I
Bạn sẽ nhận được 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 mình để kiểm tra xem chúng có hoạt động không.

Một giải pháp thay thế đang chạy lệnh sau, lệnh này sẽ cung cấp cho bạn địa chỉ IP công cộng của bạn vì nó được xác định từ một vị trí khác trên internet:

Mã nguồn [Chọn]
# 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:

Mã nguồn [Chọn]
http://your_server_ip
Bạn sẽ nhận được trang web Ubuntu 18.04 Apache mặc định:


Trang web này chỉ ra rằng 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 tin Apache quan trọng và vị trí thư mục.

4. Quản lý tiến 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ạn có thể dừng máy chủ web của mình bằng lệnh sau:

Mã nguồn [Chọn]
# sudo systemctl stop apache2
Để khởi động máy chủ web khi nó bị dừng, hãy chạy lệnh sau:

Mã nguồn [Chọn]
# sudo systemctl start apache2
Bạn có thể dừng và sau đó bắt đầu lại dịch vụ bằng cách chạy như sau:

Mã nguồn [Chọn]
# 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 giảm kết nối. Để thực hiện việc này, hãy thực hiện lệnh sau:

Mã nguồn [Chọn]
# sudo systemctl reload apache2
Theo mặc định, Apache được cấu hình để khởi động tự động khi máy chủ khởi động. Nếu đây không phải là những gì bạn muốn, bạn có thể vô hiệu hóa hành vi này bằng cách sau:

Mã nguồn [Chọn]
# sudo systemctl disable apache2
Ngoài ra, để bật hoặc bật lại dịch vụ khởi động khi hệ điều hành khởi động, hãy chạy lệnh sau:

Mã nguồn [Chọn]
# sudo systemctl enable apache2
Apache bây giờ sẽ tự động khởi động khi máy chủ khởi động lại.

5. Thiết lập máy chủ ảo (Khuyến nghị)

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

Apache trên Ubuntu 18.04 có một khối máy chủ được kích hoạt theo mặc định được cấu hình để cung cấp 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, chúng ta sẽ tạo ra một cấu trúc thư mục trong vòng /var/www vmột tên miền của trang web, để lại /var/www/html ở vị trí như thư mục mặc định để được phục vụ nếu một yêu cầu khách hàng không phù hợp với bất kỳ trang web khác.

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

Mã nguồn [Chọn]
# sudo mkdir /var/www/your_domain
Tiếp theo, gán quyền sở hữu thư mục với biến môi trường $USER:

Mã nguồn [Chọn]
# 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ị của mình, nhưng bạn có thể đảm bảo bằng cách nhập như sau:

Mã nguồn [Chọn]
# sudo chmod -R 755 /var/www/your_domain
Tiếp theo, tạo một trang mẫu index.html bằng cách sử dụng nan ohoặc trình chỉnh sửa yêu thích của bạn:

Mã nguồn [Chọn]
# nano /var/www/your_domain/index.html
Bên trong, thêm HTML mẫu sau:

Mã nguồn [Chọn]
<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 đã sử dụng nano, bạn có thể thoát bằng cách nhấn CTRL + X, sau đó Y, và ENTER.

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

Mã nguồn [Chọn]
# sudo nano /etc/apache2/sites-available/your_domain.conf
Thêm vào khối 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 thư mục và tên miền mới của bạn:

Mã nguồn [Chọn]
<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 ta đã cập nhật thư mục Document Root mới của chúng ta và ServerAdmin vào một email mà quản trị your_domain site có thể truy cập. Chúng ta cũng đã thêm hai lệnh: lệnh này 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 phải 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.

Tiếp theo, kích hoạt tập tin bằng công cụ a2ensite:

Mã nguồn [Chọn]
# sudo a2ensite your_domain.conf
Vô hiệu hóa trang web mặc định được xác định trong 000-default.conf:

Mã nguồn [Chọn]
# sudo a2dissite 000-default.conf
Bây giờ kiểm tra lỗi cấu hình:

Mã nguồn [Chọn]
# sudo apache2ctl configtest
Bạn sẽ nhận được kết quả sau:
   
Mã nguồn [Chọn]
Syntax OK
Khởi động lại Apache để triển khai các thay đổi của bạn:

Mã nguồn [Chọ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, nơi bạn sẽ nhận được thông tin như sau: http://your_domain


6. Làm quen với các tập tin và thư mục Apache quan trọng.

Bây giờ 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ố thư mục và tập tin quan trọng.

6.1. 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 ra khỏi /var/www/htmlthư mục. Điều này có thể được thay đổi bằng cách thay đổi các tập tin cấu hình Apache.

6.2. Cấu hình máy chủ.

  • /etc/apache2: Thư mục cấu hình Apache. Tất cả các tập tin cấu hình Apache đều nằm ở đây.
  • /etc/apache2/apache2.conf: Tập tin 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 chung của Apache. Tập tin này chịu trách nhiệm tải nhiều tập tin khác trong thư mục cấu hình.
  • /etc/apache2/ports.conf: Tập tin 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 mô-đun cung cấp khả năng SSL được bật.
  • /etc/apache2/sites-available/: Thư mục có thể lưu trữ các máy chủ ảo trên mỗi trang web. Apache sẽ không sử dụng các tập tin 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 sites-enabled. 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 đến 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 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 tập tin cấu hình được tìm thấy trong thư mục sites-available với a2ensite. Apache đọc các tập tin cấu hình và 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 thư mục sites-available và sites-enabled, nhưng được sử dụng để lưu trữ các đoạn cấu hình không thuộc về virtual host. Các tập tin trong thư mục conf-available có thể được bật bằng lệnh a2enconf và 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 chứa các mô-đun có sẵn và được kích hoạt tương ứng. Các tập tin kết thúc bằng .load chứa các phân đoạn để tải các mô-đun cụ thể, trong khi các tập tin 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 cách sử dụng lệnh a2enmoda2dismod.

6.3. Nhật ký máy chủ.

  • /var/log/apache2/access.log: Theo mặc định, mọi yêu cầu đến máy chủ web của bạn đều được ghi lại trong tập tin nhật ký 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 đều được ghi lại trong tập tin này. Các LogLevel trong cấu hình Apache xác định các bản ghi lỗi sẽ chứa bao nhiêu chi tiết.

Bây giờ bạn đã cài đặt máy chủ web Apache của mình, 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 bộ ứ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 Stack trên Ubuntu 18.04. Bạn cũng có thể tìm hiểu cách lấy và cài đặt chứng chỉ TLS / SSL miễn phí với hướng dẫn này về cách bảo mật Apache bằng Let's Encrypt trên Ubutnu 18.04.