Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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
Django 改变项目结构后的Nginx坏网关_Django_Amazon Web Services_Nginx_Wsgi_Gunicorn - Fatal编程技术网

Django 改变项目结构后的Nginx坏网关

Django 改变项目结构后的Nginx坏网关,django,amazon-web-services,nginx,wsgi,gunicorn,Django,Amazon Web Services,Nginx,Wsgi,Gunicorn,我有一个django应用程序托管在AWS上,并且一直在清理项目结构的某些方面。其中一个清理涉及删除根目录中的父文件夹,并将我的appspec.yml文件(用于CodeDeploy)放入包含文档的文件夹中。所以我要从这里开始: myproject/ appspec.yml 我的项目/ 要求/ 文件/ 我的项目/ manage.py 我的项目/ __初始值 url.py wsgi.py 背景/ 我的项目/ __初始值 myproject.py 为此: myproject/ appspec.yml 要

我有一个django应用程序托管在AWS上,并且一直在清理项目结构的某些方面。其中一个清理涉及删除根目录中的父文件夹,并将我的appspec.yml文件(用于CodeDeploy)放入包含文档的文件夹中。所以我要从这里开始:

myproject/
appspec.yml
我的项目/
要求/
文件/
我的项目/
manage.py
我的项目/
__初始值
url.py
wsgi.py
背景/
我的项目/
__初始值
myproject.py

为此:

myproject/
appspec.yml
要求/
文件/
我的项目/
manage.py
我的项目/
__初始值
url.py
wsgi.py
背景/
我的项目/
__初始值
myproject.py

