簡體   English   中英

Django靜態文件404找不到nginx

[英]Django static files 404 not found nginx

我正在開發一個Django應用程序,我想將它放在DigitalOcean上,這樣我就可以將它顯示給遠程的未來用戶。 我是django和python的新手,我從來沒有觸及過web應用程序的部署,所以我有點迷失方向。

我在digitalocean中使用了django droplet的一鍵安裝,它使用了nginx和gunicorn。 我能夠使用ip地址(159.203.58.210)在瀏覽器中加載應用程序,但問題是無法加載任何靜態文件。

我用谷歌搜索了幾天,沒有任何東西可以幫助我。 我猜它與任何不允許的權限或我沒有在我的模板和* .py文件中正確編寫靜態文件有關。

我正在使用命令運行我的應用程序:

python manage.py runserver localhost:9000

我使用sqlite3作為db

我的完整代碼在這里: https//github.com/gbastien1/carte-interactive

在服務器上,我的應用程序位於/ home / django / international(其中international是我的站點名稱,該應用程序名為carte_interactive)

我在settings.py中的靜態文件設置:

STATIC_URL = '/static/'
STATIC_ROOT= '/home/django/international/carte_interactive/static'

/etc/nginx/sites-enabled/django.conf中的我的靜態文件設置(對於媒體也是如此)

location /static {
    alias /home/django/international/carte_interactive/static;
}

在我的模板中,我使用{ % load staticfiles %}並且我調用我的靜態文件:

{% static 'carte_interactive/css/style.css' %}

在我的.py文件中,我有時會調用這樣的文件,我不知道它是否正確:

app_name='carte_interactive'
json_data_url = static('carte_interactive/json/data.json')
json_data_file = open(app_name + json_data_url, 'w') <-- here

它是唯一能夠在views.py中訪問我的靜態文件的開發解決方案,但是在使用collectstatic的生產中它可能是一個問題,我不知道。

我在服務器上使用django 1.9.4,在開發上使用1.9.1。

你知道為什么我的靜態文件在服務器上找不到404但是一切正常嗎?

文件夾/ home / django / ...是否存在權限問題,以便瀏覽器訪問我的靜態文件?

有沒有更好的方法在views.py中調用我的靜態文件?

提前致謝!

編輯:我得到的所有模板靜態文件的控制台錯誤:

http://159.203.58.210/static/carte_interactive/css/style.css無法加載資源:服務器響應狀態為404(未找到)

我假設您不使用nginx在開發中提供靜態資產? Runserver可以提供靜態文件,但比nginx慢得多,一旦你有多個網站訪問者,這就成了一個問題。 您可以刪除靜態的nginx別名並重新加載nginx,讓runserver提供文件,以確認它是否是nginx配置中的問題。 HåkenLid

我刪除了nginx並使Django服務器加載了靜態文件,現在我可以將它顯示給我未來的用戶。 這回答了我的問題,雖然它本身沒有解決問題! 不管怎么說,還是要謝謝你 !

暫無
暫無

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

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