2017-05-05 36 views
0

我部署的Django項目無法訪問靜態文件,在Chrome中檢查時我得到403。Django - 部署,403爲靜態,但它應該有權限,wsgi + Apache

添加以下到我的000-default.conf在那裏我也有WSGIScriptAlias等:

Alias /static/ /home/budget/static/deploy/ 
<Directory /home/budget/static/deploy> 
Required all granted 
</Directory/ 

在預算中存在的靜態文件/靜態/ deploy文件夾。如果這不給予所需的權限?爲了擺脫403,我需要改變什麼?

它運行在Ubuntu 16.04上。

編輯:

settings.py:

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    #os.path.join(BASE_DIR, 'budget/static'), 
    os.path.join(BASE_DIR, "static"), 
    ) 

STATIC_ROOT = os.path.join(BASE_DIR, "static/deploy/") 
+0

你的問題與編程有什麼關係? –

回答

0

可能有幾個不同的東西,導致你的配置不工作。首先,我會確保你確實在修改正確的Apache配置文件。然後

/usr/sbin/apachectl -V | grep SERVER_CONFIG_FILE | awk '{split($0,a,"="); print a[2]}' | sed s/\"//g 

,委託其他API請求通過WSGI到Django中,你也應該給予正確的權限,以您的WSGI文件(也許這不是絕對需要的僅僅是靜態的服務:您可以運行此命令檢查此去工作):

<Directory /path/to/django/project/project> 
    <Files wsgi.py> 
     Require all granted 
    </Files> 
</Directory> 

接下來,設置Apache使用的進程信息以及您的項目的綁定url。

WSGIDaemonProcess myproject python-path=/path/to/django/project python-home=/path/to/your/venv 
WSGIProcessGroup mydjangoproject 
WSGIScriptAlias /binding/url /path/to/django/project/project/wsgi.py 

最後,您可能需要設置一些權限,允許www數據讀取媒體和靜態文件,你應該準備就緒。不要忘記重新啓動Apache來應用修改。

+0

你好,謝謝。我有一個類似於你的wsgi.py的代碼片段(但帶有我的項目的路徑),所以配置文件應該是正確的。我添加了你提供的'WSGIDaemonProcess'這行代碼,但是沒有任何改變。最後,我給了www-data所有權,如下所示:'sudo chown -R www-data:www-data deploy'(對於每個文件夾都是肯定的,我不確定是否有必要)並重新啓動Apache,但沒有任何更改。 – Lomtrur

+0

什麼是給你403的網址?你有沒有檢查你編輯正確的配置文件? – Anis

+0

您可以授予'sudo chmod -R 775/home/budget/static/deploy'權限 –