介紹
在 Ubuntu 上,Nginx 網頁伺服器將其文件存儲在/var/www/html
中,該路徑通常位於根檔案系統上,與其他操作系統一起。但有時,將文件根目錄移動到其他位置,例如單獨掛載的檔案系統,是很有幫助的。例如,如果您從同一個 Nginx 實例提供多個網站,將每個站點的文件根目錄放在其自己的卷上,可以根據特定站點或客戶的需求進行擴展。
在本指南中,您將把 Nginx 的文件根目錄移到新位置。
先決條件
完成本指南,您需要:
- 一台 Ubuntu 22.04 伺服器和一個具有 sudo 權限的非 root 用戶。您可以在我們的使用 Ubuntu 22.04 初始設置伺服器指南中了解如何設置擁有這些權限的用戶。
- Nginx已安裝,按照在Ubuntu 22.04上安裝Nginx的方法。
- A TLS/SSL certificate configured for your server. You have three options:
- 您可以按照使用Let’s Encrypt在Ubuntu 22.04上保護Nginx的方法免費獲取證書。
- 您還可以按照在Ubuntu 22.04中為Nginx創建自簽名SSL證書的方法生成和配置自簽名證書。
- 您可以從另一家供應商購買證書,然後按照在Ubuntu 22.04中為Nginx創建自簽名SSL證書的方法的第3和第4步來配置Nginx使用它。
在本教程中,我們將使用域名your_domain,但您應該將其替換為您自己的域名。
- A new location for your document root. In this tutorial, we will use the
/mnt/volume-nyc3-01
directory for our new location. If you are using Block Storage on DigitalOcean, this guide will show you how to create and attach your volume. Your new document root location is configurable based on your needs, however. If you are moving your document root to a different storage device, you will want to select a location under the device’s mount point.
步驟1 — 將文件複製到新位置
在 Nginx 的新安裝中,文件根目錄位於 /var/www/html
。但是,按照先決指南,您創建了一個新的文件根目錄,/var/www/your_domain/html
。您可能還有其他文件根目錄。在此步驟中,我們將確定我們的文件根目錄位置並將相關文件複製到它們的新位置。
您可以使用 grep
搜索文件根目錄的位置。讓我們在 /etc/nginx/sites-enabled
目錄中進行搜索,以將焦點限制在活動站點上。-R
標誌確保 grep
會在其輸出中打印包含 root
指令的行和完整文件名:
如果您按照新服務器上的先決教程進行操作,結果將如下所示:
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;
如果您有現有的設置,您的結果可能與此處所示不同。無論哪種情況,您都可以使用 grep
的反饋確保您正在移動所需的文件並更新相應的配置文件。
現在您已確認文件根目錄的位置,您可以使用 rsync
將文件複製到它們的新位置。使用 -a
標誌保留權限和其他目錄屬性,而 -v
提供詳細的輸出,以便您可以跟踪同步的進度:
注意:确保目录末尾没有斜杠,因为如果使用制表符自动完成,可能会添加斜杠。当有斜杠时,rsync
会将目录的内容转储到挂载点而不是将其传输到包含html
目录中。
您将看到以下输出:
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
放置文件后,让我们继续修改Nginx配置以反映这些更改。
步骤2 — 更新配置文件
Nginx使用全局和站点特定的配置文件。我们将修改服务器块文件,以适应您的your_domain
项目:/etc/nginx/sites-enabled/your_domain
。
注意:请记得将your_domain
替换为您的域名,并且要记住,您将修改在第1步运行grep
命令时输出的服务器块文件。
首先,在编辑器中打开/etc/nginx/sites-enabled/your_domain
:
找到以root
开头的行,并将其更新为新的根目录位置。在我们的案例中,这将是/mnt/volume-nyc3-01/html
:
server {
root /mnt/volume-nyc3-01/html;
index index.html index.htm index.nginx-debian.html;
. . .
}
. . .
留意在第1步中用grep
输出的原始文件根路径的任何其他地方,包括在别名或重写中。您还需要更新这些内容以反映新的文件根位置。
完成所有必要的更改后,保存并关闭文件。
步骤3 — 重新启动 Nginx
完成配置更改后,您可以重新启动 Nginx 并测试结果。
首先,确保语法正确:
如果一切正常,它应该返回:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果测试失败,请追踪并修复问题。
一旦测试通过,重新启动 Nginx:
服务器重新启动后,访问受影响的站点,确保它们按预期工作。一旦您确认一切正常,不要忘记删除原始数据的副本:
您已成功将 Nginx 文件根目录移动到新位置。
结论
在這個教程中,我們介紹了如何將 Nginx 文件根目錄更改為新位置。這可以幫助您進行基本的 Web 服務器管理,例如有效地管理單個服務器上的多個站點。它還允許您利用替代存儲設備,如網絡區塊存儲,這對於根據網站需求進行擴展非常有用。
如果您正在管理一個繁忙或不斷發展的網站,您可能有興趣學習如何設置 Nginx 使用 HTTP/2以利用其用於內容的高傳輸速度。