Thứ hai, 06/02/2017 | 00:00 GMT+7

Cách thiết lập server ảo Apache trên Debian 8

Web server Apache là cách phổ biến nhất để phục vụ nội dung web trên internet. Nó chiếm hơn một nửa số trang web đang hoạt động trên internet và cực kỳ mạnh mẽ và linh hoạt.

Apache chia chức năng và các thành phần của nó thành các đơn vị riêng lẻ mà bạn có thể tùy chỉnh độc lập. Đơn vị cơ bản mô tả một trang web hoặc domain riêng lẻ được gọi là server ảo .

Sử dụng server ảo, bạn có thể sử dụng một server để lưu trữ nhiều domain hoặc trang web trên một giao diện hoặc IP duy nhất bằng cách sử dụng cơ chế đối sánh. Bạn cấu hình yêu cầu cho một domain để hướng khách truy cập đến một folder cụ thể chứa thông tin của trang web đó. Nói cách khác, bạn có thể lưu trữ nhiều hơn một trang web trên một server . Lược đồ này có thể mở rộng mà không có bất kỳ giới hạn phần mềm nào miễn là server của bạn có thể xử lý tải.

Trong hướng dẫn này, bạn sẽ cài đặt hai server ảo Apache trên server Debian 8, cung cấp nội dung khác nhau cho khách truy cập dựa trên domain họ truy cập.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần :

Trong hướng dẫn này, ta sẽ tạo các server ảo cho example.comtest.com , nhưng bạn có thể thay thế các domain hoặc giá trị của riêng mình trong khi làm theo. Để trỏ domain của bạn đến server của bạn, hãy làm theo hướng dẫn của ta Cách cài đặt tên server với DigitalOcean .

Nếu bạn không có sẵn các domain để chơi, bạn có thể sử dụng example.comtest.com và làm theo Bước 5 của hướng dẫn này để cấu hình file server local của bạn để ánh xạ các domain đó với địa chỉ IP của server của bạn. Điều này sẽ cho phép bạn kiểm tra cấu hình của bạn từ máy tính local của bạn.

Bước 1 - Tạo cấu trúc folder

Bước đầu tiên mà ta sẽ thực hiện là tạo một cấu trúc folder chứa dữ liệu trang web mà ta sẽ phục vụ cho khách truy cập.

Gốc tài liệu của ta , folder cấp cao nhất mà Apache xem xét để tìm nội dung phục vụ, sẽ được đặt thành các folder riêng lẻ trong folder /var/www . Ta sẽ tạo một folder cho từng server ảo mà ta sẽ cấu hình.

Trong mỗi folder này, ta sẽ tạo một folder được gọi là public_html sẽ chứa các trang web mà ta muốn phục vụ. Điều này giúp ta linh hoạt hơn một chút trong cách ta triển khai các ứng dụng web phức tạp hơn trong tương lai; folder public_html sẽ chứa nội dung web mà ta muốn phân phát và folder mẹ có thể chứa các tập lệnh hoặc mã ứng dụng để hỗ trợ nội dung web.

Tạo các folder bằng các lệnh sau:

  • sudo mkdir -p /var/www/example.com/public_html
  • sudo mkdir -p /var/www/test.com/public_html

Vì ta đã tạo các folder bằng sudo , chúng thuộc sở hữu của user root của ta . Nếu ta muốn regular user của bạn có thể sửa đổi các file trong folder web của ta , ta thay đổi quyền sở hữu, như sau:

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

Biến $USER sử dụng giá trị của user bạn hiện đang đăng nhập như khi bạn nhấn ENTER . Bằng cách làm này, regular user của ta hiện sở hữu các folder con public_html nơi ta sẽ lưu trữ nội dung của bạn .

Ta cũng nên sửa đổi các quyền của bạn một chút đảm bảo rằng quyền truy cập đọc được phép vào folder web chung và tất cả các file và folder mà nó chứa để các trang có thể được phân phối chính xác. Thực thi lệnh này để thay đổi quyền trên folder /var/www và các phần tử con của nó:

  • sudo chmod -R 755 /var/www

