Hướng Dẫn Cấu Hình Apache Virtual Hosts Trên Ubuntu 18.04 Để Chạy Nhiều Website Trên Một VPS

Cấu Hình Apache Virtual Hosts Trên Ubuntu 18.04

Máy chủ web Apache là một giải pháp phổ biến để phục vụ các website trên Internet. Tính đến năm 2019, ước tính Apache phục vụ 29% tổng số website đang hoạt động, đồng thời mang lại sự bền bỉ và tính linh hoạt cho các nhà phát triển. Sử dụng Apache, quản trị viên có thể cấu hình một máy chủ để lưu trữ nhiều tên miền hoặc website trên cùng một giao diện hoặc địa chỉ IP thông qua một hệ thống khớp tên (matching system).

Mỗi tên miền hoặc website riêng lẻ – được gọi là “virtual host” – được cấu hình qua Apache sẽ chỉ dẫn khách truy cập đến một thư mục cụ thể chứa thông tin của website đó. Quy trình này được thực hiện mà không tiết lộ rằng cùng một máy chủ cũng đang phục vụ nhiều website khác. Phương pháp này có thể mở rộng vô hạn (không bị giới hạn phần mềm) miễn là máy chủ của bạn có thể xử lý tải. Đơn vị cơ bản mô tả một website hay tên miền là virtual host.

Trước khi bắt đầu cấu hình Virtual Hosts, việc lựa chọn một VPS server ổn định và hiệu suất cao là yếu tố then chốt để đảm bảo website hoạt động mượt mà. Nếu bạn đang tìm kiếm giải pháp VPS phù hợp, hãy khám phá các tùy chọn tại DataOnline.

Sau đây, DataOnline sẽ hướng dẫn bạn cài đặt các virtual hosts cho Apache trên máy chủ Ubuntu 18.04. Trong quá trình thực hiện, bạn sẽ học cách phục vụ nội dung khác nhau cho khách truy cập tùy theo tên miền họ yêu cầu.

Yêu cầu

Trước khi bắt đầu, bạn cần:

sudo apt update
sudo apt install apache2

Nếu bạn cần hướng dẫn chi tiết cũng như cách cấu hình tường lửa, hãy tham khảo bài hướng dẫn “Cách cài đặt máy chủ web Apache trên Ubuntu 18.04” của DataOnline.

Trong hướng dẫn này, chúng ta sẽ cấu hình virtual host cho hai tên miền ví dụ: example.com và test.com. Trong quá trình làm theo, bạn nên thay thế bằng tên miền hoặc giá trị của riêng bạn.

Nếu bạn đang sử dụng DataOnline, bạn có thể tham khảo tài liệu “Cách thêm tên miền” để biết cách thiết lập tên miền. Với các nhà cung cấp khác, hãy tham khảo tài liệu hướng dẫn tương ứng. Nếu bạn chưa có tên miền thật, bạn có thể sử dụng các giá trị thử nghiệm. Chúng ta sẽ hướng dẫn cách chỉnh sửa file hosts cục bộ để kiểm tra cấu hình, cho phép xác nhận cấu hình từ máy tính cá nhân dù nội dung không khả dụng qua tên miền đối với khách truy cập khác.

Bước 1 – Tạo cấu trúc thư mục

Bước đầu tiên là tạo một cấu trúc thư mục chứa dữ liệu website sẽ được phục vụ cho khách truy cập.

Document root (thư mục gốc mà Apache dùng để tìm nội dung phục vụ) sẽ được đặt trong các thư mục riêng biệt dưới đường dẫn /var/www. Chúng ta sẽ tạo một thư mục cho từng virtual host.

Bên trong mỗi thư mục đó, tạo một thư mục public_html để chứa các file thực tế. Cách sắp xếp này mang lại sự linh hoạt cho việc lưu trữ nội dung.

Ví dụ, với các website của chúng ta, hãy tạo các thư mục như sau (nếu bạn sử dụng tên miền thật hoặc giá trị khác, hãy thay thế phần được đánh dấu):

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

Lưu ý: Phần tên miền (ví dụ: example.com, test.com) là những giá trị bạn muốn phục vụ từ VPS của mình.

Bước 2 – Cấp quyền

Hiện tại, cấu trúc thư mục được tạo ra có quyền sở hữu thuộc về người dùng root. Nếu bạn muốn người dùng thường có thể chỉnh sửa file trong các thư mục web, hãy thay đổi quyền sở hữu bằng lệnh:

sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html

Biến $USER sẽ lấy giá trị tên người dùng bạn đang đăng nhập khi nhấn ENTER. Sau lệnh này, người dùng thường của bạn sẽ sở hữu các thư mục public_html chứa nội dung.

Tiếp theo, hãy chỉnh sửa quyền để đảm bảo rằng thư mục web và toàn bộ file, thư mục con bên trong đều có quyền đọc, cho phép Apache phục vụ trang đúng cách:

sudo chmod -R 755 /var/www

Bây giờ, máy chủ web của bạn có đủ quyền để phục vụ nội dung và người dùng của bạn có thể tạo nội dung trong các thư mục cần thiết.

Bước 3 – Tạo trang demo cho mỗi virtual host

Với cấu trúc thư mục đã sẵn sàng, hãy tạo nội dung để phục vụ. Cho mục đích minh họa, chúng ta sẽ tạo trang index.html cho mỗi website.

Bắt đầu với example.com. Mở file index.html trong trình soạn thảo văn bản, ví dụ dùng nano:

nano /var/www/example.com/public_html/index.html

Trong file này, hãy tạo một tài liệu HTML báo hiệu website đang kết nối đến tên miền đó, ví dụ:

<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

Lưu và đóng file (trong nano, nhấn CTRL+X, sau đó nhấn Y rồi ENTER).

Sau đó, sao chép file này làm cơ sở cho website thứ hai:

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Mở file index.html cho test.com và chỉnh sửa thông tin cho phù hợp:

nano /var/www/test.com/public_html/index.html

Nội dung file sẽ như sau:

<html>
  <head>
    <title>Welcome to Test.com!</title>
  </head>
  <body> <h1>Success! The test.com virtual host is working!</h1>
  </body>
</html>

Lưu và đóng file. Giờ đây, bạn đã có các trang cần thiết để kiểm tra cấu hình virtual host.

Bước 4 – Tạo file cấu hình virtual host mới

Các tệp virtual host là các tệp xác định cấu hình thực tế của các virtual host và quy định cách máy chủ web Apache phản hồi các yêu cầu từ các tên miền khác nhau.

Apache đi kèm với một tệp virtual host mặc định có tên 000-default.conf, mà chúng ta có thể sử dụng làm điểm khởi đầu. Chúng ta sẽ sao chép tệp này để tạo một tệp virtual host riêng cho từng tên miền.

Chúng ta sẽ bắt đầu với một tên miền, cấu hình nó, sau đó sao chép tệp để sử dụng cho tên miền thứ hai và thực hiện một số điều chỉnh cần thiết. Trong cấu hình mặc định của Ubuntu, mỗi tệp virtual host phải có phần mở rộng **.conf**.

Tạo file virtual host đầu tiên

Sao chép file cấu hình mặc định cho tên miền đầu tiên:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Mở file mới với quyền root:

sudo nano /etc/apache2/sites-available/example.com.conf

Sau khi loại bỏ các comment, file sẽ có nội dung cơ bản 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, chúng ta sẽ tùy chỉnh các thông số cho tên miền example.com và thêm một số chỉ thị bổ sung. Phần cấu hình này áp dụng cho tất cả các yêu cầu trên cổng 80 (cổng HTTP mặc định).

Đầu tiên, thay đổi chỉ thị ServerAdmin thành email của quản trị viên, ví dụ:

ServerAdmin admin@example.com

Sau đó, chúng ta cần thêm hai chỉ thị (directive).

Chỉ thị đầu tiên, ServerName, xác định tên miền cơ bản mà virtual host này sẽ phản hồi. Đây thường sẽ là tên miền chính của bạn.

Chỉ thị thứ hai, ServerAlias, định nghĩa các tên miền bổ sung sẽ được coi như tên miền cơ bản. Điều này hữu ích để khớp với các tên miền phụ mà bạn đã thiết lập, chẳng hạn như www.

ServerName example.com
ServerAlias www.example.com

Cuối cùng, thay đổi chỉ thị DocumentRoot cho phù hợp với thư mục đã tạo:

DocumentRoot /var/www/example.com/public_html

Kết quả, file example.com.conf sẽ trông như sau:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Lưu và đóng file.

Sao chép virtual host đầu tiên và điều chỉnh cho tên miền thứ hai

