Cài đặt Apache Virtual Hosts trên CentOS 7
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
- Một non-root user với quyền sudo để kết nối với CentOS 7 server. Tìm hiểu cách tạo một non-root user với quyền sudo trên Centos7 để biết thêm chi tiết.
- Apache để cài đặt virtual host. Nếu chưa cài Apache, bạn có thể dùng
yum
để cài nó với lệnh:
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ục
public_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:
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.