UBUNTU 20.04
CHỦ ĐỀ KHÁC
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

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

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

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Vòng lặp while trong Shell Script

Vòng lặp while trong Shell Script

Trong Linux script, vòng lặp while được sử dụng trong ...

Top