Tiếp theo, tạo file virtual host cho test.com bằng cách sao chép file đã tạo:

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Mở file mới:

sudo nano /etc/apache2/sites-available/test.com.conf

Chỉnh sửa các thông số cho test.com sao cho phù hợp. Sau khi chỉnh sửa, file sẽ có nội dung như sau:

<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Lưu và đóng file.

Bước 5 – Kích hoạt các file virtual host mới

Sau khi tạo file cấu hình cho các virtual host, bạn cần kích hoạt chúng. Apache cung cấp các công cụ để thực hiện việc này.

Sử dụng lệnh a2ensite để kích hoạt từng trang:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Sau đó, vô hiệu hóa trang mặc định (file 000-default.conf):

sudo a2dissite 000-default.conf

Khi hoàn tất, hãy khởi động lại Apache để áp dụng các thay đổi và kiểm tra trạng thái:

sudo systemctl restart apache2
sudo systemctl status apache2

Bây giờ, máy chủ của bạn đã được cấu hình để phục vụ hai website.

Bước 6 – Cấu hình file hosts cục bộ (Tùy chọn)

Nếu bạn chưa sử dụng tên miền thật mà dùng các tên miền ví dụ để thử nghiệm, bạn có thể kiểm tra chức năng của cấu hình bằng cách chỉnh sửa file hosts trên máy tính cục bộ. Việc này sẽ chặn các yêu cầu đến các tên miền bạn cấu hình và chuyển hướng chúng về máy chủ VPS của bạn, tương tự như hệ thống DNS sẽ làm nếu bạn có tên miền đã đăng ký.

Lưu ý rằng thao tác này chỉ có hiệu lực trên máy tính cục bộ của bạn, và chỉ dùng để thử nghiệm.

Trên máy tính chạy Mac hoặc Linux, mở file hosts với quyền quản trị:

sudo nano /etc/hosts

Nếu bạn đang sử dụng Windows, hãy tham khảo hướng dẫn chỉnh sửa file hosts tương ứng.

Thêm các dòng sau vào file hosts, thay thế your_server_IP bằng địa chỉ IP công cộng của máy chủ:

127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP example.com
your_server_IP test.com

Lưu và đóng file. Việc này sẽ chuyển hướng các yêu cầu đến example.com và test.com trên máy tính của bạn tới máy chủ VPS, giúp bạn kiểm tra cấu hình virtual host.

Bước 7 – Kiểm tra kết quả

Bây giờ khi bạn đã cấu hình xong các virtual host, bạn có thể kiểm tra thiết lập của mình bằng cách truy cập vào các tên miền mà bạn đã cấu hình trong trình duyệt web:

http://example.com

Bạn sẽ thấy một trang hiển thị như sau:

Bạn cũng có thể truy cập vào trang thứ hai và xem tệp mà bạn đã tạo cho trang thứ hai của mình.

http://test.com

test

Nếu cả hai trang này hoạt động như mong đợi, bạn đã cấu hình thành công hai virtual host trên cùng một máy chủ.

Nếu bạn đã điều chỉnh tệp hosts trên máy tính cá nhân, bạn có thể muốn xóa các dòng bạn đã thêm sau khi xác minh rằng cấu hình của bạn hoạt động. Điều này sẽ ngăn cho tệp hosts của bạn bị lấp đầy với các mục không còn cần thiết nữa.

Nếu bạn cần truy cập lâu dài, hãy cân nhắc thêm tên miền cho mỗi trang bạn cần và thiết lập chúng để trỏ về máy chủ của bạn.

Kết luận

Nếu bạn đã làm theo hướng dẫn, máy chủ của bạn hiện đã có khả năng phục vụ hai tên miền riêng biệt. Quy trình này hoàn toàn mở rộng, cho phép bạn dễ dàng thêm nhiều virtual hosts khác theo nhu cầu sử dụng. Apache không giới hạn số lượng tên miền có thể xử lý, do đó bạn có thể cấu hình bao nhiêu virtual hosts tùy theo tài nguyên và khả năng của máy chủ.

Khi triển khai nhiều website trên một máy chủ, việc tối ưu chi phí là điều quan trọng. Tham khảo giá thuê VPS cạnh tranh và các gói dịch vụ linh hoạt tại DataOnline để lựa chọn giải pháp phù hợp với nhu cầu của bạn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *