就问下你们写 python 的有没有成功部署过 flask - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
le0rn0
V2EX    Flask

就问下你们写 python 的有没有成功部署过 flask

  •  
  •   le0rn0 2015-10-10 00:08:17 +08:00 via Android 9064 次点击
    这是一个创建于 3725 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天捣鼓一晚上这破环境,各种错误,还请成功部署的大哥留个联系方式或者贴个靠谱教程,能百度谷歌到的我试了,谢谢各位了!!!
    第 1 条附言    2015-10-10 08:51:52 +08:00
    抱歉各位,是我没描述清楚,我详细说下,我是 Flask+gunicorn+supervisor+nginx,我本地调试及测试没问题,上传到服务器后,错误主要有 2 :

    1. 我没用 FLask-Script 时用 gunicorn 没问题,用了之后启动成功,但一访问就 500

    2. supervisor 配置失败,刚开始是配置在 virtualenv 中,都没法安装,于是回到真实环境安装成功,但却无法使用,报了这么个错误:

    error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line: 1


    还有 3 :再后来又出了个 python 编码错误:

    UnicodeEncodeError: ‘ ascii ’ codec can ’ t encode characters in position xxx ordinal

    这个我按照网上说法,在 python 的 site-package 中加了个文件,然后写入代码,又提示没有 reload()这函数

    对了, python 3.5+centOS 6


    最后再次谢谢各位!!!
    41 条回复    2015-10-10 15:26:06 +08:00
    matthewgao
        2
    matthewgao  
       2015-10-10 00:15:08 +08:00 via Android
    什么问题,描述下哇
    powergx
        3
    powergx  
       2015-10-10 01:20:37 +08:00 via iPhone
    ngunx uwsgi flask so easy ,完全碰不到任何问题
    prowayne
        4
    prowayne  
       2015-10-10 01:31:37 +08:00
    这问题问的, 我们肯定成功过啊
    ryd994
        5
    ryd994  
       2015-10-10 01:48:22 +08:00 via Android   1
    倒不如说,我们还没失败过
    nginx+uwsgi ,不说性能,跑起来有那么难么?
    loading
        6
    loading  
       2015-10-10 04:04:35 +08:00 via iPhone
    每次都成功,包括 windows 和 linux 。
    caixiexin
        7
    caixiexin  
       2015-10-10 08:05:30 +08:00
    先描述下你的问题勒
    本地跑的话, flask 官方教程就有哈
    服务器部署试试 nginx+uwsgi ?
    ericls
        8
    ericls  
       2015-10-10 08:16:16 +08:00 via Android
    直接 uwsgi 或者 gunicorn 就好啊 有什么难度?
    imlonghao
        9
    imlonghao  
       2015-10-10 08:41:03 +08:00
    每次都成功,何不发下你的错误原因?
    izoabr
        10
    izoabr  
       2015-10-10 08:48:08 +08:00
    这就是会者不难难者不会的道理。
    连问题描述都不发的,应该是不会的
    le0rn0
        11
    le0rn0  
    OP
       2015-10-10 08:51:38 +08:00
    @MrGba2z
    @matthewgao
    @powergx
    @prowayne
    @ryd994
    @loading
    @caixiexin
    @ericls
    @imlonghao

    抱歉各位,是我没描述清楚,我详细说下,我是 Flask+gunicorn+supervisor+nginx,我本地调试及测试没问题,上传到服务器后,错误主要有 2 :

    1. 我没用 FLask-Script 时用 gunicorn 没问题,用了之后启动成功,但一访问就 500

    2. supervisor 配置失败,刚开始是配置在 virtualenv 中,都没法安装,于是回到真实环境安装成功,但却无法使用,报了这么个错误:

    error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line: 1


    还有 3 :再后来又出了个 python 编码错误:

    UnicodeEncodeError: ‘ ascii ’ codec can ’ t encode characters in position xxx ordinal

    这个我按照网上说法,在 python 的 site-package 中加了个文件,然后写入代码,又提示没有 reload()这函数

    对了, python 3.5+centOS 6


    最后再次谢谢各位!!!
    florije
        12
    florije  
       2015-10-10 09:04:43 +08:00
    本地测试正常? Flask+gunicorn+supervisor+nginx ?
    都用上了?截图看下,反正这个最简单的部署是不会有问题的,也不涉及参数调整什么的。
    我怀疑你本地只到 Flask+gunicorn+supervisor 了……或者连 supervisor 都没有涉及。
    le0rn0
        13
    le0rn0  
    OP
       2015-10-10 09:07:56 +08:00
    @florije 本地什么都没用,就 pycharm 自带的
    florije
        14
    florije  
       2015-10-10 09:09:11 +08:00
    FLask-Script 那个用的时候要么找网上的那个比较复杂的写法,要么老老实实用 create_app 出来的 app 。
    supervisor 是作为守护进程的,需要外部安装最好。
    编码问题……这个真没人帮你解决了就,有个方法,是在全局环境设置编码,这个稍微 google 下就有了,这个,建议 vagrant 或者 docker 下跟部署环境一样,这样你也省事不少。
    florije
        15
    florije  
       2015-10-10 09:10:56 +08:00
    @le0rn0 就猜到你也是没用,本地能用这一套,需要修改 host 什么的比较麻烦,前面写过一个简单的,但是暂时找不到在哪里了。上面贴的那个 do 教程里面的就是相当详细了,个人觉得完全够了。
    moosoome
        16
    moosoome  
       2015-10-10 09:13:13 +08:00 via iPhone
    500 错误是不是服务器端类库没装,或者数据库没配置?
    le0rn0
        17
    le0rn0  
    OP
       2015-10-10 09:17:33 +08:00
    @florije 请问下如果不用 Flask-script 会有什么影响吗?




    @moosoome 不是没装,该装的都装了,现在重装了服务器系统,从头再来一边
    florije
        18
    florije  
       2015-10-10 09:17:36 +08:00
    1 ,部署上去,直接 python 执行 runserver 那个里面的 app ,确保没问题了。
    2 , virtualenv 安装 gunicorn ,然后你懂的, gunicorn -b 0.0.0.0:8000 runserver:app 类似这种,执行确保没问题。
    3 ,再然后 install supervisor ,然后写 conf ,这个会写吧,然后什么 reload 了, reread 什么的,在 start 之类的,之后看 status ,有错误就看 supervisor 日志,确保这一步没问题。
    其实就完全 ok 了……
    florije
        19
    florije  
       2015-10-10 09:21:03 +08:00
    @le0rn0 http://stackoverflow.com/questions/14566570/how-to-use-flask-script-and-gunicorn/14569881#14569881
    具体是什么不大记得了,很久没有做这个了,然后这个应该是具体描述,你看下先。
    le0rn0
        20
    le0rn0  
    OP
       2015-10-10 09:22:56 +08:00
    @florije 前两步测试没问题了,看到别人都用 Flask-script 的那个 manager 启动,我也就想试试,还以为会有什么比如优化性能之类的功能呢,谢谢啦!我再试一遍。

    话说大家都是直接 create_app 的吗
    zjgsamuel
        21
    zjgsamuel  
       2015-10-10 09:39:19 +08:00
    直接祭出 这里 hustlzp 大牛的 Flask-Boost https://github.com/hustlzp/Flask-Boost
    le0rn0
        22
    le0rn0  
    OP
       2015-10-10 09:46:22 +08:00
    @zjgsamuel 这个教程启动服务器是直接 python manager.py run ,并没有用 wsgi 等,还是谢谢啦
    qq7171891
        23
    qq7171891  
       2015-10-10 10:23:27 +08:00
    题主你一些细节完全弄错了, supervisor 怎么会配置在 Python 虚拟环境中呢?

    看我的笔记: http://www.duzhipeng.com/pages/150921 你照着一步一步做就是。
    le0rn0
        24
    le0rn0  
    OP
       2015-10-10 10:45:27 +08:00
    @qq7171891 你好,我加你好友了,想请教几个问题
    zjgsamuel
        25
    zjgsamuel  
       2015-10-10 10:53:48 +08:00
    @le0rn0 唉 你没有仔细看 我也只能帮到这里了~
    powergx
        26
    powergx  
       2015-10-10 10:55:10 +08:00
    supervisor 用 yum 安装
    其他东西安装在 venv 里面
    le0rn0
        27
    le0rn0  
    OP
       2015-10-10 10:58:25 +08:00
    @powergx 我现在就 supervisor 没配置好了,其他没问题了,求教!
    joshyu8
        28
    joshyu8  
       2015-10-10 11:05:30 +08:00
    @ryd994 赞同
    tkisme
        29
    tkisme  
       2015-10-10 11:14:40 +08:00
    我猜测你用了 socketio 有点问题, gunicorn 需要指定版本来适配 socketio.
    我是直接在 /etc/init.d 下新建的 flask.conf 然后一般用 python2 ,没什么问题
    le0rn0
        30
    le0rn0  
    OP
       2015-10-10 11:16:44 +08:00
    @tkisme2013 我现在就 supervisor 出错了,网上都说 supervisorctl reread,结果一直说*** Unknown syntax: reread
    @powergx
    tkisme
        31
    tkisme  
       2015-10-10 11:22:25 +08:00
    http://stackoverflow.com/questions/16970379/environment-variables-with-supervisor
    真心觉得这个工具刚开始还简单些,后期麻烦的不行,还不如自己写一个 service 直接结束
    tkisme
        32
    tkisme  
       2015-10-10 11:24:08 +08:00
    vi /etc/init/flask.conf

    description "uWSGI server instance configured to serve myproject"

    start on runlevel [2345]
    stop on runlevel [!2345]

    respawn
    setuid XXX
    setgid www-data

    env PATH=/home/XXX/venv/bin
    chdir /home/XXX/flasky
    exec gunicorn -c gunicorn.ini manage:app

    启动就是 start flask
    停止就是 stop flask
    yov123456
        33
    yov123456  
       2015-10-10 11:24:20 +08:00
    @le0rn0 不要用 yum 装,前阵子也被坑了…… [也可能是我要配 python3 的 supervisors 有关?]
    去 supervisor 的 github 拖脚本(我后来是这么做的)或者 pip 安装。然后 whereis 找一下装在哪里,用这个启动 supervisord.
    matthewgao
        34
    matthewgao  
       2015-10-10 11:25:39 +08:00
    如果要在 virutalenv 中 supervisor ,是不是考虑要这样 create 一个 env

    virtualenv --system-site-packages foo
    tkisme
        35
    tkisme  
       2015-10-10 11:26:19 +08:00
    vi /home/kevin/XXX/gunicorn.ini


    from multiprocessing import cpu_count

    bind = '127.0.0.1:5000'
    daemon = False
    workers = cpu_count()
    worker_class = 'socketio.sgunicorn.GeventSocketIOWorker'
    pidfile = '/tmp/gunicorn.pid'
    debug = True
    loglevel = 'debug'
    errorlog = '/tmp/gunicorn.log'
    aiver
        36
    aiver  
       2015-10-10 12:24:21 +08:00
    阿里云上 centos 6.5 + supervisor + gunicorn + virtualenv + flask + nginx 成功部署过,不过如果用 virtualenv 的话要注意指定 python 的路径,不然会报错,使用的也是 flask script
    le0rn0
        37
    le0rn0  
    OP
       2015-10-10 13:17:17 +08:00
    @aiver 求联系方式
    qq7171891
        38
    qq7171891  
       2015-10-10 14:08:00 +08:00
    @le0rn0 你可以邮件我。公司白天不大方便聊 QQ 。
    aiver
        39
    aiver  
       2015-10-10 14:22:03 +08:00
    @le0rn0 鹅厂: 1002109232
    le0rn0
        40
    le0rn0  
    OP
       2015-10-10 14:47:25 +08:00
    @aiver 已加


    @qq7171891 直接发 QQ 邮箱吗?
    qq7171891
        41
    qq7171891  
       2015-10-10 15:26:06 +08:00
    @le0rn0 是的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     830 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 21:38 PVG 05:38 LAX 13:38 JFK 16:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86