上一篇的部署是用的 uwsgi,这次听说 gunicorn 很方便,就试了一下

配置

阿里云 ubuntu 16

流程

安装 virtualenv
sudo pip install virtualenv

使用 virtualenv
virtualenv ENV 创建目录环境
source ./bin/activate 激活环境

安装 gunicorn
pip install gunicorn

安装依赖包 requirement.txt

启动程序
gunicorn -w 4 -b 0.0.0.0:5001 -D manage:app
这里的-d 意思就是在后台运行,当然你也可以配置守护进程

配置 gunicorn.conf

# gunicorn.conf

# 并行工作进程数
workers = 2
# 指定每个工作者的线程数
threads = 2
# 监听内网端口5000
bind = '0.0.0.0:5001'
# 设置守护进程,将进程交给supervisor管理
daemon = 'true'
# 工作模式协程
worker_class = 'gevent'
# 设置最大并发量
worker_connections = 2000
# 设置进程文件目录
pidfile = '/var/www/myflask/run/gunicorn.pid'
# 设置访问日志和错误信息日志路径
accesslog = '/var/www/myflask/log/gunicorn_acess.log'
errorlog = '/var/www/myflask/log/gunicorn_error.log'
# 设置日志记录水平
loglevel = 'debug'

问题 & 解决

Q:setuptools pkg_resources pip wheel failed with error code 1

S:
vi /root/.pip/pip.conf 修改如下:

[global]
index-url = https://pypi.python.org/simple/
[install]
trusted-host=mirrors.aliyun.com trusted-host=pypi.python.org

Q:json 类的报错问题
S:具体的原因我还没有搞明白,Linux 默认的 python3 是 3.5 版本的,但是在进行 jinja2 渲染的时候,常常会出现 json 的报错,两种解决办法。

  • 修改源文件,去掉 json 调用
  • 将 3.5 手动升级到 3.7
    各有优劣吧,3.5 版本稳定,3.7 要自己去编译升级,很复杂,而复杂往往就意味着出错率高。
    这里我选择了后者,因为开发环境就是 3.7,直接升级到 3.7,一劳永逸。

Q:如何升级到 3.7
S:参考博客园上的一篇文章

Q:升级了 python3.7 之后可能会出现的一些问题

1.Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1 问题解决

S:

1.网上有很多的花里胡哨的办法,然后,我,直接把文件删了。。。。

rm /usr/bin/lsb_release