VPS
Hosting
Email
Máy chủ
Firewall Anti DDoS
Tên Miền
SSL
5
4

Cách cài đặt Apache Virtual Hosts trên Ubuntu 20.04

106
Lượt xem
Home System Cách cài đặt Apache Virtual Hosts trên Ubuntu 20.04

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.
Event sinh nhật 11 tuổi

Chương trình mừng sinh nhật lần thứ 11 Vietnix

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_1your_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_1your_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ý 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
Kiểm tra kết quả trên trang Web đầu tiên
Kiểm tra kết quả trên trang Web đầu tiên

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
Kiểm tra kết quả trên trang Web thứ hai
Kiểm tra kết quả trên trang Web thứ hai

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ủ.

Lời kết

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.

Chia sẻ bài viết
Đánh giá
5/5 - (15 bình chọn)
Kết nối với mình qua
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PearsonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix
Bài viết liên quan
Bình luận
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận