---
title: "Cách cấu hình thay đổi Web Root trong máy chủ Web Apache trên Ubuntu 20.04"
description: "Cách cấu hình thay đổi Web Root trong máy chủ Web Apache trên Ubuntu 20.04"
url: https://cloudfly.vn/techblog/cach-cau-hinh-thay-doi-web-root-trong-may-chu-web-apache-tren-ubuntu-2004
image: https://media.cloudfly.vn/posts/techblog_093I9Rt.png
---

# Cách cấu hình thay đổi Web Root trong máy chủ Web Apache trên Ubuntu 20.04

## Giới thiệu
Trên Ubuntu, máy chủ web Apache phục vụ các tài liệu được lưu trữ mặc định trong thư mục `var / www / html`. Thư mục này được gọi là **thư mục gốc** (DocumentRoot) của tài liệu. Khi quản trị viên hoặc người dùng đưa ra yêu cầu đối với máy chủ, máy chủ sẽ phản hồi với các tệp thích hợp từ tài liệu gốc này.
Thư mục này thường nằm trên hệ thống tệp gốc cùng với phần còn lại của hệ điều hành. Tuy nhiên, đôi khi, sẽ thật hữu ích nếu bạn di chuyển tài gốc liệu sang một vị trí khác, chẳng hạn như hệ thống tệp được gắn kết một cách riêng biệt. Ví dụ: nếu bạn phân phối nhiều trang web từ cùng một phiên bản Apache, việc đặt các tài liệu liệu của mỗi trang web trên khối 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 gốc tài liệu Apache từ vị trí mặc định của nó là `var / www / html` sang một vị trí mới.
## Điều kiện
* Máy chủ Ubuntu 20.04 và người dùng không phải **root** có đặc quyền sudo.
* Cài đặt sẵn Apache trên máy chủ của bạn. 
* SSL được định cấu hình cho tên miền của bạn. 
* Một vị trí mới cho tài liệu gốc của bạn. Trong bài hướng dẫn này, `/ mnt / volume_nyc3_01` được sử dụng làm thư mục cho vị trí mới này. Mặc dù các hướng dẫn trong bài này sử dụng ví dụ về thiết bị lưu trữ khối được gắn kết, bạn có thể sử dụng bất kỳ vị trí thư mục nào trên hệ thống của mình làm nơi lưu trữ thư mục gốc mới để phục vụ nội dung web của bạn.

<$>[info]
Vị trí lưu trữ tài liệu gốc mới của bạn có thể được định cấu hình dựa trên nhu cầu của bạn. Nếu bạn đang di chuyển thư mục gốc của mình sang một thiết bị lưu trữ khác, bạn sẽ muốn chọn một vị trí bên dưới điểm gắn kết của thiết bị.
<$>

## Bước 1: Sao chép tệp sang một vị trí mới
Nếu bạn đã làm theo các hướng dẫn tiên quyết, bạn sẽ tạo được một tài liệu gốc mới tại `/ var / www / <^>your_domain<^>`. Bạn cũng có thể có một thư mục gốc bổ sung tại `VirtualHost` tương ứng. Điều quan trọng là phải thiết lập vị trí của thư mục gốc hiện tại của bạn trước khi bạn sao chép các tệp có liên quan sang vị trí mới của chúng.

Tìm kiếm vị trí thư mục gốc của bạn bằng cách sử dụng lệnh `grep` để tìm kiếm trong thư mục `/ etc / apache2 / sites-enable`. Điều này giới hạn sự tập trung vào các trang đang hoạt động. `-R` đảm bảo rằng `gre`p sẽ in cả `DocumentRoot `và tên tệp đầy đủ trong đầu ra:
```custom_prefix($)
grep -R "DocumentRoot" /etc/apache2/sites-enabled
```

Kết quả sau cho biết vị trí của `DocumentRoot` hiện tại của bạn:
```
[secondary_label Output]
/etc/apache2/sites-enabled/<^>your_domain<^>-le-ssl.conf:  DocumentRoot /var/www/<^>your_domain<^>
/etc/apache2/sites-enabled/<^>your_domain<^>.conf:         DocumentRoot /var/www/<^>your_domain<^>
```

Nếu bạn đã thiết lập sẵn, 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 đầu ra từ `grep` để đảm bảo rằng bạn đang di chuyển các tệp mong muốn và cập nhật các tệp cấu hình thích hợp.
Bây giờ bạn đã xác nhận vị trí của gốc tài liệu của mình, hãy sao chép các tệp vào vị trí mới của chúng bằng `rsync`:

<$>[note]
**Chú ý:** Khi sử dụng lệnh `rsync`, hãy lưu ý 2 điều sau:

* Lưu ý rằng **có** một dấu gạch chéo sau `<^>your_domain<^>`. Nếu bạn không bao gồm dấu gạch chéo ở đây, bạn đang sao chép thư mục này sang thư mục gốc tài liệu mới dưới dạng thư mục con. Ví dụ: thư mục gốc mới của bạn sẽ có cấu trúc sau: `/ var / www / mnt / volume_nyc3_01 / your_domain`. Điều này sẽ gây ra sự cố khi cố gắng cung cấp tệp `index.html` của bạn từ gốc tài liệu mới của bạn.
* Thứ hai, **không có** dấu gạch chéo trên thư mục gốc của tài liệu mới `<^>/ mnt / volume_nyc3_01<^>`.
<$>
```custom_prefix($)
sudo rsync -av /var/www/<^>your_domain/<^> <^>/mnt/volume_nyc3_01<^>
```

`-a` bảo toàn quyền và các thuộc tính thư mục khác, trong khi `-v` cung cấp đầu ra dài dòng để bạn có thể theo dõi tiến trình đồng bộ hóa.
Đầu ra của bạn nên bao gồm những điều sau:
```
[secondary_label Output]
sending incremental file list
./
index.html

sent 265 bytes  received 38 bytes  606.00 bytes/sec
total size is 134  speedup is 0.44
```


Với các tệp của bạn tại chỗ, bạn có thể chuyển sang sửa đổi cấu hình Apache của mình để phản ánh những thay đổi này.
## Bước 2: Cập nhật tệp cấu hình
Sau khi định vị và sao chép tệp vào thư mục gốc mới, bạn có thể định cấu hình tệp máy chủ ảo để trỏ đến vị trí mới này.
Bắt đầu bằng cách mở `/etc/apache2/sites-enabled/<^>your_domain.conf<^>` bằng trình soạn thảo ưa thích của bạn. Ví dụ này sử dụng `nano`:

```custom_prefix($)
sudo nano /etc/apache2/sites-enabled/your_domain.conf
```

Tìm dòng bắt đầu bằng `DocumentRoot`và thay thế bằng vị trí mới. Trong ví dụ này, vị trí mới là `/ mnt / <^>volume_nyc3_01<^>`:
```nginx
[label /etc/apache2/sites-enabled/your_domain.conf]
<VirtualHost *:80>
    ServerAdmin sammy@your_domain
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /<^>mnt/volume_nyc3_01<^>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.your_domain [OR]
RewriteCond %{SERVER_NAME} =your_domain
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
```

Sau chỉ thị `<VirtualHost>` này, hãy thêm các dòng được đánh dấu này để đảm bảo rằng máy chủ sẽ tuân theo các liên kết tượng trưng trong thư mục:
```nginx
[label /etc/apache2/sites-enabled/your_domain.conf]
. . .
</VirtualHost>

<^><Directory /mnt/volume_nyc3_01><^>
   <^> Options FollowSymLinks<^>
   <^> AllowOverride None<^>
   <^> Require all granted<^>
<^></Directory><^>
```
Nhìn chung, `/etc/apache2/sites-enabled/<^>your_domain<^>.conffile` của bạn phải bao gồm tất cả các dòng sau dành riêng cho vị trí `DocumentRoot` mới:
```nginx
[label /etc/apache2/sites-enabled/your_domain.conf]
<VirtualHost *:80>
    ServerAdmin sammy@your_domain
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /<^>mnt/volume_nyc3_01<^>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.your_domain [OR]
RewriteCond %{SERVER_NAME} =your_domain
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<Directory /<^>mnt/volume_nyc3_01<^>>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
```
Lưu và thoát khỏi trình chỉnh sửa của bạn. Bạn có thể thoát ra khỏi `nano` bằng cách nhấn `CTRL + X`, sau đó nhấn `Y`, rồi `ENTER`.
Sau khi thực hiện những thay đổi này, bạn có thể chuyển sự chú ý của mình sang cấu hình SSL. Mở tệp `/etc/apache2/sites-enabled/your_domain-le-ssl.conf`:
```content super_user
sudo nano /etc/apache2/sites-enabled/<^>your_domain<^>-le-ssl.conf
```
Lưu và đóng tệp này.
Bây giờ bạn đã thực hiện các thay đổi cấu hình cần thiết để phản ánh vị trí mới thư mục gốc của bạn.
## Bước 3: Khởi động lại Apache
Sau khi thực hiện xong các thay đổi, bạn có thể khởi động lại Apache và kiểm tra kết quả.
Trước tiên, hãy đảm bảo rằng cú pháp của các cấu hình mới của bạn là đúng với `configtest`:
```custom_prefix($)
sudo apachectl configtest
```

Nếu cú pháp của bạn đúng, đầu ra của bạn sẽ hiển thị như sau:
```
[secondary_label 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<^>
```
<$>[note]
**Lưu ý:** Nếu bạn muốn loại bỏ dòng trên cùng trong đầu ra này, hãy thêm lệnh `ServerName` vào tệp cấu hình Apache chung của bạn tại `/etc/apache2/apache2.conf`. `ServerName` có thể là miền hoặc địa chỉ IP của máy chủ của bạn.
Mở tệp bằng trình chỉnh sửa của bạn:
```custom_prefix($)
sudo nano /etc/apache2/apache2.conf
```

Đặt lệnh `ServerName` ở cuối tệp cấu hình với `<^>your_domain<^>` hoặc địa chỉ IP máy chủ của bạn:
```nginx
[label /etc/apache2/apache2.conf]
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.4/ for detailed information about
# the directives and /usr/share/doc/apache2/README.Debian about Debian specific
# hints.
...

ServerName your_domain
```
Lưu và thoát khỏi trình chỉnh sửa 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 của bạn. Miễn là đầu ra 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:
```custom_prefix($)
sudo systemctl reload apache2
```

Khi máy chủ đã khởi động lại, hãy truy cập các trang web bị ảnh hưởng của bạn để đảm bảo rằng chúng đang hoạt động như mong đợi. Khi bạn cảm thấy thoải mái vì mọi thứ đều theo thứ tự, đừng quên xóa các bản sao gốc của dữ liệu:
```custom_prefix($)
sudo rm -Rf /var/www/your_domain
```

Bây giờ bạn đã chuyển thành công thư mục gốc Apache của mình sang một vị trí mới.
## Kết luận
Trong hướng dẫn này, bạn đã học cách thay đổi thư mục gốc (document root) Apache sang một vị trí mới. Điều này có thể giúp bạn quản trị máy chủ web cơ bản như lưu trữ hiệu quả nhiều trang web trên một máy chủ 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, điều này 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.
