簡體   English   中英

從主機文件結構掛載了/ var / www /的虛擬機上的nginx上的“找不到文件”錯誤

[英]File not found error from nginx on a virtual machine where /var/www/ is mounted from host file structure

我正在嘗試將一個相當復雜的開發環境設置為虛擬Ubuntu 12.04服務器。

為了使我可以編輯文件並在刷新頁面時立即看到更改,就像您在正常的本地開發情況下所期望的那樣,我在〜/ www / site1中的主機操作系統(薄荷14)上有php源代碼我已將其作為持久共享文件夾添加到virtualbox,然后將其安裝在虛擬機上

mount -t vboxsf site1 /var/www

如果我ls / var / www -la我看到了所有的php文件,但是當我嘗試從瀏覽器訪問虛擬機時,頁面上出現File not found錯誤,並且在stderr中發送了FastCGI的子域報告error.log :“從上游讀取響應頭時,”主腳本未知“ 。例外是子域phpmyadmin.virtualmachine完美加載,因此我知道nginx為所請求的子域提供正確的文件結構。

作為測試,我創建了一個指向/ var / test的子域info.virtualmachine,而index.php是最簡單的phpinfo(),並且可以正常工作,因此我只能假定nginx不會讀取已安裝的vboxsf文件結構/ var / www可以正確查看,因為可以查看來賓OS上的所有“本地”文件。

Nginx已配置為以root身份運行,而其他所有服務均以root身份運行。 這是nginx的已知錯誤,還是我需要配置以允許nginx查看已安裝的vboxsf共享的東西?

我找到了答案,事實證明這是由於文件許可以及對php-fpm的工作方式不熟悉。

首先,我在虛擬服務器中啟用了root用戶,並使用超級用戶來控制守護程序,將它們全部設置為以root用戶身份運行。 php-fpm的父進程以root身份運行,但所有子進程均以www-data身份運行。 以root身份掛載共享導致php-fpm的子進程無法使用該文件夾,這導致nginx拋出文件未找到錯誤,並且由於vboxsf的工作方式,我無法對共享進行chown或chmod。

通過使用以下命令將共享添加到/ etc / fstab來解決此問題:

sharename     /var/www     vboxsf    rw,uid=33,gid=33     0      0

這樣就可以將共享安裝在www-data用戶下,從而為www-data提供讀取權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM