Windows 平台部署 Flask,nginx

在部署flask的时候,找nginx相关资料看到的下文,比较靠谱,做个记录

在 Windows 平台,Flask 本身带的 web server 功能太弱,所以考虑 nginx 是否可以在 Windows 平台应用。经过在网上的查找,找到解决方案:Flask + Tornado + nginx。以下是 nginx 在 Windows 部署的方法。

下载和安装
下载地址:https://nginx.org/en/download.html,选择 Windows 版本,下载后解压缩到目标位置即可。

启动和关闭
此时,进入 nginx 安装目录,通过下面的命令:
start nginx
nginx -s stop
快速停止 nginx 服务。但因为并没有对 nginx 进行配置,所以没有什么实际的作用。接下来我们需要对 nginx 进行配置,让 nginx 作为 Flask 的 http 服务器。在 Linux 操作系统中,可以使用 gunicorn 或 uwsgi 作为 WSGI 服务器,但 Windows 不能使用,所以使用 tornado 充当 wsgi。

Tornado 作为 wsgi
server.py 是一段 Tornado 代码,让 Tornado 作为 wsgi 服务器:

from tornado.httpserver import HTTPServer
from tornado.wsgi import WSGIContainer
from app import app
from tornado.ioloop import IOLoop

s = HTTPServer(WSGIContainer(app))
s.listen(9900) # 监听 9900 端口
IOLoop.current().start()

配置 nginx
接下来配置 nginx,当用户在浏览器中输入 http://localhost,nginx 自动转发到 9900 端口,这样就可以关联到 Tornado 充当的 WSGI 服务器。

nginx 的配置文件 nginx.conf 在安装目录下 conf 子文件加下,打开该文件,进行如下配置:

http {   
    server {
        listen       80;
        server_name  localhost;
        server_name  127.0.0.1;     
        charset     utf-8;           

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://localhost:9900;
        }
        # other configurations
  }

配置完成后,重新启动 nginx ,当用户在浏览器中输入 http://localhost,nginx 将请求转发到 9900 端口,从而关联到我们的 Flask 程序。
将 nginx 加载 Windows 服务
通过 start nginx 启动 nginx 服务,缺点是当关闭 command 窗口,这个服务就终止了。在 Windows 操作系统中,我们可以使用 winsw 将 nginx 加载到 Windows 服务。

winsw 是一个一个开源的项目,可以将一个自定义进程包装为一个 Windows 服务,项目地址:Github,下载地址:WinSW。

下载后,将 exe 文件放到 nginx.exe 相同的文件夹下,并且将 winsw.exe 改名为 nginx-service.exe。改名的目的是为了后续在服务中容易找到,并不是必须的。

然后在相同的文件夹下创建一个 nginx-service.xml 文件。文件的内容在 https://github.com/kohsuke/winsw/blob/master/doc/xmlConfigFile.md 中有说明。比如,需要配置 nginx,xml 文件的内容如下:

<service>
    <id>nginx</id>
    <name>Nginx Service</name>
    <description>Nginx Service</description>
    <logpath>D:/software/nginx-1.18.0/logs</logpath>
    <log mode="roll-by-size">
      <sizeThreshold>10240</sizeThreshold>
      <keepFiles>8</keepFiles>
    </log>
    <executable>D:/software/nginx-1.18.0/nginx.exe</executable>
    <startarguments>-p D:/software/nginx-1.18.0</startarguments>
    <stopexecutable>D:/software/nginx-1.18.0/nginx.exe</stopexecutable>
    <stoparguments>-p D:/software/nginx-1.18.0 -s stop</stoparguments>
  </service>

另外,为了支持 .net 4.0,还需要在相同的目录下创建一个 nginx-service.exe.config 文件,注意这两个配置文件的名称是跟着 nginx-service 来的,必须相同。文件的内容是固定的,如下所示:

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
  <runtime>
    <generatePublisherEvidence enabled="false"/> 
  </runtime>
</configuration>

完成配置后,在命令行窗口通过下面的命令进行安装:

nginx-service.exe install

安装之后,进入 Windows 服务,可以在服务中进行属性的设置和启动与停止的管理。

作者:Stone0823
链接:https://www.jianshu.com/p/9af55f90cf6d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值