在windows服务器上部署flask项目。flask有内置的服务器,但一般只用于简单的测试,不能用于生产。
1.flask+nginx+tornado
(1)安装nginx:官网下载
(2)安装tornado
(3)在flask目录下新建一个server.py文件,设置tornado监听的端口
(4)修改nginx.conf配置文件,设置nginx端口及域名等信息。同时将nginx监听端口监听到的消息重定向到tornado的监听端口。
nginx相关命令,进入nginx根目录,可以在cmd下执行以下命令
nginx.exe开启服务
nginx.exe -s quit停止服务
nginx.exe -s stop停止服务
nginx.exe -s reload重启服务
注意:开启一次服务后,虽然关闭了命令行但是并没有关闭服务,不要重复开启多个进程;在修改了配置文件后需要执行重启命令重启服务后才能生效。
2.flask+mod_wsgi+apache
(1)安装apache
(2)下载mod_wsgi.whl
(3)wsgi作为webapp与apache的桥梁,需要与这两者都建立关系。
1)首先在apache中配置mod_wsgi
网上下载的是.whl文件而不是.so,具体解决方法是使用pip安装.whl文件,然后将相关配置加入到httpd.conf中,具体操作见参考博文链接https://blog.csdn.net/chao_8023/article/details/74012324
2)wsgi与webappp即flask项目建立联系
在flask项目目录下建立test.wsgi文件,将app.py(flask项目启动文件)中的app导入进来
(4)在apache中配置站点,在httpd.conf中加入虚拟主机的配置,同样参考上述博文链接。
(5)http://localhost:设置的端口号 运行
运行之后报错http 500,查看apache的error.log日志文件发现test.wsgi中的from app import app语句报错找不到app module。test.wsgi与app.py在同一目录下,该目录下存在__init__.py文件。在命令行下执行.wsgi文件没有错误,但是在浏览器上输入地址和端口号运行网站时总是报上述错误,查了很多资料也没有解决,所以最后选择了nginx完成部署。也希望知道错误原因的前辈们能够留言指导一下,感谢!