Thứ tư, 11/07/2018 | 00:00 GMT+7

Cách di chuyển web root Apache đến vị trí mới trên Ubuntu 18.04

Trên Ubuntu, web server Apache lưu trữ tài liệu của nó trong /var/www/html , thường nằm trên hệ thống file root với phần còn lại của hệ điều hành. Tuy nhiên, đôi khi, rất hữu ích khi di chuyển root tài liệu sang một vị trí khác, chẳng hạn như hệ thống file được mount riêng biệt. Ví dụ: nếu bạn phục vụ nhiều trang web từ cùng một version Apache, việc đặt root tài liệu của mỗi trang web trên dung lượng riêng của nó cho phép bạn mở rộng quy mô để đáp ứng nhu cầu của một trang web hoặc khách hàng cụ thể.

Trong hướng dẫn này, bạn sẽ di chuyển root tài liệu Apache đến vị trí mới.

Yêu cầu

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

  • Server Ubuntu 18.04 và user không phải root có quyền sudo. Bạn có thể tìm hiểu thêm về cách cài đặt user có các quyền này trong hướng dẫn Cài đặt server ban đầu với Ubuntu 18.04 của ta .
  • Đã cài đặt Apache, sau Cách cài đặt Server Web Apache trên Ubuntu 18.04 .
  • SSL được cấu hình cho domain của bạn sau Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 18.04 . Ta sẽ sử dụng domain example.com trong hướng dẫn này, nhưng bạn nên thay thế domain này bằng domain của riêng mình.
  • Một vị trí mới cho root tài liệu của bạn. Trong hướng dẫn này, ta sẽ sử dụng folder /mnt/volume-nyc3-01 cho vị trí mới của ta . Nếu bạn đang sử dụng Lưu trữ khối trên DigitalOcean, hướng dẫn này sẽ chỉ cho bạn cách tạo và đính kèm dung lượng của bạn. Tuy nhiên, vị trí root tài liệu mới của bạn có thể cấu hình dựa trên nhu cầu của bạn. Nếu bạn đang di chuyển root tài liệu của bạn sang một thiết bị lưu trữ khác, bạn cần chọn một vị trí bên dưới điểm mount của thiết bị.

Bước 1 - Sao chép file sang vị trí mới

Trên bản cài đặt Apache mới, tài liệu root được đặt tại /var/www/html . Tuy nhiên, theo các hướng dẫn yêu cầu , bạn đã tạo một root tài liệu mới, /var/www/ example.com /html . Bạn cũng có thể có nguồn root tài liệu bổ sung trong các chỉ thị VirtualHost tương ứng. Trong bước này, ta sẽ cài đặt vị trí của root tài liệu của ta và sao chép các file liên quan đến vị trí mới của chúng.

Bạn có thể tìm kiếm vị trí root tài liệu của bạn bằng grep . Hãy tìm kiếm trong folder /etc/apache2/sites-enabled để giới hạn sự tập trung của ta vào các trang đang hoạt động. Cờ -R đảm bảo grep sẽ in cả DocumentRoot và tên file đầy đủ trong kết quả của nó:

  • grep -R "DocumentRoot" /etc/apache2/sites-enabled

Nếu bạn đã làm theo các hướng dẫn tiên quyết trên một server mới, kết quả sẽ như sau:

Output
/etc/apache2/sites-enabled/example.com-le-ssl.conf: DocumentRoot /var/www/example.com/html /etc/apache2/sites-enabled/example.com.conf: DocumentRoot /var/www/example.com/html

Nếu bạn đã có các cài đặt từ trước, kết quả của bạn có thể khác với những gì được hiển thị ở đây. Trong cả hai trường hợp, bạn có thể sử dụng phản hồi từ grep đảm bảo rằng bạn đang di chuyển các file mong muốn và cập nhật các file cấu hình thích hợp.

Đến đây bạn đã xác nhận vị trí root tài liệu của bạn , bạn có thể sao chép các file vào vị trí mới của chúng bằng rsync . Sử dụng cờ -a bảo toàn các quyền và các thuộc tính folder khác, trong khi -v cung cấp kết quả dài dòng để bạn có thể theo dõi tiến trình đồng bộ hóa:

Lưu ý: Hãy chắc chắn rằng không có dấu gạch chéo trên folder , có thể được thêm vào nếu bạn sử dụng tính năng hoàn thành tab. Khi có dấu gạch chéo, rsync sẽ kết xuất nội dung của folder vào điểm mount thay vì chuyển nó vào folder html có chứa.

  • sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01

Bạn sẽ thấy kết quả như sau:

Output
sending incremental file list html/ html/index.html sent 318 bytes received 39 bytes 714.00 bytes/sec total size is 176 speedup is 0.49

Với các file của ta tại chỗ, hãy chuyển sang sửa đổi cấu hình Apache của ta để áp dụng thay đổi này.

Bước 2 - Cập nhật file cấu hình

Apache sử dụng cả file cấu hình global và trang web cụ thể. Để biết thông tin cơ bản về phân cấp file cấu hình, hãy xem Cách cấu hình Server Web Apache trên Ubuntu hoặc Debian VPS . Ta sẽ sửa đổi các file server ảo cho dự án example.com của ta : /etc/apache2/sites-enabled/ example.com .conf/etc/apache2/sites-enabled/ example.com -le-ssl.conf , là được tạo khi ta cấu hình certificate SSL cho example.com .

