Giả sử máy chủ Ubuntu của bạn đã được cài đặt Apache2 HTTP server và bạn đang muốn khởi chạy nhiều websites cho bạn bè hoặc khách hàng của bạn.

Khi đã được cài đặt, Apache sẽ hiển thị các trang web hiển thị các trang web giống nhau trên mỗi host. Mặc định trang web đã được lưu trữ tại đường dẫn /var/www/ và thư mục này chỉ có thể lưu trữ một trang web trên máy chủ của bạn 🙁 trong khi đó bạn muốn lưu trữ thêm một hoặc một vài website nữa trên cùng một host.

Tạo máy chủ ảo Virtual Hosts

Apache có thể lưu trữ nhiều hơn một website. Nó có thể sử dụng Apache để cài đặt không giới hạn số websites trên cùng một host. Phương pháp này được gọi là thiết lập “máy chủ ảo” trong máy chủ Apache.

Ở cấp độ cơ bản nhất, chỉ có 2 thư mục được sử dụng cho việc cài đặt thiết lập khi sử dụng máy chủ ảo Apache: /etc/apache2/sites-available/ và /etc/apache2/sites-enabled/.

Trong Apache 1.x, việc cài đặt máy chủ ảo được thực hiện bở việc thêm các thẻ <virtualhost> và trong file /etc/apache/httpd.conf. Apache2 thiết lập các máy chủ ảo bằng cách tổ chức và lưu trữ thông tin cấu hình ở 2 thư mục “sites-available” và “sites-enables”.

Trong Apache2, để tạo nhiều websites trên máy chủ của bạn, bạn cần phải thêm một file vào thư mục sites-available tương ứng với trang web bạn muốn lưu trữ. Một cách hiểu nhanh và đơn gian là mỗi một file trong sites-available = một trang web mới.

Trong ví dụ sau đây, tôi sẽ thêm một trang web có tên là vndemy.com, site này public các khóa học đào tạo trực tuyến về học thuật và công nghệ. Tuy nhiên, bạn có thể add thêm nhiều webistes khác trên máy chủ Ubuntu của bạn. Để làm việc này, đơn giản chỉ cần làm lại các theo các bước được mô tả dưới đây, nhưng nhớ đặt lại tên cho đúng với tên web bạn muốn lưu trữ !

1. Tạo một file mới trong “sites-available”

Trong thư mục /etc/apache2/sites-available/ bạn sẽ thấy một file mặc định tên là “default”. Sử dụng file này làm template cho các file virtual host sau này. Hãy copy file này sang tên giống với host bạn đang cài đặt, bằng lệnh sau:

cp default vndemy.com

Để rõ ràng, hãy đặt tên tập tin giống với tên miền của trang web, ở đây tôi đặt tương ứng với tên miền vndemy.com. Điều này cho phép ta dễ dàng xác định được file nào cấu hình cho host nào. Đơn giản để dễ nhớ thôi 😀

2. Cấu hình file mới “sites-available”

Bây giờ bạn cần phải thay đổi lại các cấu hình mặc định trong file vừa tạo để nó sẽ hoạt động đúng với web bạn muốn cài đặt. Sử dụng text editor để thay đổi các thiết lập, ví dụ ở đây tôi dùng nano ..

nano vndemy.com

… và sửa nội dung để chứa tên trang web của bạn và thư mục lưu trữ nó. Trường hợp này, website của chúng ta là vndemy.com. Và hãy thay đổi lại nội dung phù hợp đúng với site của bạn:

<VirtualHost *>
      ServerAdmin admin@vndemy.com
      ServerName vndemy.com
      DocumentRoot /var/www/vndemy.com/
      <Directory />
              Options FollowSymLinks
              AllowOverride None
      </Directory>
      <Directory /var/www/vndemy.com/>
              Options Indexes FollowSymLinks MultiViews
              AllowOverride None
              Order allow,deny
              allow from all
      </Directory>

 (...)

Chắc chắn dòng ServerName không có trong file default, nếu có thì hãy xóa nó đi

Dòng DocumentRoot là nơi bạn chỉ định thư mục lưu trữ trang web của bạn đặt trên máy chủ của bạn. Thư mục này bạn có thể đặt ở bất cứ chỗ nào bạn thích. Ở trên thư mục web tôi lưu trữ nằm ở thư mục /var/www/vndemy.com/

Note: Không có giới hạn số lượng websites bạn muốn lưu trữ trên cùng một host. Việc bạn cần phải làm là tạo một file mới trong thư mục sites-available. Nếu quá nhiều website bạn lưu trữ có thể dẫn đến hiện tượng chậm. Do đó, hãy tăng sức mạnh của máy chủ, băng thông và tốc độ của websites.

3. Tạo link file trong “sites-enabled”

Kết thúc, bạn cần tạo một symbolic link tới file đã thiết lập trong thư mục trước ở trong /etc/apache2/sites-enabled/. Để tạo symbolic link, thực hiện các lệnh sau đây:

cd /etc/apache2/sites-enabled
ln -s /etc/apache2/sites-available/djmadjack.com

Ok. Vậy là ta đã cài đặt và cấu hình virutal hosts thành công đối với site có tên miền vndemy.com. Chúng ta cần restart lại apache tại bước 4

Một cách thay thế khác sử dụng a2ensite và a2dissite để enable hoặc disable cấu hình tên miền mới vndemy.com.

a2ensite vndemy.com
a2dissite vndemy.com

4. Restart Apache

Khi hoàn tất việc tạo các file, link trong thư mục tương ứng sites-available và sites-enabled để cho apache chấp nhận các thay đổi mới, bạn cần restart lại apache:

/etc/init.d/apache2 restart

Đối với thay đổi nhỏ, bạn chỉ cần reload lại cấu hình của Apache là được:

/etc/init.d/apache2 reload

Note: Chỉ vậy thôi! Đừng quên trỏ domain mới về địa chỉ ip của web server mà máy chủ đang lưu trữ web của bạn.

5. Các lỗi có thể xảy ra ?

Note: Hãy chắn chắn bạn đã restart lại apache sau khi cấu hình thiết lập hoàn tất. Đảm bảo các thay đổi đã được apache chấp nhận !

Error #1: apache2: apr_sockaddr_info_get() failed for ubuntu

Solution: trong file /etc/hosts, thêm tên máy của bạn ở trước localhost như sau:

127.0.0.1       ubuntu localhost

Error #2: apache2: Could not reliably determine the server’s fully qualified domain name

Solution: Bạn cần phải thêm tên của máy chủ vào trong file /etc/apache2/httpd.conf. Nếu bạn không biết tên của máy chủ, gõ lệnh sau vào terminal:

hostname

Nó sẽ trả về tên của máy chủ bạn đang làm việc; ví dụ ở đây là ubuntu. Sau đó, sử dụng text editor thêm vào 1 dòng trong file /etc/apache2/httpd.conf như dưới đây (thay tên ubuntu bằng tên máy chủ chủ của bạn)

ServerName ubuntu

Chúc thành công !

About The Author