Nếu bạn chưa quen với việc quản lý quyền trên Linux, hãy xem hướng dẫn này .

Web server của bạn bây giờ sẽ có các quyền cần thiết để cung cấp nội dung và user của bạn có thể tạo nội dung trong các folder cần thiết. Hãy tạo một file HTML cho mỗi trang web.

Ta có cấu trúc folder của ta tại chỗ. Hãy tạo một số nội dung để phục vụ.

Bước 2 - Tạo các trang mặc định cho mỗi server ảo

Hãy tạo một trang index.html đơn giản cho mỗi trang web. Điều này sẽ giúp ta đảm bảo các server ảo của ta được cấu hình đúng cách sau này.

Hãy bắt đầu với trang example.com . Chỉnh sửa index.html mới bằng lệnh sau:

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

Trong file này, hãy tạo một trang HTML đơn giản cho biết rằng khách truy cập đang xem trang chủ của example.com :

/var/www/example.com/public_html/index.html
<html>   <head>     <title>Welcome to Example.com!</title>   </head>   <body>     <h1>Success! The example.com virtual host is working!</h1>   </body> </html> 

Lưu file khi bạn hoàn tất.

Bây giờ sao chép file này vào trang web test.com :

  • cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Sau đó, mở file trong editor :

  • nano /var/www/test.com/public_html/index.html

Thay đổi file để nó tham chiếu test.com instaed của example.com :

/var/www/test.com/public_html/index.html
<html>   <head>     <title>Welcome to Test.com!</title>   </head>   <body> <h1>Success! The test.com virtual host is working!</h1>   </body> </html> 

Lưu file này. Đến đây bạn có các trang cần thiết để kiểm tra cấu hình server ảo. Tiếp theo, hãy cấu hình các server ảo.

Bước 3 - Tạo file server ảo mới

Các file server ảo chỉ cấu hình thực của server ảo của ta và chỉ định cách web server Apache sẽ phản hồi các yêu cầu domain khác nhau.

Apache đi kèm với một file server ảo mặc định có tên 000-default.conf mà bạn có thể sử dụng làm điểm khởi động. Sao chép file này cho domain đầu tiên:

  • sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Lưu ý : Cấu hình Apache mặc định trong Debian 8 yêu cầu mỗi file server ảo phải kết thúc bằng .conf .

Mở file mới trong editor :

  • sudo nano /etc/apache2/sites-available/example.com.conf

Tệp sẽ trông giống như ví dụ sau, với một số comment bổ sung:

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>          ServerAdmin webmaster@localhost         DocumentRoot /var/www/html          ErrorLog ${APACHE_LOG_DIR}/error.log         CustomLog ${APACHE_LOG_DIR}/access.log combined  </VirtualHost> 

Server ảo này trùng với bất kỳ yêu cầu nào được thực hiện trên cổng 80 , cổng HTTP mặc định. Hãy thực hiện một vài thay đổi đối với cấu hình này và thêm một vài chỉ thị mới.

Đầu tiên, hãy thay đổi chỉ thị ServerAdmin thành một email mà administrator trang web có thể nhận email.

/etc/apache2/sites-available/example.com.conf
ServerAdmin admin@example.com 

Tiếp theo, ta cần thêm hai chỉ thị mới. Đầu tiên, được gọi là ServerName , cài đặt domain cơ sở cho định nghĩa server ảo này. Thứ hai, được gọi là ServerAlias , xác định các tên khác phải khớp như thể chúng là tên cơ sở. Điều này hữu ích để đối sánh các server bổ sung mà bạn đã xác định, vì vậy cả example.comwww.example.com đều hoạt động, miễn là cả hai server này đều trỏ đến địa chỉ IP của server này.

Thêm hai chỉ thị này vào file cấu hình của bạn, ngay sau dòng ServerAdmin :

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>          ServerAdmin webmaster@localhost         ServerName example.com         ServerAlias www.example.com         DocumentRoot /var/www/html ... 

