caf*_*991 4 python django wsgi uwsgi
我有以下目录结构
-----root
|___docpd
|__docpd (contains settings.py, wsgi.py , uwsgi.ini)
|__static
Run Code Online (Sandbox Code Playgroud)
在我在开发环境中进行普通 django 设置期间,一切都很好(所有静态文件都用于加载)。但现在设置 uwsgi 后,我发现我的静态文件都没有被加载(我收到 404 错误)。
我尝试过什么?
1. Read alot of stack overflow questions about this error and none could solve my problem.
2. I adjusted the python path with paths to my project and they seem to get added as i printed them out in the settings.py file, but still no luck.
Run Code Online (Sandbox Code Playgroud)
一些代码
uwsgi.ini
[uwsgi]
chdir=/home/ubuntu/docpad/Docpad/
wsgi-file=/home/ubuntu/docpad/Docpad/Docpad/wsgi.py
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/docpad.log
Run Code Online (Sandbox Code Playgroud)
wsgi.py
import os,sys
sys.path.append('/home/ubuntu/docpad/Docpad/')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Docpad.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
设置.py
from sys import path
from os.path import abspath, dirname, join, normpath
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
print "Base dir = " , BASE_DIR
DJANGO_ROOT = dirname(abspath(__file__))
print "Root =",DJANGO_ROOT
SITE_ROOT = dirname(DJANGO_ROOT)
print "SITE =", SITE_ROOT
path.append(DJANGO_ROOT)
print "Path = ",path
print BASE_DIR
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'SECRET'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = True
PROJECT_PATH = os.path.join(BASE_DIR, os.pardir)
PROJECT_PATH = os.path.abspath(PROJECT_PATH)
TEMPLATE_PATH = os.path.join(PROJECT_PATH, 'Docpad/templates/')
print "TEMPLATES = ",TEMPLATE_PATH
# TODO make separate template_paths
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
TEMPLATE_PATH,
)
...
Run Code Online (Sandbox Code Playgroud)
运行应用程序后,所有静态资源(例如 css/js 文件)都会出现 404 错误。
更新
当我做
python manage.py runserver 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)
服务器开始提供静态文件
但是,这个命令
uwsgi --ini uwsgi.ini --http :8000
Run Code Online (Sandbox Code Playgroud)
给了我问题(不加载静态文件)。
我现在完全无能为力,一直在尝试各种替代方案,但没有运气。
如果有人能提供帮助,那就太好了。
我通过执行以下操作解决了问题:
添加
check-static = /你的django目录/
在 uwsgi.ini 文件中。这个对我有用!
假设您的静态资产位于 /customers/foobar/app001/public 下。在将请求传递到动态应用程序之前,您需要检查每个请求在该目录中是否有相应的文件。--check-static 选项适合您: --check-static /customers/foobar/app001/public
http://uwsgi-docs.readthedocs.io/en/latest/StaticFiles.html
归档时间: |
|
查看次数: |
6364 次 |
最近记录: |