Thiết lập Apache Virtual Host trên CentOS 7

6 năm trước

Thiết lập Apache Virtual Host trên CentOS 7

 

Apache web server là nguồn lưu trữ các website và ứng dụng web phổ biến nhất trên internet, chiếm tới phân nửa lượng tài nguyên lưu trữ trên web, nổi bật bởi các tính năng mạnh mẽ cùng khả năng tùy biến linh hoạt.

Apache chia nhỏ các chức năng và thành phần của nó thành các đơn vị nhỏ độc lập với nhau. Đơn vị cơ bản cho các site và domain được gọi là virtual host. Virtual host cho phép một server host nhiều domain cùng lúc bằng một hệ thống ghép cặp tương ứng, điều này rất thuận tiện nếu bạn muốn host một

Mỗi domain sẽ được cấu hình để điều hướng người dùng đến một thư mục cụ thể lưu trữ thông tin của site hay domain đó, mà không quan tâm đến các site khác mà server đó phục vụ. Mô hình này cho phép hệ thống mở rộng mà không gặp giới hạn về phần mềm, miễn là server vẫn có khả năng đảm bảo việc xử lí lưu lượng truy cập với số lượng virtual host đó.

Bài viết này sẽ hướng dẫn bạn cách thiết lập Apache Virtual Host trên Server chạy Centos 7.

Yêu cầu

 

 

sudo yum -y install httpd

Tiếp theo cho phép Apache tự khởi động khi server boot:

sudo systemctl enable httpd.service

Sau đó login vào user ở trên.

Note: Dưới đây ta sẽ cấu hình virtual host cho 2 tên miền làm ví dụ example.com và example2.com. Tuy nhiên, hãy thay thế tên miền này cùng các giá trị chữ đỏ bằng tên miền và các giá trị đi kèm của bạn nếu có thể.

Nếu không có một tên miền thật, hãy sử dụng những giá trị "bù nhìn" (dummy value ) để kiểm tra kết quả (được trình bày ở phần cuối bài viết) .

 

Bước 1 — Tạo Cấu trúc cho các Thư mục

 

Thư mục gốc (document root) sẽ được đặt riêng là các thư mục con trong /var/www . Ta sẽ tạo cho mỗi server block một thư mục con riêng.

Trong mỗi thư mục con đó, ta sẽ tạo một thư mục html để lưu trữ dữ liệu web giúp thuận tiện cho việc lưu trữ và quản lí.

Dùng lệnh mkdir để tạo các thư mục con (với cờ -p cho phép tạo các thư mục con lồng nhau):

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

 

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

 

Các thư mục vừa tạo chỉ có thể sử dụng bởi root user. Ta cần cấp quyền truy cập và chỉnh sửa các file bên trong nó cho user bình thường bằ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

Với $USER là user bạn đang sử dụng khi chạy lệnh.

Ta cũng cần thay đổi quyền truy cập cho các thư mục này để đảm bảo quyền đọc của user trên chúng:

sudo chmod -R 755 /var/www

Giờ thì server đã được cấp đủ quyền để phục vụ các dịch vụ web.

Bước 3 — Tạo các trang Demo cho các Virtual Host

 

Sau khi tạo các thư mục lưu trữ và cấp đủ các quyền cho các Virtual Host, ta sẽ kiểm tra lại xem nó đã hoạt động đúng chưa bằng cách tạo ra một trang web. Để cho đơn giản, ta sẽ tạo một file html là index.html cho mỗi tên miền cụ thể.

Bắt đầu với example.com. Tạo và mở file index.html trong nano bằng lệnh:

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

Copy đoạn code sau:

 Success! The example.com virtual host is working!

Lưu và đóng file.

Ta cũng có thể copy file này sang thư mục của tên miền thứ hai bằng lệnh:

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

Mở file index.html ( trong thư mục của tên miền thứ hai) :

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

Sau đó sửa lại nó:

 Success! The example2.com virtual host is working!

