如何使用flask和nginx启动uwsgi

8

我想我的主要问题是我不知道文件层次结构应该是什么样子的?到目前为止,我一直在按照Grinberg在他的“Flask开发”书中的教程进行操作。所以我的文件结构大致如下:

--manage.py ( Flask's Script extension script)
--app/   ( application folder as a package)
--virtual_env

我不确定我搞砸了什么,但现在当我尝试使用uwsgi命令时,它会显示以下错误:

current working directory: /home/gaucan/temp/my_app
detected binary path: /usr/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
*** WARNING: you are running uWSGI without its master process manager ***

编辑:

像这样启动它可以正常工作:

uwsgi --http :9090 -w manage:app --enable-threads

这个命令在manage.py文件中有一行:

app=create_app('default')

所以我想这就是我需要做的全部...

但我仍然不能摆脱上面的警告...我正在运行 uwsgi,但没有使用其主进程管理器...这样可以吗?或者我做错了什么吗?

这只是创建了/etc/nginx/nginx.conf文件。

    worker_processes 1;

events {

     worker_connections 1024;

}

http {

sendfile on;

gzip              on;
gzip_http_version 1.0;
gzip_proxied      any;
gzip_min_length   500;
gzip_disable      "MSIE [1-6]\.";
gzip_types        text/plain text/xml text/css
                  text/comma-separated-values
                  text/javascript
                  application/x-javascript
                  application/atom+xml;

# Configuration containing list of application servers
upstream uwsgicluster {

    server 127.0.0.1:8080;
    # server 127.0.0.1:8081;
    # ..
    # .

}

# Configuration for Nginx
server {

    # Running port
    listen 80;

    # Settings to by-pass for static files 
    location ^~ /static/  {

        # Example:
        # root /full/path/to/application/static/file/dir;
        root /app/static/;

    }

    # Serve a static file (ex. favico) outside static dir.
    location = /favico.ico  {

        root /app/favico.ico;

    }

    # Proxying connections to application servers
    location / {

        include            uwsgi_params;
        uwsgi_pass         uwsgicluster;

        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;

    }
}

}


你有uwsgi和nginx的配置文件吗? - rezakamalifard
不确定你的意思,但我已经设法让它工作了... 我编辑了问题... 我看了大约1000个教程并进行了10万次修改,所以也许在这个过程中我做了一些配置文件,哈哈... 对我来说完全是一团糟。 - waTEXmelon
1个回答

21

这可能与您安装uwsgi的方式有关。这个警告:

!!! no internal routing support, rebuild with pcre support !!!

这并不涉及你的应用程序,而是关于你的uwsgi二进制文件。

基本上它说明你正在使用的二进制文件中未启用uwsgi的某个部分。这个具体的功能对于运行Flask应用程序并不需要,所以你可以忽略警告。但如果你想了解更多,请参阅此问题,获取有关此问题及其解决方法的一些信息。

现在,关于另一个警告:

*** WARNING: you are running uWSGI without its master process manager ***
我认为你漏掉了--master选项,这个选项可以启用预分叉服务器。

1
顺便问一下,我的nginx和uwsgi连接了吗?我的意思是我用uwsgi启动uwsgi --http:8080 -w manage:app --enable-threads --master,但是我该怎么处理nginx呢?像这样启动它nginx,然后尝试nginx -s reload,但好像什么都没有发生,在文档中他们写道", 主进程启动新的工作进程并向旧的工作进程发送消息,请求它们关闭"。所以我猜我应该看到uwsgi的一些消息,但我没看到... 是吗? - waTEXmelon
1
我想问的是,nginx.conf应该长什么样,以及我应该使用哪些参数来启动uwsgi,这样它们才能一起正常工作? 我做不好...你可以在原始帖子中看到我的.conf文件。 - waTEXmelon
2
主人替我完成了工作,现在我不再看到警告了。 - H S Rathore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接