Tiếp theo, thay đổi vị trí của root tài liệu cho domain này bằng cách thay đổi chỉ thị DocumentRoot để trỏ đến folder bạn đã tạo cho server này:

DocumentRoot /var/www/example.com/public_html 

Khi bạn đã thực hiện những thay đổi này, file của bạn sẽ trông giống như sau:

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>         ServerAdmin admin@example.com         ServerName example.com         ServerAlias www.example.com         DocumentRoot /var/www/example.com/public_html         ErrorLog ${APACHE_LOG_DIR}/error.log         CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> 

Lưu và đóng file .

Sau đó, tạo file cấu hình thứ hai bằng cách tạo bản sao của file này:

  • sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Mở file mới trong editor :

  • sudo nano /etc/apache2/sites-available/test.com.conf

Sau đó, thay đổi cài đặt có liên quan để tham chiếu domain thứ hai của bạn. Khi bạn hoàn tất, file của bạn sẽ giống như sau:

/etc/apache2/sites-available/test.com.conf
<VirtualHost *:80>     ServerAdmin admin@test.com     ServerName test.com     ServerAlias www.test.com     DocumentRoot /var/www/test.com/public_html     ErrorLog ${APACHE_LOG_DIR}/error.log     CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> 

Lưu và đóng file .

Bây giờ ta đã tạo các file server ảo của bạn , ta có thể kích hoạt chúng.

Bước 4 - Bật file server ảo mới

Bạn đã tạo các folder và file cấu hình server ảo, nhưng Apache sẽ không sử dụng chúng cho đến khi bạn kích hoạt chúng. Bạn có thể sử dụng công cụ a2ensite để kích hoạt từng trang web của bạn .

Kích hoạt trang web đầu tiên:

  • sudo a2ensite example.com.conf

Bạn sẽ thấy kết quả sau nếu không có lỗi cú pháp hoặc lỗi chính tả trong file của bạn:

Output
Enabling site example.com. To activate the new configuration, you need to run: service apache2 reload

Để các thay đổi có hiệu lực, bạn phải reload Apache. Nhưng trước khi bạn làm, hãy kích hoạt trang web khác:

  • sudo a2ensite test.com.conf

Bạn sẽ thấy một thông báo tương tự cho biết trang web đã được kích hoạt:

Output
Enabling site test.com. To activate the new configuration, you need to run: service apache2 reload

Tiếp theo, vô hiệu hóa trang web mặc định được xác định trong 000-default.conf bằng cách sử dụng lệnh a2dissite :

  • sudo a2dissite 000-default.conf

Bây giờ, khởi động lại Apache:

  • sudo systemctl restart apache2

Các trang web hiện đã được cấu hình . Hãy kiểm tra chúng ra. Nếu bạn đang sử dụng các domain thực được cấu hình để trỏ đến địa chỉ IP của server , bạn có thể bỏ qua bước tiếp theo. Nhưng nếu domain của bạn chưa được đề xuất hoặc nếu bạn chỉ đang thử nghiệm, hãy đọc tiếp để tìm hiểu cách kiểm tra cài đặt này bằng máy tính local của bạn.

Bước 5 - Cài đặt file server lưu trữ local (Tùy chọn)

Nếu bạn chưa sử dụng domain thực mà bạn sở hữu để kiểm tra quy trình này và thay vào đó đang sử dụng một số domain mẫu, ít nhất bạn có thể kiểm tra chức năng của quy trình này bằng cách tạm thời sửa đổi file hosts trên máy tính local của bạn.

Điều này sẽ chặn mọi yêu cầu đối với các domain mà bạn đã cấu hình và trỏ chúng đến server VPS của bạn, giống như hệ thống DNS sẽ thực hiện nếu bạn đang sử dụng các domain đã đăng ký. Tuy nhiên, điều này sẽ chỉ hoạt động trên máy tính của bạn và chỉ hữu ích cho mục đích thử nghiệm.

Đảm bảo rằng bạn làm theo các bước sau trên máy tính local chứ không phải server VPS của bạn. Bạn cũng cần biết password quản trị của máy tính local hoặc là thành viên của group quản trị.

