Hướng dẫn cài Apache virtual host trên CentOS 7

2 năm trước

 

Giới thiệu

The Apache web server là một trong những ứng dụng phổ biến nhất chuyên về nội dung web trên Internet . Nó phục vụ tới hơn một nửa các Website đang hoạt động trên Internet để ta thấy được nó hoạt động rất mạnh và linh hoạt.

Apache chia các chức năng và thành phần của nó thành nhiều đơn vị riêng lẻ để nó có thể dễ dàng tùy chỉnh cũng như định cấu hình một cách độc lập, không liên quan tới nhau. Đơn vị cơ bản mô tả một website hoặc tên miền được gọi là một virtual host. Virtual hosts cho phép máy chủ có thể quản lý nhiều tên miền cũng như giao diện đa năng bằng các hệ thống tương thích để bất kỳ ai cũng có thể quản lý nhiều site trên một Cloud Server tại ViCloud.

Mỗi miền định cấu hình sẽ điều hướng người truy cập tới một danh mục mà chưa thông tin của site đó và một máy chủ có thể quản lý nhiều site khác nhau mà không bị giới hạn phần mềm miễn là máy chủ có thể xử lý được luồng dữ liệu trên các site đó.

Trong phần này chúng tôi sẽ hướng dẫn cài đặt Apache virtual host trên CentOS 7 để bạn biết cách cung cấp nội dung tới nhiều người truy cập tùy vào tên miền mà họ yêu cầu.

 

Yêu cầu căn bản

Một máy chủ Cloud Server CentOS 7 đã mua tại ViCloud;

Tiến hành đăng nhập với tư cách người dùng giả định sudo.

Cần cài Apache để định cấu hình virtual host cho nó. Nếu chưa cài thì sử dụng yum để cài thông qua kho lưu trữ phần mềm mặc định của CentOS 7:

sudo yum -y install httpd

Tiếp đến là cài Apache như là một chương trình mặc định của CentOS để nó tự động khởi động sau khi reboot:

sudo systemctl enable httpd.service

Sau đó đăng nhập với tư cách người dùng giả định thông qua SSl và tiếp tục các bước tiếp theo.

Note: Trong phần này ta sẽ tạo các virtual host cho  example.com  và example2.com. Tuy nhiên đó chỉ là các ví dụ tham khảo thôi nên bạn có thể tự động thay chúng bằng tên miền bạn muốn trong quá trình cài đặt.

Nếu bạn không có tên miền thực thì chúng tôi sẽ hướng dẫn bạn kiểm tra cấu hình virtual host với giá trị dummy ở  phần cuối.

 

Bước 1 - Tạo cấu trúc danh mục

 Đầu tiên cần tạo cấu trúc danh mục để chứa dữ liệu phục vụ người truy cập.

 Một document root sẽ được cài trong danh mục /var/www . Và chúng ta sẽ tạo các virtual host ở đây.

Trong mỗi danh mục đó ta sẽ tạo một danh mục public_html chứa các file thực để tạo sự linh hoạt trong quá trình quản lý.

Ta có thể tạo các file đó sử dụng lệnh mkdir với cờ -p fđể tạo thêm một folder lồng nhau trong đó:

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

Lưu ý phần chữ đỏ là tên miền bạn muốn đặt.

 

Bước 2 - Lấy chứng nhận

Giờ thì bạn có các danh mục file được sở hữu bởi người dùng gốc root Nếu muốn người dùng bình thường cũng có thể chỉnh sửa danh mục đó thì bạn cần thay đổi quyền sở hữu sử 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 sẽ sử dụng tên người dùng hiện tại mà bạn đăng nhập . Chính vì thế, lúc này một người dùng bình thường cũng sở hữu danh mục con public_html để lưu nội dung.

Ta nên chỉnh sửa giấy phép một chút để cho phép ta có thể đọc các dữ liệu trên danh mục Web thường và các file trong đó để phục vụ một cách chính xác.

sudo chmod -R 755 /var/www

Web server của bạn giờ đã có giâý phép để phục vụ nội dung và người dùng lúc này có thể tạo nội dung trong các folder phù hợp.

 

Bước 3 - Tạo trang Demo cho mỗi Virtual Host

Vì đây chỉ là bản Demo và kiểm nghiệm nên trang mà ta tạo sẽ rất đơn giản. Chúng ta chỉ việc tạo một trang index.html trên mỗi site để nhận diện miền đó.

Bắt đầu với example.com.  Ta mở file index.html bằng cách nhập:

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

Trong file này ta tạo một đoạn code HTLM đơn giản để trang đó kết nối với site mà ta muốn:

 Success! The example.com virtual host is working!

 

Lưu và đóng file khi hoàn thành.

Ta có thể copy file này để sử dụng làm template cho  index.html  của file thứ hai::

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

Giờ thì mở và chỉnh sửa những thông tin phù hợp:

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

Success! The example2.com virtual host is working!

Lưu và đóng, giờ thì bạn đã có trang cần thiết để kiểm nghiệm cấu hình virtual host.

 

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

File virtual host là công cụ định cấu hình cho nhiều site khác nhau và điều khiển Apache để phản hồi lại các miền truy cập.

