
我有以下情況。我的應用程式的 Web 內容位於標準目錄中/var/www/my.domain.com/html/
。另外,我users_statics
在該目錄內的某個位置有一個資料夾,我的應用程式在其中儲存用戶上傳的一些基本檔案。請注意,這些文件未合併到前端建置中,並且在使用過程中僅需要該文件的 URL。
但是,我的部署管道腳本刪除了其中的所有檔案/var/www/my.domain.com/html/
並插入新的前端構建,預設不包含user_statics
目錄。例如:
rm -rf /var/www/my.domain.com/html/*
cp -av build/. /var/www/my.domain.com/html/
因此,我必須將user_statics
目錄儲存在其他位置,並在每次部署後將rsync
其儲存到 Web 內容資料夾:
mkdir /var/www/my.domain.com/html/.../user_statics
rsync -qah ./user-statics-bkp/* /var/www/my.domain.com/html/.../user_statics
我不確定這是處理此資料夾的最理想方法,因為此時我想將 API 添加到後端應用程式以與其內容進行互動。因此,例如,我可能會在部署過程中遇到對此資料夾的錯誤 API 呼叫。
我看到以下選項,但在我看來,沒有一個選項是完美的:
- 以某種方式重寫 CD 管道以在部署期間「忽略」此資料夾。
- 將此資料夾移至該
/var/www/html/
資料夾並將附加指令寫入 nginx 設定檔。 - 打開此資料夾的子網域並為此子網域建立伺服器區塊。但是,我不確定這個資料夾是否“值得”分離到新的伺服器區塊。
根據您的經驗,有沒有更好的方法可以正確處理?
答案1
最後,我將此資料夾放在此路徑中/var/www/html/path/to/user_statics
,並向sites-available/my.domain.com
nginx 設定檔添加了簡單的位置指令:
location /path/to/user_statics {
root /var/www/html/;
}
因此,之後 nginx 將user_statics
請求代理到伺服器檔案系統中的這個位置,與/var/www/my.domain.com/html/
.到目前為止,這個解決方案對我來說效果很好。