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-01cho 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:
Outputsending 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 và /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 :
<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 :
. . . <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 :
<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:
OutputAH00558: 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 .
Các tin liên quan
Cách cài đặt Apache Tomcat 9 trên Ubuntu 18.042018-07-06
Cách tạo chứng chỉ SSL tự ký cho Apache trong Ubuntu 18.04
2018-07-05
Cách cài đặt Apache Tomcat 8 trên Ubuntu 16.04
2018-07-05
Cách cài đặt web server Apache trên Ubuntu 18.04
2018-04-27
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) 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 Debian 8
2017-02-01
 