Đầu tiên ta cần cài danh mục lưu trữ virtual host cũng như danh mục thông báo cho Apache rằng virtual host đã sẵn sàng phục vụ truy cập. Danh mục  sites-available sẽ chứa các file virtual host, trong khi danh mục sites-enabled sẽ chứ các link tới virtual host mà chúng ta muốn đưa ra. Ta có thể tạo cả hai danh mục này bằng cách:

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

Note: Bố cục danh mục này được tạo ta bởi Debian và chúng ta thêm vào để tạo tính linh hoạt tiện cho việc quản lý các virtual host.

Tiếp theo là lệnh cho Apache tìm virtual host trong danh mục sites-enabled. Để làm được thì ta cần điều chỉnh cấu hình Apache và thêm đôi ba dòng lệnh để gọi mục đó ra cũng như thêm file vào:

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

 Và thêm dòng này vào cuối file:

IncludeOptional sites-enabled/*.conf

Lưu và đóng file sau khi hoàn thành. Giờ thì ta sẽ tạo file virtual host mới.

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

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

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

Note: Tất cả các file virtual host đều phải kết thúc bằng .conf.

Tạo một cặp tag thiết kế nội dung ( virtual host được mặc định hoạt động trên cổng số 80):

Sau đó tạo tên máy chủ www.example.com.  và một máy chủ ảo trỏ tới example.com, vậy nên khi truy cập  www.example.com và example.com đều cho ra cùng nội dung:

 ServerName www.example.com ServerAlias example.com

Note: Để bản  www  hoạt động chính xác thì cấu hình DNS của miền đó cần một record hoặc một CNAME để trỏ www tới IP của máy chủ. Ký tự (*) lúc này sẽ hoạt động.

Cuối cùng kết thúc bằng việc trỏ tới danh mục root tài liệu web của chúng ta mà cho phép truy cập công khai, ta cũng sẽ lệnh cho Apache vị trí lưu lỗi và yêu cầu đăng nhập vào site định sẵn:

 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 sau khi hoàn thành.

Copy Virtual Host đầu tiên và tùy chỉnh cho miền được thêm vào

Giờ thì ta sẽ tạo file virtual host thứ hai bằng cách copy file đầu tiên vào và chỉnh sủa những thông tin cần thiết.

Copy với lệnh cp:

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

Mở file với đặc quyền root trong công cụ chỉnh sửa:

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

Sau khi chỉnh sửa những thông tin cần thiết thì kết quả sẽ trông như thế này:

 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

Sau khi thay đổi xong thì lưu lại và đóng file.

 

Bước 5 - Hữu hiệu hóa cho các file Virtual Host mới

Giờ thì ta cần hữu hiệu hóa chúng để Apache phục vụ chúng cho người truy cập. Chúng ta có thể tạo một link tượng trưng cho mỗi các virtual host đó trong mục sites-enabled:

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

Sau khi xong thì khởi tạo lại Apache để lưu thay đổi:

sudo apachectl restart
 

Bước 6 - Cài đặt file host cục bộ( không bắt buộc)

Nếu bạn vẫn đang sử dụng tên miền ví dụ thay vì tên miền thực để kiểm tra thì bạn vẫn có thể kiểm tra chức năng của chúng bằng việc thay đổi tạm thời file hosts trên máy tính cục bộ.  Việc này sẽ ngăn chặn khả năng truy cập tới miền yêu cầu mà bạn đã định cấu hình và trỏ chúng tới máy chủ VPS vì hệ thống DNS sẽ hoạt động khi bạn có tên miền đã được đăng ký.

Note: Bạn phải thao tác trên máy tính cục bộ chứ không phải máy chủ VPS và tuy cập tới nhãn quyền quản trị.

Nếu dùng hệ điều hành Mac hay Linux thì chỉnh sửa file  hosts với đặc quyền quản trị :

sudo nano /etc/hosts

Bạn cần thêm địa chỉ IP công khai của VPS ứng với tên miền mà bạn sử dụng để truy cập VPS đó.

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

Việc này giúp nó xác định example.com và example2.com rồi gửi chúng tới máy chủ ở địa chỉ server_ip_address.

 

Bước 7 - Kiểm tra

Bạn có thể kiểm tra cài đặt bằng cách truy cập miền mà bạn đã định cấu hình trong trình duyệt:

http://example.com

Bạn sẽ thấy dòng thông báo thế này hiện ra:

Success! The example.com virtual host is working!

Tương tự như thế với các miền khác .

Nếu tất cả các miền bạn truy cập đều hoạt động đúng thì xin chúc mừng, bạn đã cài đặt thành công Apache virtual host trên CentOS 7.

Nếu bạn đã sửa file  hosts trên máy tính thì bạn nên xóa những dòng mà bạn  vừa thêm vào để tránh việc file host chứa qúa nhiều thông tin không cần thiết.

 

Kết luận

Lúc này bạn đã có một máy chủ CentOS 7 xử lý nhiều site cùng lúc với nhiều miền khác nhau. Bạn có thể mở rộng thêm bằng cách lặp lại các bước như trên nếu muốn tạo thêm nhiều virtual host mới. Vì không giới hạn phần mềm cho tên miền thế nên bạn không cần phải lo lắng về khả năng xử lý của máy chủ.