Lưu và đóng file.

 

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

 

Các file virtual host xác địch cấu hình cho các trang web đi cùng với nó và quyết định phản hồi của Apache server đối với các yêu cầu với những tên miền khác nhau.

Đầu tiên ta sẽ tạo các thư mục để lưu file. Thư mục sites-available lưu trữ tất cả các file server block, còn thư mục sites-enabled sẽ lưu đường dẫn đến server block cần kích hoạt. Tạo hai thư mục đó với lệnh:

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

Note: Việc phân chia thư mục này được giới thiệu bởi các người phát triển của Debian, nhưng ta thêm nó vào đây để giúp việc quản lí các virtual host dễ dàng hơn

Tiếp theo ta sẽ chỉ cho Apache tìm kiếm các file server block trong thư mục sites-enabled.

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

Thêm vào dòng sau:

IncludeOptional sites-enabled/*.conf

Lưu và đóng file.

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

Mở một file mới bằng trình soạn thảo với quyền root.

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

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

Đầu tiên, tạo một cặp tag biểu thị virtual host đang nghe trên cổng 80 ( Cổng mặc định cho các thông điệp HTTP):

Tiếp đến là domain name, www.example.com. Ta sẽ tạo ra một bí danh khác cho tên miền là example.com, để các yêu cầu cho www.example.com và example.com được phục vụ như nhau.

 ServerName www.example.com ServerAlias example.com

Note:Để phiên bản www của tên miền làm việc chính xác, cấu hình DNS của tên miền đó sẽ cần một A record hoặc CNAME trỏ yêu cầu www đến địa chỉ IP của server.

Cuối cùng thêm vào document root cùng nơi lưu trữ log và các lỗi.

 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

 

Copy Virtual Host and Tùy biến nó cho các domain khác

 

 

Sau khi tạo xong một virtual host, ta có thể tạo thêm các virtual host khác bằng cách copy virtual host đã đưuọc cấu hình và chỉnh sửa cho hợp lí.

Đầu tiên dùng lệnh cp:

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

Mở file cấu hình Virtual Host mới:

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

Edit lại file này như sau:

 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 mới

Sau khi tạo các file server block, ta cần kích hoạt chúng bằng cách tạo đường dẫn cho chúng từ thư mục sites-enabled cho chúng: 

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

Khởi động lại Apache:

sudo apachectl restart
 

Bước 6 — Thiết lập file Local Host (Tùy chọn)

 

Nếu đang dùng các tên miền ví dụ tahy vì tên miền thật, bạn vẫn có thể test các file vừa tạo bằng cách thay đổi tạm thời file hosts trên máy tính. Việc này sẽ điều hướng tất cả các yêu cầu đến tên miền ví dụ đến VPS server. Lưu ý rằng nó chỉ có hiệu lực với truy cập trên máy tính của bạn.

Note: : Các thao tác sau được thực hiện trên máy của bạn, không phải trên VPS server.

Trên Mac hoặc Linux , edit file local hosts bằng quyền admin với lệnh:

sudo nano /etc/hosts

Thêm vào public IP address của VPS, theo sau là tên miền ứng với VPS đó:

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

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

 

Vào trình duyệt gõ:

http://example.com

Nếu thấy trang web sau:

Success! The example.com server block is working!

Thì các bước cấu hình trên đã thành công.

Nếu vừa thay đổi các file hosts ,hãy xóa các dòng vừa thêm vào để đàm bảo máy tính của bạn không bị truy cập trái phép từ bên ngoài.

 

Tổng kết

Bạn đã cấu hình server CentOS 7 của mình để xử lí nhiều site với các tên miền khác nhau với mỗi site đó. Mở rộng chúng bằng cách thêm vào nhiều file server block khác, vì việc thêm các file này không bị giới hạn bởi phần mềm , miễn là server của bạn có khả năng xử lí được lưu lượng truy cập.