V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
le0rn0
V2EX  ›  Flask

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

  •  
  •   le0rn0 · 2015-10-10 00:08:17 +08:00 via Android · 8365 次点击
    这是一个创建于 3115 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天捣鼓一晚上这破环境,各种错误,还请成功部署的大哥留个联系方式或者贴个靠谱教程,能百度谷歌到的我试了,谢谢各位了!!!
    第 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   ·   我们的愿景   ·   实用小工具   ·   1345 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 17:32 · PVG 01:32 · LAX 10:32 · JFK 13:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.