Trong bài viết hôm nay, Vietnix sẽ hướng dẫn bạn cách cài đặt Apache Virtual Hosts trên Ubuntu 20.04. Đây được xem là một giải pháp tiết kiệm chi phí nhất vì phương pháp này cho phép người dùng nhúng nhiều domain trên một địa chỉ IP trong một Server.
Lưu ý cách cài đặt Apache Virtual Hosts trên Ubuntu 20.04
Trước khi cài đặt bạn cần có:
- Một máy chủ Ubuntu 20.04 và bạn đã đăng nhập với user non-root nhưng có quyền sudo.
- Apache đã được cài đặt trên hệ thống Ubuntu của bạn.
Bước 1: Tạo cấu trúc thư mục
Bước đầu tiên là tạo cấu trúc thư mục chứa dữ liệu trang web mà bạn sẽ cung cấp cho khách truy cập.
Root document – thư mục cấp cao nhất mà Apache xem xét để tìm nội dung cần phân phối, sẽ được phân chia thành các thư mục riêng lẻ trong /var/www
. Tại đây, bạn sẽ tạo một thư mục riêng cho mỗi máy chủ ảo.
Trong mỗi thư mục này, bạn tiếp tục tạo một thư mục public_html
để chứa dữ liệu/tập tin của website dùng để phục vụ cho người dùng. Còn các thư mục mẹ (your_domain_1
và your_domain_2
như ở dưới đây), sẽ chứa các scripts và mã ứng dụng (application code) để hỗ trợ nội dung web.
Để tạo thư mục mẹ với tên miền riêng, bạn sử dụng code sau:
sudo mkdir -p /var/www/your_domain_1/public_html
sudo mkdir -p /var/www/your_domain_2/public_html
Hãy nhớ thay đổi your_domain_1
và your_domain_2
thành các miền tương ứng. Ví dụ: Nếu một trong các miền của bạn là vietnix.com thì cấu trúc thư mục lúc này sẽ là: /var/www/vietnix.com/public_html
. Sau khi đã có cấu trúc thư mục hoàn chỉnh, bạn hãy đến với bước tiếp theo – cấp quyền phù hợp cho từng thư mục.
Bước 2: Cấp quyền
Đến đây, bạn đã tạo cấu trúc thư mục cho các file của mình. Tuy nhiên chúng vẫn còn thuộc quyền sở hữu của root user. Nếu bạn muốn user thông thường vẫn có thể thực hiện chỉnh sửa các file này thì có thể thay đổi quyền sở hữu bằng các lệnh sau:
sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
sudo chown -R $USER:$USER /var/www/your_domain_2/public_html
Trong đó, biến $USER
sẽ lấy giá trị của user mà bạn hiện đang đăng nhập khi nhấn ENTER
. Bằng cách này, user thông thường sẽ được cấp quyền sở hữu các thư mục con của public_html
ở trên.
Bạn cũng nên mở quyền read access đối với thư mục web chung cũng như tất cả các file và folders chứa trong đó để trang có thể được khởi chạy chính xác:
sudo chmod -R 755 /var/www
Sau khi chạy xong, web server hiện tại đã có đủ các quyền cần thiết để phân phối nội dung. Đồng thời user thông thường cũng có thể tự khởi tạo nội dung trong những thư mục cần thiết. Ở bước tiếp theo, hãy cùng đi sâu vào cách tạo nội dung cho các trang lưu trữ ảo.
Bước 3: Tạo Default Pages cho mỗi máy chủ ảo
Để thêm nội dung cho từng trang trên máy chủ ảo, bạn bắt đầu với việc tạo page index.html
cho site đầu tiên your_domain_1
. Bạn có thể khởi tạo bằng ngôn ngữ yêu thích, ví dụ như là với nano
:
nano /var/www/your_domain_1/public_html/index.html
Trong file này, tiếp tục tạo một file HTML để thông báo tới khách truy cập rằng họ sẽ được kết nối với trang web nào:
<html>
<head>
<title>Welcome to your_domain_1!</title>
</head>
<body>
<h1>Success! The your_domain_1 virtual host is working!</h1>
</body>
</html>
Để lưu và đóng file trong nano
, hãy nhấn CTRL+X
. Nhấn Y
để tiếp tục, sau đó nhấn ENTER
khi bạn hoàn tất để thoát.
Tiếp theo, sao chép file này để sử dụng làm cơ sở cho site thứ hai bằng lệnh:
cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.html
Sau đó, mở file mới này và sửa đổi các phần thông tin có liên quan:
nano /var/www/your_domain_2/public_html/index.html
Thực hiện tạo file HTML tương tự như ở site 1:
<html>
<head>
<title>Welcome to your_domain_2!</title>
</head>
<body> <h1>Success! The your_domain_2 virtual host is working!</h1>
</body>
</html>
Lưu và đóng file này. Bây giờ bạn có một default pages cho mỗi website phục vụ cho quá trình kiểm tra cấu hình máy chủ ảo.
Bước 4: Tạo file Virtual Host mới
File Virtual Host là nơi chỉ định cấu hình thực tế cho máy chủ ảo và quy định cách web server Apache sẽ phản hồi yêu cầu từ những domain khác nhau.
Apache sẽ đi kèm với một file Virtual Host mặc định là 000-default.conf
. Bạn có thể sao chép file này để tạo file Virtual Host cho từng domain của mình với lệnh:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_domain_1.conf
Lưu ý rằng cấu hình Ubuntu mặc định yêu cầu mỗi file Virtual Host phải kết thúc bằng .conf
.
Mở file mới với quyền root bằng lệnh:
sudo nano /etc/apache2/sites-available/your_domain_1.conf
Với các bình luận bị xóa, file sẽ giống như sau:
<VirtualHost *:80>
...
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Trong file này, bạn hãy tùy chỉnh các mục cho khớp với domain đầu tiên và bổ sung thêm một số directive. Máy chủ ảo này sẽ khớp với bất kỳ yêu cầu nào được thực hiện trên cổng 80
– cổng HTTP mặc định.
Đầu tiên, thay đổi ServerAdmin
thành email của quản trị viên website với lệnh:
ServerAdmin admin@your_domain_1
Sau đó, tiếp tục thêm chỉ thị ServerName
để thiết lập tên miền cơ sở cho máy chủ ảo và chủ thị ServerAlias
để định nghĩa các tên miền khác giúp chúng khớp với nhau như là tên miền cơ sở. Điều này cực hữu ích khi bạn muốn khớp các máy chủ bổ sung.
Chẳng hạn, nếu bạn đặt ServerName
là example.com
, bạn có thể thiết lập ServerAlias
đến www.example.com
. Lúc này, cả 2 sẽ cùng trỏ đến địa chỉ IP của máy chủ chứa tên miền trên.
Thêm hai chỉ thị này vào file cấu hình của bạn sau dòng ServerAdmin
:
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_1
ServerName your_domain_1
ServerAlias www.your_domain_1
DocumentRoot /var/www/html
...
</VirtualHost>
Tiếp theo, thay đổi vị trí file Virtual Host trong document root của tên miền này. Tiếp tục gõ lệnh dưới đây để trỏ file tới thư mục vừa tạo cho máy chủ này:
DocumentRoot /var/www/your_domain_1/public_html
Đây là một ví dụ về file Virtual Host với tất cả các thao tác đã thực hiện ở trên:
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_1
ServerName your_domain_1
ServerAlias www.your_domain_1
DocumentRoot /var/www/your_domain_1/public_html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
</VirtualHost>
Cuối cùng, lưu và đóng file.
Tạo file cấu hình thứ hai của bạn bằng cách sao chép file từ site của máy chủ ảo đầu tiên:
sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.conf
Mở file mới trong trình editor mà bạn thích với lệnh:
sudo nano /etc/apache2/sites-available/your_domain_2.conf
Bây giờ, bạn cần sửa đổi tất cả các phần thông tin khớp với tham chiếu tên miền thứ hai. Khi hoàn thành, kết quả sẽ tương tự như thế này:
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_2
ServerName your_domain_2
ServerAlias www.your_domain_2
DocumentRoot /var/www/your_domain_2/public_html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
</VirtualHost>
Lưu và đóng file khi bạn hoàn tất.
Bước 5: Kích hoạt file Virtual Host mới
Sau khi đã tạo hoàn tất file Virtual Host, bạn cần kích hoạt thì mới có thể sử dụng. Công cụ a2ensite
từ Apache sẽ được sử dụng trong trường hợp này. Bắt đầu với các lệnh:
sudo a2ensite your_domain_1.conf
sudo a2ensite your_domain_2.conf
Output từ 2 trang web sẽ nhắc bạn tải lại máy chủ Apache:
Output
Enabling site example.com.
To activate the new configuration, you need to run:
systemctl reload apache2
Trước khi tải lại, hãy tắt trang web được xác định bởi 000-default.conf
bằng cách sử dụng lệnh a2dissite
:
sudo a2dissite 000-default.conf
Output
Site 000-default disabled.
To activate the new configuration, you need to run:
systemctl reload apache2
Tiếp theo cần thực hiện kiểm tra lỗi cấu hình:
sudo apache2ctl configtest
Bạn sẽ nhận được output như sau:
Output
. . .
Syntax OK
Khi hoàn tất, hãy khởi động lại Apache để những thay đổi vừa rồi có hiệu lực.
sudo systemctl restart apache2
Bạn cũng có thể kiểm tra trạng thái của máy chủ sau tất cả những thay đổi trên bằng lệnh:
sudo systemctl status apache2
Máy chủ của bạn hiện đã được thiết lập để chạy hai trang web. Nếu đang sử dụng tên miền thực, bạn có thể bỏ qua bước 6 và chuyển sang bước 7. Còn nếu bạn đang kiểm tra cấu hình cục bộ, hãy tiếp tục thực hiện theo bước 6 để tìm hiểu cách thiết lập local host trước khi đến bước cuối cùng.
Bước 6: Thiết lập file Local Host (tùy chọn)
Nếu ở các bước trên, bạn sử dụng tên miền giả thay vì tên miền thật thì tới đây vẫn có thể kiểm tra chức năng của các trang web virtual host bằng cách tạm thời sửa đổi tệp hosts
trên máy tính cục bộ của mình. Thao tác này sẽ chặn mọi request đối với các tên miền mà bạn đã cấu hình và trỏ đến Virtual Private Server (VPS) với cách thức tương tự như hoạt động của hệ thống DNS với các tên miền thật. Và chúng chỉ hoạt động trên máy tính cục bộ với mục đích phục vụ kiểm thử.
Hãy đảm bảo rằng bạn đang sử dụng máy tính của mình chứ không phải server VPS. Bạn sẽ cần biết mật khẩu quản trị của máy tính hoặc phải là một quản trị viên.
Nếu bạn đang sử dụng Mac hoặc Linux, hãy chỉnh sửa file nội bộ với quyền admin bằng cách nhập:
sudo nano /etc/hosts
Nếu bạn đang sử dụng Windows, hãy mở Command Prompt và nhập:
notepad %windir%\system32\drivers\etc\hosts
Bạn cần thêm địa chỉ IP public của máy chủ và tên miền muốn sử dụng để truy cập máy chủ đó. Sử dụng các tên miền đã được dùng ở các bước trên và thay thế IP máy chủ tương ứng ở your_server_IP
. File của bạn sẽ trông giống như sau:
/etc/hosts
127.0.0.1 localhost
127.0.1.1 guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2
Thao tác này sẽ điều hướng mọi request đến 2 tên miền trên máy tính của bạn và gửi chúng đến máy chủ tương ứng với IP được chỉ định. Cuối cùng, bạn thực hiện lưu và đóng file.
Nếu bạn muốn sở hữu một hoặc nhiều tên miền thì có thể liên hệ với Vietnix – nhà cung cấp tên miền Việt Nam và quốc tế với mức giá cạnh tranh nhất trên thị trường hiện nay. Đăng ký tên miền ngay hoặc để lại thông tin bên dưới bài viết để được đội ngũ hỗ trợ tư vấn chi tiết và nhanh chóng nhất.
Bước 7: Kiểm tra kết quả
Bây giờ bạn đã cấu hình xong virtual host của mình. Tiến hành kiểm tra toàn bộ thiết lập đã thực hiện bằng cách truy cập vào tên miền phía trên:
http://your_domain_1
Bạn cũng có thể truy cập trang web thứ hai của mình và xem các thiết lập đã thực hiện thành công chưa:
http://your_domain_2
Nếu cả hai trang web này đều hoạt động như mong đợi thì bạn đã cấu hình thành công hai virtual host trên cùng một máy chủ.
Vietnix – Giải pháp công nghệ tối ưu với dịch vụ VPS đa dạng
Trải qua hơn 12 năm phát triển, Vietnix đã khẳng định vị thế với hàng ngàn dịch vụ được kích hoạt và sự tin tưởng từ cộng đồng khách hàng. Các gói VPS như VPS AMD, VPS GPU, VPS NVMe, VPS SSD, VPS Giá Rẻ, được thiết kế để phục vụ nhiều mục đích sử dụng khác nhau, đảm bảo tính linh hoạt và hiệu quả. Việc thuê VPS tại Vietnix giúp bạn có nền tảng vững chắc để triển khai các dự án một cách ổn định và nhanh chóng. Khám phá ngay dịch vụ Vietnix để tìm giải pháp phù hợp cho nhu cầu của bạn.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Với những hướng dẫn của Vietnix về cách cài đặt Apache Virtual Hosts trên Ubuntu 20.04 ở trên, bạn đã sở hữu một máy chủ có thể chứa 2 tên miền riêng biệt. Ngoài ra, bạn vẫn có thể mở rộng thêm bằng cách thực hiện các bước tương tự như trên bài viết. Apache không giới hạn số lượng tên miền, tuy nhiên cần tùy vào máy chủ của bạn để tạo số lượng virtual host cho phù hợp.