Trên Ubuntu, máy chủ web Nginx lưu trữ tài liệu của nó trong /var/www/html
, thường nằm trên hệ thống tệp gốc (root filesystem) cùng với phần còn lại của hệ điều hành. Tuy nhiên, đôi khi, thật hữu ích khi di chuyển document root đến một vị trí khác, chẳng hạn như một hệ thống tệp được gắn kết riêng biệt. Ví dụ: nếu bạn phục vụ nhiều trang web từ cùng một phiên bản Nginx, việc đặt document root của mỗi trang web trên ổ đĩa riêng cho phép bạn mở rộng quy mô để đáp ứng nhu cầu của một trang web hoặc ứng dụng khách cụ thể.
Trong hướng dẫn này, bạn sẽ di chuyển Nginx document root đến một vị trí mới.
Để hoàn thành hướng dẫn này, bạn sẽ cần:
Chúng ta sẽ sử dụng tên miền your_domain trong hướng dẫn này, nhưng bạn nên thay thế tên miền này bằng tên miền của riêng bạn.
/mnt/volume-nyc3-01
cho vị trí mới của chúng ta. Tuy nhiên, vị trí document root mới của bạn có thể thiết lập cấu hình dựa trên nhu cầu của bạn. Nếu bạn đang di chuyển document root 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ị.Trên bản cài đặt Nginx mới, document root được đặt tại /var/www/html
. Tuy nhiên, bằng cách làm theo hướng dẫn điều kiện tiên quyết, bạn đã tạo một document root mới, /var/www/your_domain/html
. Bạn cũng có thể có các document root bổ sung. Trong bước này, chúng ta sẽ thiết lập vị trí document root và sao chép các tệp có liên quan sang vị trí mới của chúng.
Bạn có thể tìm kiếm vị trí document root của mình bằng grep
. Hãy tìm kiếm trong thư mục /etc/nginx/sites-enabled
để giới hạn sự tập trung của chúng ta vào các trang đang hoạt động. Cờ -R
đảm bảo rằng grep
sẽ in cả dòng có chỉ thị root
và tên tệp đầy đủ trong đầu ra của nó:
- grep -R "root" /etc/nginx/sites-enabled
Nếu bạn làm theo hướng dẫn điều kiện tiên quyết trên một máy chủ mới, kết quả sẽ giống như sau:
Output/etc/nginx/sites-enabled/your_domain: root /var/www/your_domain/html;
/etc/nginx/sites-enabled/default: root /var/www/html;
/etc/nginx/sites-enabled/default: # deny access to .htaccess files, if Apache's document root
/etc/nginx/sites-enabled/default:# root /var/www/your_domain;
Nếu bạn đã thiết lập từ trước, thì kết quả của bạn có thể khác với kết quả 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 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í document root của mình, bạn có thể sao chép các tệp sang vị trí mới của chúng bằng rsync
. Việc sử dụng cờ -a
sẽ duy trì quyền và các thuộc tính thư mục khác, trong khi -v
cung cấp đầu ra chi tiết để bạn có thể theo dõi tiến trình đồng bộ hóa:
Lưu ý: Đảm bảo không có dấu gạch chéo ở cuối thư mục, dấu gạch chéo này 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 ở cuối, rsync
sẽ kết xuất nội dung của thư mục vào điểm gắn kết thay vì chuyển nó vào thư mục chứa html
.
- sudo rsync -av /var/www/your_domain/html /mnt/volume-nyc3-01
Bạn sẽ thấy đầu ra như sau:
Outputsending incremental file list
created directory /mnt/volume-nyc3-01
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 tệp tại chỗ, hãy chuyển sang sửa đổi cấu hình Nginx của chúng ta để phản ánh những thay đổi này.
Nginx sử dụng cả tệp cấu hình toàn cầu và tệp cấu hình dành riêng cho trang web. Để biết thông tin cơ bản về hệ thống phân cấp của các tệp cấu hình, hãy xem “Cách định cấu hình máy chủ web Nginx trên máy chủ riêng ảo”. Chúng ta sẽ sửa đổi tệp khối máy chủ cho dự án your_domain
của chúng ta: /etc/nginx/sites-enabled/your_domain
.
Lưu ý: Hãy nhớ thay thế your_domain
bằng tên miền của bạn và nhớ rằng bạn sẽ sửa đổi các tệp khối máy chủ được xuất ra khi bạn chạy lệnh grep
ở Bước 1.
Bắt đầu bằng cách mở /etc/nginx/sites-enabled/your_domain
trong trình chỉnh sửa:
- sudo nano /etc/nginx/sites-enabled/your_domain
Tìm dòng bắt đầu bằng root
và cập nhật nó với vị trí root mới. Trong trường hợp của chúng ta, đây sẽ là /mnt/volume-nyc3-01/html
:
server {
root /mnt/volume-nyc3-01/html;
index index.html index.htm index.nginx-debian.html;
. . .
}
. . .
Hãy để mắt đến bất kỳ vị trí nào khác mà bạn thấy đường dẫn document root gốc do grep
xuất ra ở Bước 1, kể cả trong bí danh hoặc viết lại. Bạn cũng sẽ muốn cập nhật những thứ này để phản ánh vị trí document root mới.
Khi bạn đã thực hiện tất cả các thay đổi cần thiết, hãy lưu và đóng tệp.
Khi bạn đã hoàn tất việc thay đổi cấu hình, bạn có thể khởi động lại Nginx và kiểm tra kết quả.
Trước tiên, hãy chắc chắn rằng cú pháp là chính xác:
- sudo nginx -t
Nếu mọi thứ đều theo thứ tự, nó sẽ trả về:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nếu thử nghiệm không thành công, hãy theo dõi và khắc phục sự cố.
Khi kiểm tra vượt qua, hãy khởi động lại Nginx:
- sudo systemctl restart nginx
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 và đảm bảo chúng hoạt động như mong đợi. Khi bạn cảm thấy thoải mái rằng mọi thứ đều theo thứ tự, đừng quên xóa bản sao gốc của dữ liệu:
- sudo rm -Rf /var/www/your_domain/html
Bây giờ bạn đã di chuyển thành công document root Nginx của mình đến một vị trí mới.
Trong hướng dẫn này, chúng tôi đã giới thiệu cách thay đổi thư mục document root Nginx 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, chẳng hạn như quản lý hiệu quả nhiều trang web trên một máy chủ. 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ô trang web khi nhu cầu của trang web 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 thiết lập Nginx với HTTP/2 để tận dụng tốc độ truyền nội dung cao của nó.