2016-09-16 74 views
1

我有一個django web應用程序,我需要從CentOS 6.8上的apache服務器提供服務。爲了得到這個,我使用mod_wsgi。在CentOS 6.8上使用mod_wsgi和apache提供Django文件

我有我的項目位於/ path/to/myproject。

就在那裏我有以下目錄和文件:

- app1/ 
- db.sqlite3 
- myproject/ 
- myprojectenv/ 
- manage.py 
- static/ 

我已經加入到我的setting.py這個指令:STATIC_ROOT = os.path.join(BASE_DIR, 「靜態/」)和I'我試圖運行django服務器,我可以正確地看到我的應用程序視圖。

所以,之後,我試圖配置Apache服務器,以便從我的瀏覽器發送請願書到我的應用程序,但是Apache上升了403 Forbidden錯誤。

,我遵循的步驟是:

- Add to httpd.conf the following information: 
    <VirtualHost *:80> 
     Alias /static /path/to/myproject/static 
     Alias /app1 /path/to/myproject/app1 

     <Directory /path/to/myproject/static> 
      Order allow,deny 
      Allow from all 
     </Directory> 

     <Directory /path/to/myproject/app1> 
      Order allow,deny 
      Allow from all 
     </Directory> 

     <Directory /path/to/myproject/myproject> 
      <Files wsgi.py> 
       Order allow,deny 
       Allow from all 
      </Files> 
     </Directory> 

     WSGIDaemonProcess myproject user=myuser group=mygroup python-path=/path/to/myproject:/path/to/myproject/myprojectenv/lib/python2.7/site-packages 
     WSGIProcessGroup myproject 
     WSGIScriptAlias//path/to/myproject/myproject/wsgi.py 
    </VirtualHost> 

然後,我給權利apache用戶,爲了讓Apache將不得不把Django項目的訪問:

- sudo usermod -a -G myuser apache 
- chmod 710 /home/myuser 
- chmod 664 ~/myproject/db.sqlite3 
- sudo chown :apache ~/myproject/db.sqlite3 
- sudo chown :apache ~/myproject 

最後,我重新啓動htttpd服務並試圖向我的應用程序發送請願,但我得到了「403 Forbidden錯誤」。

之後,我嘗試將我的django項目複製到apache目錄/ var/www /,並做到這一點,我finnaly可以看到我的django文件,但就像文件一樣,apache不能運行我的應用程序並顯示我的視圖正確。

我認爲問題可能是關於Apache用戶的權限,但我不知道我還能做什麼。

我在做什麼錯?

回答

1

什麼是Apache錯誤日誌中的實際錯誤,而不是瀏覽器中的403錯誤?

最有可能的問題是由於您的主目錄爲710。這意味着其他用戶(如Apache用戶)無法看到您的主目錄。它需要能夠以Apache用戶的身份將URL映射到WSGI應用程序。

上移整個項目的home目錄以外的,或者創建/var/www/myproject或類似下稱爲myproject.wsgi獨立WSGI的腳本文件,該文件中有:

from myproject.wsgi import application 

而且改變:

WSGIScriptAlias//path/to/myproject/myproject/wsgi.py 

    <Directory /path/to/myproject/myproject> 
     <Files wsgi.py> 
      Order allow,deny 
      Allow from all 
     </Files> 
    </Directory> 

至:

WSGIScriptAlias//var/www/myproject/myproject.wsgi 

    <Directory /var/www/myproject> 
     <Files myproject.wsgi> 
      Order allow,deny 
      Allow from all 
     </Files> 
    </Directory> 

Apache u ser只需要能夠在進行URL映射時看到WSGI腳本文件。應用程序代碼將在守護進程模式下以用戶myuser實際運行在您的案例中,這可能會從您的主目錄中讀取內容。

您不需要將目錄/文件的所有權更改爲Apache用戶,因爲代碼將作爲myuser運行。

相關問題