Cài đặt Apache Virtual Hosts trên CentOS 7

2 năm trước

 

Apache web server là cách phổ biến nhất để cung cấp tài nguyên web trên Internet, chiếm phân nửa số lượng website hoạt động, với những tính năng mạnh mẽ và linh hoạt.

Apache chia nhỏ những tính năngvà thành phần của nó thành những đơn vị nhỏ có thể được tùy chỉnh và cấu hình một cách độc lập. Đơn vị cơ bản biểu diễn một website hay một tên miền là virtual host. Virtual host cho phép server host nhiều tên miền và các giao dện(interface ) bằng cách sử dụng một hệ thống ghép tương ứng. Điều này thích hợp hơn với những người muốn host nhiều tên miền cho một VPS của ViCloud.

Mỗi tên miền được cấu hình sẽ đưa người dùng đến một đường dẫn cụ thể lưu trữ thông tin về trang web đó, mà không quan tâm đến server cũng lưu trữ nhiều trang web khác. Cấu trúc này có thể mở rộng bất chấp giới hạn về phần mềm, miễn là server có thể xử lí lưu lượng truy cập của tất cả các website ấy.

Bài viết sẽ giới thiệu cách cài đặt Apache Virtual Host trên VPS của Centos 7. Sau khi hoàn thành, bạn sẽ biết được cách server phục vụ những dịch vụ khác nhau tới những người dùng cụ thể khác nhau  dựa vào tên miền họ yêu cầu.

 

Điều kiện bắt buộc

 

sudo yum -y install httpd

Kích hoạt Apache như một dịch vụ của Centos để nó tự khởi động sau khi reboot:

sudo systemctl enable httpd.service

Cuối cùng, log in vào tài khoản của user vừa nêu qua SSH

Note: Quá trình cấu hình trong ví dụ sẽ tạo hai virtual host cho example.com và  example2.com. Hãy thay thế những tên miền này thành tên miền của bạn nếu có thể.

 

Bước 1— Tạo cấu trúc đường dẫn

Document  root ( đường dẫn gốc mà Apache sẽ tham chiếu đến đầu tiên trong quá trình truy cập) sẽ là một thư mục trong /var/www. Ta sẽ tạo một thư mục riêng với mỗi virtual host định tạo.

Tạo thư mụcpublic_html chứa những file html trong mỗi đường dẫn. Điều này giúp ta dễ dàng quản lí các virtual host .

Dùng lệnh mkdir để tạo đường dẫn (với cờ-p cho phép ta tạo ra những thư mục con lồng trong nó)

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

Phần chữ đỏ biểu thị domain name, nhắc lại là hãy dùng domain name của bạn nếu có thể.

 

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

Những đường dẫn dùng để lưu trữ đã được tạo, nhưng nó chỉ có thể truy cập bởi root user. Nếu muốn user thường của ta có quyền truy cập và thay đổi dữ liệu, dùng lệnh chown:

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

Biến $USER nhận giá trị là tên user bạn đã dùng để đăng nhập. Đến đây, user của ta đã có quyền quản trị với thư mục con public_html .

Ta cũng sẽ chỉnh sửa quyền truy cập sao cho quyền đọc được chấp nhận với tất cả các file và thư mục bên trong /var/www

sudo chmod -R 755 /var/www
 

Bước 3 —Tạo những trang Demo cho những virtual host

 

Ta sẽ tạo một file html đơn giản là index.html cho mỗi thư mục của một tên miền cụ thể.

Bắt đầu với example.com. Mởindex.html trong trình biên dịch

nano

với lệnh:

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

Trong file này, thêm một đoạn mã HTML đơn giản như sau:

 Success! The example.com virtual host is working!

Lưu và đóng file.

Copy file vừa tạo vào thư mục thứ hai:

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

Mở file và đổi example.com thành example2.com 

nano /var/www/example2.com/public_html/index.html
 Success! The example2.com virtual host is working!

Lưu và đóng file

Bước 4 — Tạo file Virtual Host mới

Những file virtual host lưu cấu hình của các website riêng biệt và quyết định cách Apache web server phản hồi lại những yêu cầu khác nhau của người dùng.

Để bắt đầu ta sẽ cần tạo thư mục chứa virtual host, cũng như đường dẫn cho Apache biết nếu một virtual host sẵn sàng để phục vụ người dùng. Thư mục sites-available lưu toàn bộ file virtual host trong khi sites-enabled lưu trữ những đường dẫn đến virtual host sẵn sàng sử dụng. Tạo 2 thư mục trên với mkdir :

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Note: Những thư mục này được giới thiệu bởi Debian , nhưng ta thêm vào đây để việc quản lí host linh hoạt hơn, vì nó khiến việc kích hoạt và vô hiệu hóa các virtual host trở nên dễ dàng hơn.

Tiếp theo, ta sẽ cho Apache tìm kiếm những virtual host trongsites-enabled . Để làm việc này ta cần,  edit file cấu hình chính của Apache và thêm một dòng mô tả một thư mục để lưu các file cấu hình khác được thêm vào.


Mở file bằng nano:

sudo nano /etc/httpd/conf/httpd.conf

Thêm vào dòng:

IncludeOptional sites-enabled/*.conf

Lưu và đóng file.

Tạo File Virtual Host đầu tiên

Mở file mới được tạo bằng nano với quyền root:

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

Note: Mọi file cấu hình của virtual host phải có định dạng .conf.

Đầu tiên, tạo một cặp tag xác định thành phần của một virtual host trên cổng 80( Cổng mặc định của HTTP)

Sau đó miêu tả server name www.example.com. và server alias trỏ đến example.com, để những yêu cầu www.example.com và example.com cho cùng một kết quả:

 ServerName www.example.com ServerAlias example.com

Note: Để phiên bản www của tên miền được xác định đúng, cấu hình của DNS phải có một  A record hoặc CNAME để chuyển thông điệp www thành địa chỉ IP của server. Một wildcard (*) record cũng sẽ được sử dụng.

Cuối cùng, ta đặt DocumentRoot của những thư mục web, đồng thời cấu hình Apache để lưu trữ log và error.

 ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/requests.log combined

Lưu và đóng file khi xong.

Copy Virtual Host và tuỳ chỉnh cho những tên miền khác.

Sau khi cấu hình xong một virtual host, ta có thể tạo một cái nữa bằng cách copy file cấu hình của virtual host đã tạo.

sudo cp /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-available/example2.com.conf

Mở file bằng nano:

sudo nano /etc/httpd/sites-available/example2.com.conf

Thay đổi những giá trị tên miền cho thích hợp: (chú ý những phần chữ đỏ)

 ServerName www.example2.com DocumentRoot /var/www/example2.com/public_html
ServerAlias example2.com ErrorLog /var/www/example2.com/error.log
CustomLog /var/www/example2.com/requests.log combined
 

Bước 5— Kích hoạt các file virtual Host

Sau khi tạo ra các file cấu hình ta cần kích hoạt chúng để Apache dùng chúng phục vụ người dùng. Ở đây, ta sẽ tạo một liên kết tượng trưng( symbolic link) cho thư mục sites-enabled  của mỗi virtual host:

sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
sudo ln -s /etc/httpd/sites-available/example2.com.conf /etc/httpd/sites-enabled/example2.com.conf

Restart Apache để lưu thay đổi.

sudo apachectl restart
 

Bước 6 —  Cài đặt File Local Host (Tùy chọn)

 

Nếu bạn đang sử dụng tên miền ví dụ thay vì tên miền thật sự của mình, bạn vẫn có thể kiểm tra tính năng của virtual host bằng việc thay đổi tạm thời file hosts trên máy tính cá nhân của bạn. Điều này sẽ chặn tất cả yêu cầu đến tên miền bạn đã cấu hình và điều hướng chúng tới VPS của bạn giống như cách hệ thống DNS sẽ thực hiện với những tên miền thật, mặc dù vậy nó chỉ hoạt động được trên máy tính của bạn.

Note: Đảm bảo rằng bạn đang thao tác trên máy tính của bạn chứ không phải VPS server vì bạn sẽ cần truy cập đến quyền admin .

Với hệ điều hành Mac hay Linux, edit file hosts với quyền admin ( quyền root) với lệnh:

sudo nano /etc/hosts

Nếu bạn đang dùng Window, hãy tự cài cho mình một bản Linux vì việc này khá cần thiết. Nếu không hãy truy cập vào đây .

Những thông số cần thêm vào là : public IP address của VPS cùng tên miền bạn muốn dùng để truy cập đến VPS đó.

127.0.0.1 localhost
127.0.1.1 guest-desktopserver_ip_address example.comserver_ip_address example2.com

Tất cả yêu cầu truy cập vào example.com và example2.com sẽ được điều hướng từ máy tính của bạn đến server qua server_ip_address.

 

Bước 7 —  Test kết quả

Truy cập trang sau từ trình duyệt:

http://example.com

Trang hiển thị sẽ như sau:

Success! The example.com virtual host is working!

Nếu truy cập vào tên miền khác, bạn sẽ thấy file bạn tạo cho tên miền ấy được hiển thị.

Khi toàn bộ file được cài đặt đều hoạt động bình thường, bạn đã cài xong nhiều Apache virutal host cho cùng một Centos server

Nếu đang sử dụng máy tính với hosts file, hãy xóa đi những dòng vừa thêm vào sau khi test xong. Việc này sẽ ngăn hosts khỏi những truy cập không cần thiết.

 

Tống kết

Qua bài viết, bạn đã học được cách cài đặt Apache virtual host cho server chạy Centos 7.