Nếu bạn đang sử dụng máy tính Mac hoặc Linux, hãy chỉnh sửa file local của bạn với các quyền quản trị bằng lệnh :

  • sudo nano /etc/hosts

Nếu bạn đang sử dụng Windows, hãy mở Command Prompt với các quyền quản trị và nhập:

  • notepad %windir%\system32\drivers\etc\hosts

Khi bạn đã mở file , hãy thêm một dòng ánh xạ địa chỉ IP công cộng của server của bạn với từng domain , như trong ví dụ sau:

/ etc / hosts
127.0.0.1   localhost ...  111.111.111.111 example.com 111.111.111.111 test.com 

Điều này sẽ chuyển hướng bất kỳ yêu cầu nào cho example.comtest.com trên máy tính của bạn và gửi chúng đến server của bạn tại 111.111.111.111 .

Lưu và đóng file . Đến đây bạn có thể kiểm tra cài đặt của bạn . Khi bạn chắc chắn rằng mọi thứ đang hoạt động, hãy xóa hai dòng khỏi file .

Bước 6 - Kiểm tra kết quả của bạn

Đến đây bạn đã cấu hình server ảo của bạn , bạn có thể kiểm tra cài đặt của bạn một cách dễ dàng bằng cách truy cập các domain bạn đã cấu hình trong trình duyệt web của bạn . Truy cập trang web đầu tiên tại http://example.com và bạn sẽ thấy một trang giống như sau:

Kết quả của Apache example.com

Tương tự như vậy, nếu bạn có thể truy cập server thứ hai của bạn tại http://test.com , bạn sẽ thấy file bạn đã tạo cho trang web thứ hai của bạn :

Kết quả Apache test.com

Nếu cả hai trang web này hoạt động tốt, bạn đã cấu hình thành công hai server ảo trên cùng một server .

Lưu ý : Nếu bạn đã điều chỉnh file server của máy tính gia đình của bạn như trong Bước 5, bạn có thể cần xóa các dòng bạn đã thêm bây giờ mà bạn đã xác minh cấu hình của bạn hoạt động. Điều này sẽ ngăn không cho file server của bạn bị lấp đầy bởi các mục không thực sự cần thiết.

Kết luận

Đến đây bạn có một server duy nhất xử lý hai domain riêng biệt. Bạn có thể mở rộng quy trình này theo các bước sau để thêm các server ảo bổ sung.

Không có giới hạn phần mềm về số lượng domain mà Apache có thể xử lý, vì vậy hãy thoải mái tạo ra càng nhiều càng tốt để server của bạn có thể xử lý.

Để sử dụng Apache để cung cấp nội dung an toàn, hãy làm theo hướng dẫn Cách bảo mật Apache bằng Let's Encrypt trên Debian 8 . Để sử dụng Apache trước ứng dụng web của bạn, hãy làm theo Cách sử dụng Apache làm Reverse Proxy với mod_proxy trên Debian 8 .


Tags:

Các tin liên quan

Cách sử dụng Apache làm reverse-proxy với mod_proxy trên CentOS 7
2017-02-02
Cách sử dụng Apache làm Reverse Proxy với mod_proxy trên Ubuntu 16.04
2017-02-01
Cách sử dụng Apache làm reverse-proxy với mod_proxy trên Debian 8
2017-02-01
Cách viết lại URL bằng mod_rewrite cho Apache trên Debian 8
2017-01-27
Cách viết lại URL bằng mod_rewrite cho Apache trên Ubuntu 16.04
2017-01-25
Cách mã hóa kết nối Tomcat 8 với Apache hoặc Nginx trên CentOS 7
2017-01-24
Cách tạo chứng chỉ SSL trên Apache cho CentOS 7
2017-01-04
Cách bảo mật Apache bằng Let's Encrypt trên Debian 8
2016-12-20
Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên Debian 8
2016-12-19
Cách tạo chuyển hướng tạm thời và vĩnh viễn với Apache
2016-12-15