Thứ hai, 10/02/2020 | 00:00 GMT+7

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

Web server Apache là một phương pháp phổ biến để phục vụ các trang web trên internet. Tính đến năm 2019, ước tính sẽ phục vụ 29% tất cả các trang web đang hoạt động và nó mang lại sự mạnh mẽ và linh hoạt cho các nhà phát triển. Sử dụng Apache, administrator có thể cài đặt 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 một hệ thống phù hợp.

Mỗi domain hoặc trang web riêng lẻ - được gọi là “ server ảo” - được cấu hình bằng Apache sẽ hướng khách truy cập đến một folder cụ thể chứa thông tin của trang web đó. Điều này được thực hiện mà không 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. Đơn vị cơ bản mô tả một trang web hoặc domain riêng lẻ được gọi là virtual host .

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 server Ubuntu 18.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 .

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 gói apt theo cách:

  • sudo apt update
  • sudo apt install apache2

Nếu bạn muốn hướng dẫn chi tiết hơn cũng như cài đặt firewall , vui lòng tham khảo hướng dẫn của ta Cách cài đặt web server Apache trên Ubuntu 18.04 .

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.

Nếu bạn đang sử dụng DigitalOcean, bạn có thể tìm hiểu cách cài đặt domain theo tài liệu sản phẩm, Cách thêm domain . Đối với các nhà cung cấp khác, hãy tham khảo tài liệu sản phẩm có liên quan của họ Nếu bạn không có domain vào lúc này, bạn có thể sử dụng các giá trị thử nghiệm.

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 các giá trị kiểm tra. Điều này sẽ cho phép bạn xác thực 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 có sẵn 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 ta như sau. Nếu bạn đang sử dụng các domain thực tế hoặc các giá trị thay thế, hãy swap văn bản được đánh dấu cho những domain này.

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

Các phần màu đỏ đại diện cho 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 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 trong đó để các trang có thể được phân phát 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

Bây giờ 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ụ.

Với mục đích demo , 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 , trong trường hợp này, ta sẽ sử dụng nano:

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

Trong file này, hãy tạo một trang HTML cho biết trang web mà nó được kết nối, như sau:

/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 (ở dạng nano, nhấn CTRL + X rồi đến Y rồi ENTER ) 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

Khi các comment bị xóa, file sẽ trông giống như sau:

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

Trong file này, ta sẽ tùy chỉnh các mục 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 khác duy nhất ta cần thay đổi cho file server ảo của 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 

Khi hoàn tất, file server ảo của ta 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> 

Đến đây, hãy lưu 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ó 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 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 sẽ sử dụng công cụ a2ensite để kích hoạt từng trang web của ta . Nếu bạn muốn đọc thêm về tập lệnh này, bạn có thể tham khảo tài liệu a2ensite .

  • 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 và sử dụng systemctl status để xác minh việc khởi động lại thành công.

  • sudo systemctl restart apache2
  • sudo systemctl status apache2

Server của bạn bây giờ sẽ được cài đặt để phục vụ hai trang web.

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 local của bạn và chỉ dành 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 của bạn, theo sau là domain bạn muốn sử dụng để truy cập server đó.

Sử dụng các domain được sử dụng trong hướng dẫn này và thay thế IP server của bạn cho văn bản your_server_IP , file của bạn sẽ trông giống như sau:

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

Lưu và đóng file .

Đ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 . Đâ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 .

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 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ụ về  server  ảo Apache

Bạn cũng có thể truy cập trang thứ hai của bạn và xem file bạn đã tạo cho trang thứ hai của bạn .

http://test.com 

Kiểm tra  server  ảo Apache

Nếu cả hai trang web này hoạt động như mong đợi, 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 còn cần thiết.

Nếu bạn cần truy cập lâu dài, hãy xem xét thêm domain cho mỗi trang web bạn cần và cài đặt nó để trỏ đến server 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 trước

Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 18.04 [Quickstart] 2020-02-04
Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 18.04 2020-02-03
Cách cài đặt Apache Kafka trên Debian 10 2019-12-20
Cách sử dụng Ansible để cài đặt và thiết lập Apache trên Ubuntu 18.04 2019-12-06
Cách bảo mật Apache bằng Let's Encrypt trên FreeBSD 12.0 2019-11-08
Cách cài đặt Apache Tomcat 9 trên Debian 10 2019-10-24
Cách cấu hình báo cáo MTA-STS và TLS cho miền của bạn bằng Apache trên Ubuntu 18.04 2019-09-06
Cách viết lại URL bằng mod_rewrite cho Apache trên Debian 10 2019-08-22
Cách tạo chứng chỉ SSL tự ký cho Apache trong Debian 10 2019-07-22
Cách cài đặt web server Apache trên Debian 10 2019-07-19