Windows

如何防止 nginx 在 Centos 6 中鎖定掛載的 samba 分區上的文件

  • May 6, 2015

我在 centos 6.3 virtualbox 4.2.4 虛擬機中使用 nginx 1.3.8。系統正在執行通過 yum update 提供的最新軟體。主機作業系統是 Windows 7。nginx 服務的站點文件位於掛載的 samba 分區上,該分區是主機 Windows 系統上的一個文件夾。

即,在 linux 內部,nginx 路徑是指 /home/vhosts,它是從 Windows 上的 D:\vhosts\ 掛載的。samba 分區以具有 777 權限的 root 身份掛載。/etc/fstab 看起來像這樣,但帶有真實的 ​​ip、使用者名、密碼:

//hostip/vhosts   /home/vhosts   cifs   username=username,password=SECRETPASSWORD,uid=root,gid=root,file_mode=0777,dir_mode=0777,rw,_netdev   0 0

即 linux/nginx 從 windows 共享讀取,而不是相反。

在 /etc/samba/smb.conf 中,我嘗試禁用所有 samba 鎖定功能,但即使重新啟動虛擬機似乎也沒有效果。

locking=no
share modes=no
oplocks = no
level2 oplocks = no
kernel oplocks =no

嘗試覆蓋已使用 nginx 至少訪問過一次的 Windows 中的 javascript 文件時,我在 Windows 或 linux 中收到“訪問被拒絕”錯誤。

如果我執行“service nginx reload”,鎖會被移除,我可以保存文件。這就是為什麼我認為是 nginx 導致了鎖。

目錄也會出現同樣的問題。但是,這可能是與使用 samba 無關的不同問題。

我正在使用 samba,以便我可以在虛擬機之外管理原始碼。

另請注意,在我執行“service nginx reload”後,我正在編輯的文件實際上會自動從 Windows 主機中刪除。

已解決:我剛剛查看了我的 nginx.conf 文件。看來“open_file_cache”功能是導致鎖定和刪除文件的原因。當我將此選項設置為 open_file_cache off;,我的問題就解決了。當它允許我這樣做時,我會重新發布作為答案。

已解決:我剛剛查看了我的 nginx.conf 文件。看來“open_file_cache”功能是導致鎖定和刪除文件的原因。當我將此選項設置為 open_file_cache off;,我的問題就解決了。

nginx 的開發人員還關閉了我的錯誤報告,說如果我想在 Windows 中編輯文件,我不應該使用 open_file_cache。他們不認為這是一個錯誤。

引用自:https://serverfault.com/questions/450991