Cài đặt Apache Virtual Hosts trên ubuntu 20.04

By | July 8, 2020
apache virtual host

Virtual Host là một cách cấu hình Apache cho phép bạn chạy nhiều hơn một trang web trên một máy chủ. Với Virtual Host, bạn có thể chỉ định root document trang web (thư mục chứa tệp trang web), tạo chính sách bảo mật riêng cho từng trang, sử dụng các chứng chỉ SSL khác nhau và hơn thế nữa.

Bài viết này mô tả cách thiết lập Virtual Host Apache trên Ubuntu 20.04.

Điều kiện tiên quyết

Đảm bảo rằng bạn đã đáp ứng các yêu cầu sau trước khi tiếp tục với hướng dẫn:

Tạo cấu trúc thư mục

Thư mục gốc là thư mục nơi các tệp trang web cho một tên miền được lưu trữ và phục vụ theo yêu cầu. Bạn có thể đặt gốc tài liệu cho bất kỳ vị trí nào bạn muốn, trong ví dụ này, tôi sẽ sử dụng cấu trúc thư mục sau:

/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html

Mỗi tên miền được lưu trữ trên máy chủ sẽ được đặt  /var/www/<domain_name>/public_html.

Bắt đầu bằng cách tạo thư mục gốc cho tên miền:

sudo mkdir -p /var/www/domain1.com/public_html

Chúng ta cũng sẽ tạo một file index.html bên trong thư mục gốc của document sẽ được hiển thị khi bạn truy cập tên miền trong trình duyệt của bạn: /var/www/domain1.com/public_html/index.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to domain1.com</title>
  </head>
  <body>
    <h1>Success! domain1.com home page!</h1>
  </body>
</html>

Vì các lệnh trên được thực thi như một người dùng sudo, các tệp và thư mục mới được tạo được sở hữu bởi root. Để tránh mọi vấn đề về quyền, hãy thay đổi quyền sở hữu thư mục gốc của tài liệu miền và tất cả các tệp trong thư mục thành người dùng apache ( www-data):

sudo chown -R www-data: /var/www/domain1.com

Tạo một Virtual Host

Trên các hệ thống Ubuntu, các tệp cấu hình Virtual Host Apache được đặt trong thư mục /etc/apache2/sites-available . Chúng có thể được kích hoạt bằng cách tạo các liên kết tượng trưng đến thư mục /etc/apache2/sites-enabled mà Apache đọc trong quá trình khởi động.

Mở trình soạn thảo văn bản bạn chọn và tạo tệp cấu hình Virtual Host sau: /etc/apache2/sites-available/domain1.com

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/domain1.com/public_html

    <Directory /var/www/domain1.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/domain1.com-error.log
    CustomLog ${APACHE_LOG_DIR}/domain1.com-access.log combined
</VirtualHost>
  • ServerName: Tên miền phù hợp với cấu hình máy chủ ảo này. Đây phải là tên miền của bạn.
  • ServerAlias: Tất cả các tên miền hoặc tên miền phụ khác phù hợp với máy chủ ảo này, chẳng hạn như tên miền phụ www.
  • DocumentRoot: Thư mục mà Apache sẽ phục vụ các tệp miền.
  • OptionsLệnh này kiểm soát các tính năng máy chủ có sẵn trong một thư mục cụ thể.
    • -Indexes: Ngăn chặn danh sách thư mục.
    • FollowSymLinks: Khi tùy chọn này được bật, Apache sẽ theo các liên kết tượng trưng.
  • AllowOverride: Chỉ định config nào được khai báo trong file .htaccess có thể ghi đè các config cũ.
  • ErrorLogCustomLog: Chỉ định vị trí cho tệp logs.

Bạn có thể đặt tên tệp cấu hình theo ý muốn, nhưng cách tốt nhất là sử dụng tên miền làm tên của tệp cấu hình Virtual Host.

Để bật tệp Virtual Host mới, hãy sử dụng lệnh a2ensite trợ giúp tạo liên kết tượng trưng từ tệp máy chủ ảo đến thư mục sites-enabled:

sudo a2ensite domain1.com

Tùy chọn khác là tự tạo một liên kết tượng trưng như bên dưới:

sudo ln -s /etc/apache2/sites-available/domain1.com.conf /etc/apache2/sites-enabled/

Sau khi hoàn tất, hãy kiểm tra cấu hình để đảm bảo không có bất kỳ lỗi cú pháp nào với:

sudo apachectl configtest

Nếu không có lỗi, bạn sẽ thấy đầu ra sau:

Syntax OK

Khởi động lại dịch vụ Apache để các thay đổi có hiệu lực:

sudo systemctl restart apache2

Cuối cùng để xác minh rằng mọi thứ đều hoạt động như mong đợi, hãy mở http://domain1.com trong trình duyệt của bạn và bạn sẽ thấy nội dung của trang index.html:

Phần kết luận

Bạn đã học cách tạo cấu hình máy chủ ảo apache để lưu trữ nhiều tên miền trên một máy chủ Ubuntu.

Lặp lại các bước chúng ta đã nêu ở trên để tạo thêm máy chủ ảo cho tất cả các tên miền của bạn.

Nếu bạn đang phải đối mặt với bất kỳ vấn đề nào, hãy để lại nhận xét.

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments