无法生成部署django项目的unix socket

时间:2015-10-02 02:49:41

标签: django nginx uwsgi

我试图部署我的第一个django项目,我在linode服务器上使用uwsgi和nginx。 基本上我会按照接下来的步骤进行操作。

  1. 在/ etc / uwsgi / apps-available /上为我的项目创建uwsgi配置文件,并在/ etc / uwsgi / apps-enabled /上创建符号链接:

    [uwsgi]
    plugins = http,python
    env = DJANGO_SETTINGS_MODULE=app.settings
    chdir = /opt/deploy/.virtualenvs/test_app/test/
    home = /opt/deploy/.virtualenvs/test_app/
    module = django.core.handlers.wsgi:WSGIHandler()
    processes = 4
    idle = 3600
    touch-reload = /opt/deploy/.virtualenvs/test_app/test/app/local_settings.py
    
  2. 在/ etc / nginx / sites-available /上创建我的nginx配置文件,并在cd nginx / sites-enabled /中创建符号链接,这是我的nginx文件:

    server {
        server_name  www.test.com;
        rewrite ^(.*) http://test.com$1 permanent;
    }
    server {
        listen       80;
        server_name  test.com;
        charset      utf-8;
    
        client_max_body_size       10m;
        client_body_buffer_size    128k;
    
        # serve static files
        location /static/ {
            alias /opt/deploy/.virtualenvs/test_app/test/app/static/;
        }
    
        location / {
            include        uwsgi_params;
            uwsgi_pass     unix:/run/uwsgi/app/test.sock;
        }
    }
    
  3. 重启uwsgi和nginx。

  4. 我希望在运行/ uwsgi / app /上找到文件test.sock,但是没有创建该文件。当看到nignx错误日志时,我有这一行:

    2015/10/02 01:47:49 [crit] 8967#0: *51 connect() to unix:/run/uwsgi/app/test.sock failed (2: No such file or directory) while connecting to upstream, client: 181.135.143.435, server: test.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/run/uwsgi/app/test.sock:", host: "test.com"
    

    为什么我可以为生成uwsgi文件做什么?,我非常知道这可能是一个愚蠢的问题,但在此之前写下了很多教程并且无法找到任何解决方案..谢谢你。

2 个答案:

答案 0 :(得分:1)

也许您需要一些特殊权限才能在位置/ run / uwsgi / app /上生成套接字文件。如果你把它放在/tmp/test.sock中,应该正确生成套接字。

答案 1 :(得分:0)

您缺少配置中的一部分。这是我服务器的工作配置:

upstream django-myhome {
    server unix:///home/myhome/myhome/myhome.sock; # for a file socket
}
server
    location / {
        uwsgi_pass  django-myhome;
        include     /home/myhome/myhome/uwsgi_params; # the uwsgi_params file you installed
    }

还要确保您具有创建.sock文件的正确权限