Python 如何在生产环境中为Django项目设置Gunicorn和NGNIX?
在部署在服务器上构建的Django项目之前,我正在尝试在本地计算机上重新创建生产环境。我正在使用Gunicorn和NGNIX。当我通过编写Python 如何在生产环境中为Django项目设置Gunicorn和NGNIX?,python,django,nginx,gunicorn,wsgi,Python,Django,Nginx,Gunicorn,Wsgi,在部署在服务器上构建的Django项目之前,我正在尝试在本地计算机上重新创建生产环境。我正在使用Gunicorn和NGNIX。当我通过编写gunicornmydjangoproject.wsgi启动Gunicorn时,我的Django项目显示在地址http://127.0.0.1:8000,但没有任何静态文件。这告诉我错误在NGINX中的某个地方,但我不知道在哪里 为了在我的本地计算机上设置Gunicorn和NGNIX,我遵循了这一点。我跳过了指南中的步骤5到7,因为我不想处理本地计算机上的套接
gunicornmydjangoproject.wsgi启动Gunicorn时,我的Django项目显示在地址http://127.0.0.1:8000
,但没有任何静态文件。这告诉我错误在NGINX中的某个地方,但我不知道在哪里
为了在我的本地计算机上设置Gunicorn和NGNIX,我遵循了这一点。我跳过了指南中的步骤5到7,因为我不想处理本地计算机上的套接字
以下是Django项目的mysettings.py
文件的相关部分:
DEBUG = False
ALLOWED_HOSTS = ['*']
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'production_static/')
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'
STATICFILES_DIRS = [
BASE_DIR / "static",
]
以下文件位于/etc/nginx/sites available/mydjangoproject
:
server {
listen 8000;
server_name 127.0.0.1;
location = /favicon.ico { access_log off; log_not_found off; }
location /production_static/ {
root /home/john/Documents/Django_projects/mydjangoproject/Version_2/mydjangoproject;
}
location / {
include proxy_params;
proxy_pass http://127.0.0.1:8000;
}
}
我已经完成了我链接的指南第8步中的所有其他步骤-我在生成上面的nginx配置文件后运行了sudo ln-s/etc/nginx/sites available/mydjangoproject/etc/nginx/sites enabled
,sudo nginx-t
和sudo systemctl restart nginx
。我还事先运行了manage.py
你能告诉我我做错了什么吗?在我的项目设置中,配置文件有效吗?这里的理想做法是使用docker设置项目,使您的本地和远程完全*相同。@markwalker\uuuu好的,但是您能告诉我这里出了什么问题吗(如果您能从我发布的配置文件中看到)?我可以尝试弄乱端口,但我想避免,因为这是我的本地计算机,而不是服务器。很难说。但是实际上,您的STATICFILES\u DIRS
应该使用类似于os.path.join(BASE\u DIR,'static'),
的东西。并从静态根的末尾删除斜杠。这看起来很奇怪/不对。@markwalker_uu谢谢你。我进一步研究了这个问题,并将提出另一个问题。这里的理想做法是使用docker设置项目,使您的本地和远程完全相同。@markwalker_uuu好的,但您能告诉我这里出了什么问题吗(如果您能从我发布的配置文件中看到)?我可以尝试弄乱端口,但我想避免,因为这是我的本地计算机,而不是服务器。很难说。但是实际上,您的STATICFILES\u DIRS
应该使用类似于os.path.join(BASE\u DIR,'static'),
的东西。并从静态根的末尾删除斜杠。这看起来很奇怪/不对。@markwalker_uu谢谢你。我进一步深入探讨了这个问题,并将提出另一个问题。