Lưu ý: Lưu ý trong trường hợp của bạn, example.com sẽ là your_domain_name và bạn sẽ sửa đổi các file server ảo được xuất ra khi bạn chạy grep ở Bước 1.

Bắt đầu bằng cách mở /etc/apache2/sites-enabled/ example.com .conf :

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

Tìm dòng bắt đầu bằng DocumentRoot và cập nhật dòng đó với vị trí root mới. Trong trường hợp của ta , đây sẽ là /mnt/volume-nyc3-01/html :

/etc/apache2/sites-enabled/example.com.conf
<VirtualHost *:80>     ServerAdmin sammy@example.comn     ServerName example.com     ServerAlias www.example.com     DocumentRoot /mnt/volume-nyc3-01/html     ErrorLog ${APACHE_LOG_DIR}/error.log     CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =www.example.com [OR] RewriteCond %{SERVER_NAME} =example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> 

Cũng hãy thêm các chỉ thị đảm bảo rằng server sẽ tuân theo các softlink trong folder :

/etc/apache2/sites-enabled/example.com.conf
. . . <Directory /mnt/volume-nyc3-01/html>     Options FollowSymLinks     AllowOverride None     Require all granted </Directory> 

Giữ một mắt ra cho DocumentRoot rằng grep outputted ở Bước 1, kể cả trong các alias hoặc viết lại. Bạn cũng cần cập nhật những thứ này để phản ánh vị trí root của tài liệu mới.

Sau khi lưu những thay đổi này, ta hãy chuyển sự chú ý của ta đến cấu hình SSL. Mở /etc/apache2/sites-enabled/ example.com -le-ssl.conf :

  • sudo nano /etc/apache2/sites-enabled/example.com-le-ssl.conf

Sửa đổi DocumentRoot để phản ánh vị trí mới, /mnt/volume-nyc3-01/html :

/etc/apache2/sites-enabled/example.com-le-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443>     ServerAdmin sammy@example.com     ServerName example.com     ServerAlias www.example.com     DocumentRoot /mnt/volume-nyc3-01/html     ErrorLog ${APACHE_LOG_DIR}/error.log     CustomLog ${APACHE_LOG_DIR}/access.log combined . . . </VirtualHost> </IfModule> 

Đến đây bạn đã áp dụng các thay đổi cấu hình cần thiết để phản ánh vị trí mới của root tài liệu của bạn.

Bước 3 - Khởi động lại Apache

Sau khi thực hiện xong các thay đổi cấu hình, bạn có thể khởi động lại Apache và kiểm tra kết quả.

Đầu tiên, hãy đảm bảo cú pháp đúng với configtest :

  • sudo apachectl configtest

Khi cài đặt mới, bạn sẽ nhận được phản hồi giống như sau:

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

Nếu bạn muốn loại bỏ dòng trên cùng, chỉ cần thêm lệnh ServerName vào file cấu hình Apache chính ( global ) của bạn tại /etc/apache2/apache2.conf . ServerName có thể là domain hoặc địa chỉ IP của server của bạn. Tuy nhiên, đây chỉ là một thông báo và không ảnh hưởng đến chức năng của trang web . Miễn là kết quả chứa Syntax OK , bạn đã sẵn sàng tiếp tục.

Sử dụng lệnh sau để khởi động lại Apache:

  • sudo systemctl reload apache2

Khi server đã khởi động lại, hãy truy cập các trang web bị ảnh hưởng của bạn và đảm bảo chúng hoạt động như mong đợi. Khi bạn thấy phù hợp vì mọi thứ đều theo thứ tự, đừng quên xóa các bản sao root của dữ liệu:

  • sudo rm -Rf /var/www/example.com/html

Đến đây bạn đã chuyển thành công root tài liệu Apache của bạn sang một vị trí mới.

Kết luận

Trong hướng dẫn này, ta đã trình bày cách thay đổi root tài liệu Apache thành một vị trí mới. Điều này có thể giúp bạn quản trị web server cơ bản, như lưu trữ hiệu quả nhiều trang web trên một server duy nhất. Nó cũng cho phép bạn tận dụng các thiết bị lưu trữ thay thế như lưu trữ khối mạng, có thể hữu ích trong việc mở rộng quy mô một trang web khi nhu cầu của nó thay đổi.

Nếu bạn đang quản lý một trang web bận rộn hoặc đang phát triển, bạn có thể quan tâm đến việc tìm hiểu cách tải kiểm tra web server của bạn để xác định các tắc nghẽn hiệu suất trước khi bạn gặp phải chúng trong quá trình production . Bạn cũng có thể tìm hiểu thêm về việc cải thiện trải nghiệm production trong so sánh năm cách này để cải thiện cài đặt server ứng dụng web production của bạn .


Tags:

Các tin liên quan

Cách cài đặt Apache Tomcat 9 trên Ubuntu 18.04
2018-07-06
Cách cài đặt Apache Tomcat 8 trên Ubuntu 16.04
2018-07-05
Cách tạo chứng chỉ SSL tự ký cho Apache trong Ubuntu 18.04
2018-07-05
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 18.04
2018-04-27
Cách cài đặt web server Apache trên Ubuntu 18.04
2018-04-27
Kiến thức cơ bản về Apache: Khắc phục sự cố cài đặt và cấu hình
2017-12-12
Cách cài đặt web server Apache trên Ubuntu 16.04
2017-05-26
Cách thiết lập server ảo Apache trên Debian 8
2017-02-06
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