如何在Windows机器上运行django与nginx?

时间:2014-01-12 05:01:41

标签: django nginx

我有一个django项目。我已经安装了nginx服务器。我想在Windows机器上运行nginx和django。我试过几个博客Nginx Django Uwsgi。但所有这些都需要uwsgi。但uwsgi没有在Windows上安装并给出“uname”错误。有没有办法在Windows上安装和运行nginx和django?任何指针将非常有帮助谢谢。

4 个答案:

答案 0 :(得分:5)

最佳方式(恕我直言)正在使用apache + mod_wsgi。 uWSGI和Gunicorn都不是Windows友好的(虽然uWSGI有cygwin支持,所以你最终可以试试[如果你足够勇敢])。

另一种方法是在Windows机器上安装linux vm(virtualbox,vmware ...)来托管你的应用程序和从本地IIS到虚拟系统的代理请求。

答案 1 :(得分:3)

这个问题来自一年前,但我会为其他人寻找解决他们的Windows Django / nginx问题的答案。

因为uWSGI显然不是Windows的选项(忘记cygwin /虚拟环境)。我不想去mod_wsgi + Apache,因为我必须将现有的AngularJS / nginx项目与我新创建的Django项目合并。

我最终使用了FastCGI,尽管Django对它的支持很快就会被弃用,但它仍然有效。这(写得有些糟糕,但确实有帮助)tutorial帮助了我。

关键行动是:

  • 确保flup已安装pip install flup
  • 编辑你的nginx.conf,如教程中所示:

    location / {    
    # host and port to fastcgi server
    fastcgi_pass 127.0.0.1:<port nr>;
    fastcgi_pass_header Authorization; 
    fastcgi_hide_header X-Accel-Redirect;
    fastcgi_hide_header X-Sendfile;
    fastcgi_pass_header Authorization;
    fastcgi_intercept_errors    off;
    fastcgi_param       CONTENT_LENGTH  $content_length;
    fastcgi_param       CONTENT_TYPE    $content_type;
    fastcgi_param       PATH_INFO       $fastcgi_script_name;
    fastcgi_param       QUERY_STRING    $query_string;
    fastcgi_param       REMOTE_ADDR     $remote_addr;
    fastcgi_param       REQUEST_METHOD  $request_method;
    fastcgi_param       REQUEST_URI     $request_uri;
    fastcgi_param       SERVER_NAME     $server_name;
    fastcgi_param       SERVER_PORT     $server_port;
    fastcgi_param       SERVER_PROTOCOL $server_protocol;
    }
    
  • 然后使用fcgi运行您的Django项目,其端口与上面.conf python manage.py runfcgi method=threaded host=127.0.0.1 port=<port nr>

  • 中的端口相同

为我工作。
如果你没有任何我真正想要使用nginx的理由,我建议采用mod_wsgi + Apache网络服务器方法,它可能会让你的生活更轻松。

答案 2 :(得分:1)

您可以尝试使用Helicon Zoo在IIS 7+的Windows机器上运行Django应用程序。 Helicon动物园稳定且可以投入生产。

此处的教程:Running Django on Windows

答案 3 :(得分:0)

在Django1.9 +之后,通过runfcgi管理命令的 FastCGI支持被删除。 所以你必须使用旧版本的django,或者使用mod_wsgi + apache。

如果您只想开发django代码,那么您只需编辑nginx.conf即可将 proxy_pass http://127.0.0.1:8000 添加到location选项中。例如:

    location /api/ {
        proxy_pass http://127.0.0.1:8000; 
    }

    location /static/ {
        proxy_pass http://127.0.0.1:8000; 
    }