Thứ năm, 21/04/2016 | 00:00 GMT+7

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

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ẻ có thể được tùy chỉnh và cấu hì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à virtual host .

Các chỉ định này cho phép administrator sử dụng một server để lưu trữ nhiều domain hoặc trang web ngoài một giao diện hoặc IP duy nhất bằng cách sử dụng cơ chế phù hợp. Điều này có liên quan đến bất kỳ ai muốn lưu trữ nhiều hơn một trang web trên một VPS duy nhất.

Mỗi domain được cấu hình sẽ hướng khách truy cập đến một folder cụ thể chứa thông tin của trang web đó, không bao giờ cho biết cùng một server cũng chịu trách nhiệm cho các trang web khác. 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, ta sẽ hướng dẫn bạn cách cài đặt server ảo Apache trên VPS Ubuntu 16.04. Trong quá trình này, bạn sẽ học cách cung cấp các nội dung khác nhau cho những khách truy cập khác nhau tùy thuộc vào domain họ đang yêu cầu.

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn nên tạo một user không phải root như được mô tả trong các bước 1-4 tại đây.

Bạn cũng cần phải cài đặt Apache để thực hiện các bước này. Nếu bạn chưa làm như vậy, bạn có thể cài đặt Apache trên server của bạn thông qua apt-get :

  • sudo apt-get update
  • sudo apt-get install apache2

Sau khi các bước này hoàn tất, ta có thể bắt đầu.

Theo mục đích của hướng dẫn này, cấu hình của ta sẽ tạo một server ảo cho example.com và một server khác cho test.com . Những điều này sẽ được tham chiếu trong suốt hướng dẫn, nhưng bạn nên thay thế các domain hoặc giá trị của riêng mình trong khi làm theo.

Để tìm hiểu cách cài đặt domain của bạn với DigitalOcean , hãy nhấp vào liên kết này. Nếu bạn không có sẵn domain để chơi, bạn có thể sử dụng các giá trị giả.

Ta sẽ hướng dẫn cách chỉnh sửa file server local của bạn sau này để kiểm tra cấu hình nếu bạn đang sử dụng giá trị giả. Đ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 tại nhà, mặc dù nội dung của bạn sẽ không khả dụng thông qua domain cho những khách truy cập khác.

Bước một - 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.

