Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在生产环境中为Django项目设置Gunicorn和NGNIX?_Python_Django_Nginx_Gunicorn_Wsgi - Fatal编程技术网

Python 如何在生产环境中为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,因为我不想处理本地计算机上的套接

在部署在服务器上构建的Django项目之前,我正在尝试在本地计算机上重新创建生产环境。我正在使用Gunicorn和NGNIX。当我通过编写
gunicornmydjangoproject.wsgi启动Gunicorn时,我的Django项目显示在地址
http://127.0.0.1:8000
,但没有任何静态文件。这告诉我错误在NGINX中的某个地方,但我不知道在哪里

为了在我的本地计算机上设置Gunicorn和NGNIX,我遵循了这一点。我跳过了指南中的步骤5到7,因为我不想处理本地计算机上的套接字

以下是Django项目的my
settings.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谢谢你。我进一步深入探讨了这个问题,并将提出另一个问题。