Python Web(mainly Flask)环境折腾小记

前段时间折腾我们信息安全小组的CTF平台(flask), 学习了下python web环境的基本配置,也踩了openshit(对!就是openshit!)的好多坑

一、安装依赖

 

二、常见环境搭配

1、Nginx + uwsgi

1)Nginx配置(简化版):

2)uwsgi 配置

方案一: 使用 uwsgi 守护进程

安装 APT 源里面的 uwsgi 包和 python 插件

准备 uwsgi 配置文件

重启服务

 

方案二: 手动运行  uwsgi

    如果使用的 APT 源里的uwsgi,请注意下面的命令均需添加参数: --plugin python;
如果是使用 pypi 源里的uwsgi,等于默认添加了 --plugin python;

Ps: 实际运行的时候需要给uwsgi降权,运行时增加 --uid, --gid 参数即可。

2、Apache + mod_wsgi

1)Apache 配置

先安装mod_wsgi

配置文件

2)mod_wsgi 配置

准备 /path/to/the/application/wsgi.py,这是wsgi的入口文件

3、gunicorn

unix平台下的WSGI服务器,可以独立执行,也可以 apt-get 安装作为系统服务运行

特点:配置简单,轻量

配置文档:http://flask.pocoo.org/docs/0.10/deploying/wsgi-standalone/#gunicorn

4、tornado

特点:非阻塞,并发高,适合实时的web服务

配置文档:http://flask.pocoo.org/docs/0.10/deploying/wsgi-standalone/#tornado

5、其他

http://flask.pocoo.org/docs/0.10/deploying/

三、踩坑记录

Github链接:https://github.com/kings-way/CTF-for-INT_0x80

1、 No module named setuptools_ext

本地 pip install -r requirements.txt 给 CTFd 安装依赖的时候报错,解决方案:

2、 openshift 中的 python 虚拟环境 virtenv

virtenv虚拟环境变量,会导致程序的相对路径发生变化,所以在代码里读写文件注意使用绝对路径

3、ImportError: cannot import name inspect

这是在 openshift 上面运行时的错误

出错语句:from sqlalchemy import orm, event, inspect,解决办法就是 ssh 登录上去,升级其版本

(其实也可以通过openshift的某个配置文件指定相应包的版本,不过脑子已经要炸了,管不了那些了。。。)

4、wsgi.py

最后贴一下在openshift上面部署的CTFd项目的wsgi.py入口文件

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注