menu Chancel's Blog
rss_feed lightbulb_outline

Linux配置Flask+Gunicorn后台生产环境

warning 这篇文章距离上次更新于362天前,文中部分信息可能已失效,请自行甄别无效内容。

由于国内常用的生产环境系统Cent7OS仍然处在Python2.5-2.7的版本之间,在此总结下如何从Python2.5过渡到Python3.x版本

1. 准备

1.1. 更新Python版本

下载Python3的包,在Python官网选择合适的安装包,我这里选择的是Python3.5版本(下载地址)

下载完成之后解压并编译

tar -xf Python-3.5.1.tgz /tmp/python3.5
cd /tmp/python3.5
mkdir /usr/python3.5
./configure --prefix=/usr/python3.5
sudo make & make install

1.2. 修改默认的Python版本(可选)

修改系统默认使用的Python

cd /usr/bin
sudomv python python.bak
sudo ln -s /usr/python3.5/bin/python3 /usr/bin/python

验证Python的版本

python -v

确认无误之后要修改yum包管理器的配置文件,因为yum默认是使用2.7版本的,我们更改了系统的默认版本2.7->3.5会引起安装软件报错

使用 sudo vim /usr/bin/yum,将头部的 #!/usr/bin/python改成 #!/usr/bin/python2.7

使用 sudo vim /usr/libexec/urlgrabber-ext-down,将头部的 #!/usr/bin/python改成 #!/usr/bin/python2.7

2. 配置

2.1. 安装Flask/Gunicorn

创建并启用虚拟目录virtualenv

sudo pip install virtualenv
mkdir /opt/python_test/
virtualenv venv
source venv/bin/activate

在虚拟环境中安装 Flask/Gunicorn

pip install flask gunicorn

2.2. 创建配置文件

创建gunicorn的配置文件,详细参数可以参考Gunicorn官网文档,这里有一个简单的例子

vim /opt/python_test/gunicorn.conf

import os
bind='127.0.0.1:5000' #运行的地址
workers=4 #处理请求的进程数
proc_name='online-test' #进程名称
accesslog = "/home/chancel/proxyDownload/logs/access.log"    #访问日志文件的路径
errorlog = "/home/chancel/proxyDownload/logs/error.log"        #错误日志文件的路径

2.3. 运行你的应用

编写一个简单的Flask实例来运行,使用 vim /opt/python_test/app.py并输入下列代码

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello world!'
if __name__ == '__main__':
    app.run(port=5000)

尝试直接运行 python /opt/python_test/app.py,访问 http://127.0.0.1:5000,看到 “Hello world"后说明Flask实例正常运行,关闭运行

使用Gunicorn运行程序

# config 定义的是配置文件,manage是指运行的文件,app则是指manage.py内的flask对象。(manage不带扩展名)
gunicorn --config gunicorn.conf app:app

访问 http://127.0.0.1:5000,看到 “Hello world"后说明Gunicorn实例正常运行

3. Question

3.1. bash:gunicorn: command not found?

运行 ‘gunicorn --config gunicorn.conf app:app’ 出现 ‘-bash:gunicorn: command not found’

在StackOverFlow上找到一个解决方案,sudo vim /opt/pythontest/rungunicorn.py

#-*- coding: utf-8 -*-

import re
import sys

from gunicorn.app.wsgiapp import run


if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$','',sys.argv[0])
    sys.exit(run())

重新运行gunicorn python run_gunicorn.py -w 4 -b 0.0.0.0:5000 main:app

3.2. bash:pip:command not found

解决方法

  1. 安装相关的依赖包,重新编译安装python
  2. 添加pip路径到系统路径中
阅读 - 85
分类 - 操作系统
创建于 2018-09-26 11:52:32
阅读 - 85
分类 - 操作系统
创建于 2018-09-26 11:52:32
博文目录

[[replyMessage== null?"发表评论":"@" + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageList.data.items.length]])

[[messageItem.create_time]]
[[messageItem.m_environ.browser]] [[messageItem.m_environ.os]] [[messageItem.m_environ.device]]
[[subMessage.m_author]] @ [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[subMessage.m_environ.browser]] [[subMessage.m_environ.os]] [[subMessage.m_environ.device]]