在重新启动实例之前,我做了以下操作:

  • gunicorn.conf
    位置从
    root/var/www/myproject/myproject/myproject/myproject
    更改为
    root/var/www/myproject/myproject/myproject
  • nginx.conf
    位置从
    root/var/www/myproject/myproject/myproject/myproject
    更改为
    root/var/www/myproject/myproject/myproject
  • 当我尝试访问我的网站URL时,我现在看到502坏网关,当我查看nginx
    error.log时,从上游读取响应头时,看到
    失败(104:对等方重置连接)

    这显然是因为我弄乱了项目目录。我是否错过了其他需要更改的内容,或者首先更改目录是个坏主意

    当前nginx.conf

    server {
        listen 80;
        server_name  www.myproject.co;
        return 301 http://myproject.co$request_uri;
    }
    
    server {
        listen 80;
        server_name myproject.co;
    
        ##Deny illegal Host headers
        if ($host !~* ^(myproject.co)$ ) {
            return 444;
        }
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
            root /var/www/myproject/myproject/myproject;
        }
        location /media/ {
            root /var/www/myproject/myproject/myproject;
        }
    
    
        location / {
            include proxy_params;
            proxy_pass http://127.0.0.1:8000;
        }
    }
    
    description "Gunicorn application server handling myproject"
    
    start on runlevel [2345]
    stop on runlevel [!2345]
    
    respawn
    setuid ubuntu
    setgid ubuntu
    chdir /var/www/myproject/myproject/myproject
    
    exec /usr/local/bin/gunicorn --workers 3 myproject.wsgi:application --env SECRET_KEY=""
    
    当前的gunicorn.conf

    server {
        listen 80;
        server_name  www.myproject.co;
        return 301 http://myproject.co$request_uri;
    }
    
    server {
        listen 80;
        server_name myproject.co;
    
        ##Deny illegal Host headers
        if ($host !~* ^(myproject.co)$ ) {
            return 444;
        }
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
            root /var/www/myproject/myproject/myproject;
        }
        location /media/ {
            root /var/www/myproject/myproject/myproject;
        }
    
    
        location / {
            include proxy_params;
            proxy_pass http://127.0.0.1:8000;
        }
    }
    
    description "Gunicorn application server handling myproject"
    
    start on runlevel [2345]
    stop on runlevel [!2345]
    
    respawn
    setuid ubuntu
    setgid ubuntu
    chdir /var/www/myproject/myproject/myproject
    
    exec /usr/local/bin/gunicorn --workers 3 myproject.wsgi:application --env SECRET_KEY=""
    
    回溯错误

    当我运行exec/usr/local/bin/gunicorn--workers 3 myproject.wsgi:application--env SECRET_KEY=“”
    时,我得到以下错误:

    exec /usr/local/bin/gunicorn --workers 3 myproject.wsgi:application --env SECRET_KEY="f15a4d7s4bec9cnlw24sw2lj4ften12nu3e4cx3z1utqgajp87"
    [2017-01-20 16:02:49 +0000] [9809] [INFO] Starting gunicorn 19.4.5
    [2017-01-20 16:02:49 +0000] [9809] [INFO] Listening at: http://127.0.0.1:8000 (9809)
    [2017-01-20 16:02:49 +0000] [9809] [INFO] Using worker: sync
    [2017-01-20 16:02:49 +0000] [10039] [INFO] Booting worker with pid: 10039
    [2017-01-20 16:02:49 +0000] [10039] [ERROR] Exception in worker process:
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 515, in spawn_worker
        worker.init_process()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 122, in init_process
        self.load_wsgi()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 130, in load_wsgi
        self.wsgi = self.app.wsgi()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
        self.callable = self.load()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
        return self.load_wsgiapp()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
        return util.import_app(self.app_uri)
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in import_app
        __import__(module)
      File "/var/www/myproject/myproject/myproject/myproject/__init__.py", line 5, in <module>
        from .myproject import app as celery_app
    ImportError: cannot import name app
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 515, in spawn_worker
        worker.init_process()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 122, in init_process
        self.load_wsgi()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 130, in load_wsgi
        self.wsgi = self.app.wsgi()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
        self.callable = self.load()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
        return self.load_wsgiapp()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
        return util.import_app(self.app_uri)
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in import_app
        __import__(module)
      File "/var/www/myproject/myproject/myproject/myproject/__init__.py", line 5, in <module>
        from .myproject import app as celery_app
    ImportError: cannot import name app
    [2017-01-20 16:02:49 +0000] [10039] [INFO] Worker exiting (pid: 10039)
    [2017-01-20 16:02:49 +0000] [9809] [INFO] Shutting down: Master
    [2017-01-20 16:02:49 +0000] [9809] [INFO] Reason: Worker failed to boot.
    
    /var/www/myproject/myproject/myproject/myproject/\uuuu init.py\uuuu

    from __future__ import absolute_import
    
    # This will make sure the app is always imported when
    # Django starts so that shared_task will use this app.
    from .myproject import app as celery_app
    
    # __all__ = ['celery_app']
    
    将`from.myproject导入应用程序注释为芹菜后出错\u应用程序:

    [2017-01-20 18:13:49 +0000] [1411] [INFO] Starting gunicorn 19.4.5
    [2017-01-20 18:13:49 +0000] [1411] [INFO] Listening at: http://127.0.0.1:8000 (1411)
    [2017-01-20 18:13:49 +0000] [1411] [INFO] Using worker: sync
    [2017-01-20 18:13:49 +0000] [1439] [INFO] Booting worker with pid: 1439
    [2017-01-20 18:13:49 +0000] [1439] [ERROR] Exception in worker process:
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 515, in spawn_worker
        worker.init_process()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 122, in init_process
        self.load_wsgi()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 130, in load_wsgi
        self.wsgi = self.app.wsgi()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
        self.callable = self.load()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
        return self.load_wsgiapp()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
        return util.import_app(self.app_uri)
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in import_app
        __import__(module)
    ImportError: No module named myproject.wsgi
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 515, in spawn_worker
        worker.init_process()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 122, in init_process
        self.load_wsgi()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 130, in load_wsgi
        self.wsgi = self.app.wsgi()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
        self.callable = self.load()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
        return self.load_wsgiapp()
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
        return util.import_app(self.app_uri)
      File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in import_app
        __import__(module)
    ImportError: No module named myproject.wsgi
    [2017-01-20 18:13:49 +0000] [1439] [INFO] Worker exiting (pid: 1439)
    [2017-01-20 18:13:49 +0000] [1411] [INFO] Shutting down: Master
    [2017-01-20 18:13:49 +0000] [1411] [INFO] Reason: Worker failed to boot.
    

    现在gunicorn似乎很难找到任何模块。

    结果是
    gunicorn.conf
    没有指向其中包含
    manage.py
    的目录。所以我把它改成:

    description "Gunicorn application server handling myproject"
    
    start on runlevel [2345]
    stop on runlevel [!2345]
    
    respawn
    setuid ubuntu
    setgid ubuntu
    chdir /var/www/myproject/myproject
    
    exec /usr/local/bin/gunicorn --workers 3 myproject.wsgi:application --env SECRET_KEY=""
    

    解决了这个问题。请参见,其中说明您的项目应该位于Python路径上;确保这一点的最简单方法是从manage.py文件所在的同一目录运行此命令。

    您是否有任何关于幕后发生错误的调试跟踪?我指的是来自gunicorn的错误日志。只是添加了一些错误信息,可能与芹菜有关?是的,你需要查看导入错误。是否可以删除init.py中的相对导入?由于它无法导入,gunicorn无法运行python代码,因此nginx无法连接到它,因此您得到了502。太好了,工作正常!你知道为什么我的芹菜导入会突然停止工作吗?因为我所做的只是删除了一个上游文件夹,而这个文件夹除了包含appspec.yml文件之外什么都没有做?我猜某个地方的路径没有改变以反映目录结构?