Thiết lập Apache Virtual Host trên CentOS 7
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
- Server Centos 7 cùng một non-root user với quyền
sudo
. Xem bài Hướng dẫn thiết lập ban đầu cho server chạy Centos 7. - Apache được cài đặt trên server đó. Nếu chưa cài bạn có thể cài nó với lệnh
yum
như sau:
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:
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.