document root của ta (thư mục 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 ở đây cho cả hai server ảo mà ta định tạo.

Trong mỗi folder này , ta sẽ tạo một folder public_html chứa các file thực của ta . Điều này mang lại cho ta một số tính linh hoạt trong lưu trữ của ta .

Ví dụ, đối với các trang web của ta , ta sẽ tạo các folder của bạn như sau:

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

Các phần màu đỏ thể hiện domain mà ta muốn cung cấp từ VPS của bạn .

Bước hai - Cấp quyền

Bây giờ ta có cấu trúc folder cho các file của bạn , nhưng 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 có thể thay đổi quyền sở hữu bằng cách thực hiện điều này:

  • 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ẽ lấy giá trị của user mà 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:

  • sudo chmod -R 755 /var/www

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.

Bước 3 - Tạo các trang demo cho từng server ảo

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ụ.

Ta chỉ để trình diễn, vì vậy các trang của ta sẽ rất đơn giản. Ta sẽ tạo một trang index.html cho mỗi trang web.

Hãy bắt đầu với example.com . Ta có thể mở index.html trong editor của bạn bằng lệnh :

  • 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 trang web mà nó được kết nối. Tệp của tôi trông như thế này:

/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.

Ta có thể sao chép file này để sử dụng làm cơ sở cho trang web thứ hai của bạn bằng lệnh :

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

Sau đó, ta có thể mở file và sửa đổi các phần thông tin liên quan:

  • nano /var/www/test.com/public_html/index.html
/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.

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

Tệp server ảo là các file 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 vớ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à ta có thể sử dụng làm điểm khởi động. Ta sẽ sao chép nó để tạo một file server ảo cho từng domain của ta .

Ta sẽ bắt đầu với một domain , cấu hình nó, sao chép nó cho domain thứ hai và sau đó thực hiện một vài điều chỉnh cần thiết. Cấu hình Ubuntu mặc định yêu cầu mỗi file server ảo phải kết thúc bằng .conf .

Tạo file server ảo đầu tiên

Bắt đầu bằng cách sao chép file cho domain đầu tiên:

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

Mở file mới trong editor với quyền root:

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

Tệp sẽ trông giống như thế này (Tôi đã xóa các comment ở đây để làm cho file dễ tiếp cận hơn):

/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> 

Như bạn thấy , không có nhiều thứ ở đây. Ta sẽ tùy chỉnh các mục ở đây cho domain đầu tiên của ta và thêm một số chỉ thị bổ sung. Phần 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.

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

ServerAdmin admin@example.com 

Sau đó, ta cần thêm hai chỉ thị. Đầu tiên, được gọi là ServerName , cài đặt domain cơ sở phù hợp với định nghĩa server ảo này. Đây rất có thể sẽ là domain của bạn. 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 cho các server phù hợp mà bạn đã xác định, như www :

ServerName example.com ServerAlias www.example.com 

Điều duy nhất ta cần thay đổi đối với file server ảo cơ bản là vị trí của root tài liệu cho domain này. Ta đã tạo folder ta cần, vì vậy ta chỉ cần thay đổi chỉ thị DocumentRoot để phản ánh folder ta đã tạo:

DocumentRoot /var/www/example.com/public_html 

Tổng cộng, file virtualhost của ta sẽ trông như thế này:

/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 .

Sao chép server ảo đầu tiên và tùy chỉnh cho domain thứ hai

Bây giờ ta đã cài đặt file server ảo đầu tiên, ta có thể tạo file thứ hai bằng cách sao chép file đó và điều chỉnh nó nếu cần.

Bắt đầu bằng cách sao chép nó:

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

Mở file mới với quyền root trong editor :

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

Đến đây bạn cần sửa đổi tất cả các phần thông tin để tham chiếu đến domain thứ hai của bạn . Khi bạn hoàn thành, nó có thể trông 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 file khi bạn hoàn tất.

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

Bây giờ ta đã tạo các file server ảo của bạn , ta phải kích hoạt chúng. Apache bao gồm một số công cụ cho phép ta làm điều này.

Ta có thể sử dụng công cụ a2ensite để kích hoạt từng trang web của ta như sau:

  • sudo a2ensite example.com.conf
  • sudo a2ensite test.com.conf

Tiếp theo, vô hiệu hóa trang web mặc định được xác định trong 000-default.conf :

  • sudo a2dissite 000-default.conf

Khi hoàn tất, bạn cần khởi động lại Apache để những thay đổi này có hiệu lực:

  • sudo systemctl restart apache2

Trong tài liệu khác, bạn cũng có thể thấy một ví dụ sử dụng lệnh service :

  • sudo service apache2 restart

Lệnh này sẽ vẫn hoạt động, nhưng nó có thể không cung cấp kết quả mà bạn đã quen nhìn thấy trên các hệ thống khác, vì bây giờ nó là một shell bọc xung quanh systemctl của systemd.

Bước sáu - 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à đơn giản là hữu ích cho mục đích thử nghiệm.

Đảm bảo rằng bạn đang hoạt động trên máy tính local của bạn cho các bước này chứ không phải server VPS của bạn. Bạn cần biết password quản trị của máy tính hoặc nói cách khá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 máy Windows, bạn có thể tìm thấy hướng dẫn về cách thay đổi file server của bạn tại đây.

Các chi tiết bạn cần thêm là địa chỉ IP công cộng của server VPS của bạn, sau đó là domain bạn muốn sử dụng để truy cập VPS đó.

Đối với các domain mà tôi đã sử dụng trong hướng dẫn này, giả sử rằng địa chỉ IP VPS của tôi là 111.111.111.111 , tôi có thể thêm các dòng sau vào cuối file server của bạn :

/ etc / hosts
127.0.0.1   localhost 127.0.1.1   guest-desktop 111.111.111.111 example.com 111.111.111.111 test.com 

Điều này sẽ hướng bất kỳ yêu cầu nào cho example.comtest.com trên máy tính của ta và gửi chúng đến server của ta tại 111.111.111.111 . Đây là những gì ta muốn nếu ta thực sự không phải là chủ sở hữu của các domain này để kiểm tra các server ảo của ta .

Lưu và đóng file .

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

Đến đây bạn đã cấu hình các 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 :

http://example.com 

Bạn sẽ thấy một trang trông như thế này:

Ví dụ  server  lưu trữ ảo Apache

Tương tự như vậy, nếu bạn có thể truy cập trang thứ hai của bạn :

http://test.com 

Bạn sẽ thấy file bạn đã tạo cho trang web thứ hai của bạn :

Kiểm tra  server  ảo Apache

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 .

Nếu bạn đã điều chỉnh file server của máy tính gia đình của bạn , 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.

Nếu bạn cần truy cập lâu dài, hãy cân nhắc mua domain cho mỗi trang web bạn cần và cài đặt nó để trỏ đến server VPS của bạn .

Kết luận

Nếu bạn đã làm theo, bây giờ bạn sẽ 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 ta đã nêu ở trên để tạo thêm các server ảo.

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ý.


Tags:

Các tin liên quan

Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 16.04
2016-04-21
Cách tạo chứng chỉ SSL tự ký cho Apache trong Ubuntu 16.04
2016-04-21
Cách thiết lập Let's Encrypt chứng chỉ cho nhiều server ảo Apache trên Ubuntu 14.04
2016-01-19
Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 14.04
2015-12-18
Cách thiết lập server lưu lượng truy cập Apache làm Reverse-Proxy trên Ubuntu 14.04
2015-10-03
Cách thiết lập một cụm thụ động chủ động Apache bằng máy tạo nhịp tim trên CentOS 7
2015-09-08
Cách bảo vệ server Apache với Fail2Ban trên Ubuntu 14.04
2015-08-14
Cách cài đặt Apache Kafka trên Ubuntu 14.04
2015-08-12
Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 14.04
2015-08-10
Cách bảo vệ chống lại DoS và DDoS với mod_evasive cho Apache trên CentOS 7
2015-07-30