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:
- Đã mua một VPS để sử dụng, nếu chưa có thì tìm mua trong bài viết VPS tốt nhất.
- Mua domain và trỏ domain về địa chỉ IP của server. Nếu bạn chưa biết cách làm thì xem tại bài viết hướng dẫn trỏ tên miền về hosting.
- Đã tiến hành cài đặt Apache trênUbuntu
- Bạn đang đăng nhập bằng user sudo trên Ubuntu.
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.
<!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:
<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ựcFollowSymLinks
: 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:
- 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