Home > Quản trị Linux > Ubuntu > Cách tạo Apache Virtual Host trên Ubuntu 20.04

Cách tạo Apache Virtual Host trên Ubuntu 20.04

Trong bài này mình sẽ hướng dẫn các bạn cách tạo Apache Virtual Host trên Ubuntu, đây là cách mà bạn thiết lập để chạy nhiều website trên Server Ubuntu.

Máy chủ ảo (virtual host) là cách cấu hình Apache cho phép bạn chạy nhiều domain trên một máy chủ Apache duy nhất. Với Máy chủ ảo, bạn có thể chỉ định thư mục gốc của trang web (thư mục chứa các file của trang web), tạo chính sách bảo mật riêng cho từng trang web, sử dụng các chứng chỉ SSL khác nhau.

Để tạo một domain của server Apache Ubuntu thì trước tiên bạn phải chuẩn bị một số thứ sau:

Nếu bạn đang sử dụng Nginx thì có thể tham khảo tại bài viết cách thiết lập nhiều domain máy chủ Nginx trên Ubuntu 20.04.

Ok, giờ ta bắt đầu thôi.

1. Cấu trúc thư mục của Virtual Host Apache trên Linux

Trên Apache Server, mỗi website sẽ có một thư mục chứa mã nguồn riêng, hay còn gọi là thư mục gốc. Nhiệm vụ của server là dựa vào domain đang request để gọi tới đúng thư mục gốc.

Ví dụ dưới đây là cấu trúc thư mục của hai website, được đặt trong /var/ww/.

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

Như vậy, mỗi website sẽ có thư mục gốc dạng như sau:

/var/www/<domain_name>/public_html

Bây giờ mình cần tạo host cho domain1.com thì các bước thực hiện như sau.

Đầu tiên hãy chạy lệnh dưới đây để tạo thư mục gốc cho domain1 bằng cách sử dụng lệnh mkdir.

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

Bạn chú ý nhé, tên của thư mục phải trùng với tên của domain.

Bây giờ ta sẽ tạo một file index.html nằm trong thư mục public_html vừa tạo, để khi chạy web thì file này sẽ được chạy.

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

Giống như trong bài Nginx, vì mình sử dụng lệnh sudo để tạo các file nên nó thuộc quyền sở hữu của nhóm root. Để tránh các vấn đề rắc rối về phân quyền sau này thì hãy đổi nó sang sở hữu của Apache (www-data).

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

2. Tạo Virual Host Apache để chạy nhiều web trên Ubuntu 20.04

Trên hệ thống của Ubuntu, file cấu hình virtual host các domain có sẵn nằm trong thư mục /etc/apache2/sites-available. Nó có thể được kích hoạt bằng cách tạo một symbolic links tới thư mục /etc/apache2/sites-enabled, và Apache sẽ đọc trong khi chạy.

Hãy sử dụng text editor bất kì để mở file /etc/apache2/sites-available/domain1.com.conf lên nhé. Mình sử dụng VI Editor, rồi nhập nội dung sau vào:

/etc/apache2/sites-available/domain1.com.conf
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    ServerAdmin webmaster@domain1.com
    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>

Trong đó:

  • ServerName là tên của domain.
  • ServerAlias là danh sách sub domain hoặc domain có www.
  • DocumentRoot là thư mục chứa mã nguồn website.
  • Options: sẽ có hai sựa lựa chọn:
    • Indexes: Sử dụng đường link thực
    • FollowSymLinks: Sư dụng đường link ảo (symlink)
  • AllowOverride cho phép sử dụng .htaccess để ghi đè cấu hình server.
  • ErrorLog, CustomLog là hai file lưu log.

Bạn có thể đặt một cái tên bất kì cho file cấu hình mỗi trang web. Tuy nhiên, khuyến khích bạn đặt theo tên domain, vì khi bạn quản lý nhiều domain sẽ dễ dàng nhớ và phân biệt giữa chúng.

Để kích hoạt máy ảo thì mình sử dụng a2ensite script để hỗ trợ để tạo symbolic link từ virtual host đến thư mục sites-enabled.

sudo a2ensite domain1.com

Và dưới đây là lệnh tạo symbolic link:

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

Chạy xong tihì hãy tiếp tục thực hiện lệnh này để test nhé:

sudo apachectl configtest

Nếu kết quả trả vè như sau là bạn đã thành công:

Syntax OK

Khởi động lại Apache để áp dụng những thay đổi:

sudo systemctl restart apache2

Cuối cùng, hãy truy cập vào http://domain1.com để xem thành quả mà bạn đã làm nhé.

Như vậy là mình đã hướng dẫn xong cách tạo Virtual Host Apache trên Ubuntu 20.04. Qua bài này bạn đã biết cách tạo và quản lý nhiều domain trên Ubuntu server thông qua Apache.

Bài giải

-------------------- ######## --------------------

Nguồn: freetuts.net

Tham khảo
Hướng dẫn cài đặt MySQL trên Ubutu 20.04
Cách tạo Apache Virtual Host trên Ubuntu 20.04
Cách tạo Let's Encrypt SSL Apache Server trên Ubuntu 20.04

BÀI VIẾT

notice png LIST home png HOME hot gif BÁO
LỖI
top png TOP