le0rn0
V2EX  ›  Flask

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

  •  
  •   le0rn0 · Oct 10, 2015 via Android · 9800 views
    This topic created in 4050 days ago, the information mentioned may be changed or developed.
    今天捣鼓一晚上这破环境,各种错误,还请成功部署的大哥留个联系方式或者贴个靠谱教程,能百度谷歌到的我试了,谢谢各位了!!!
    Supplement 1  ·  Oct 10, 2015
    抱歉各位,是我没描述清楚,我详细说下,我是 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 replies  •  2015-10-10 15:26:06 +08:00
    matthewgao
    matthewgao
    Oct 10, 2015 via Android
    2
    什么问题,描述下哇
    powergx
    powergx
    Oct 10, 2015 via iPhone
    3
    ngunx uwsgi flask so easy ,完全碰不到任何问题
    prowayne
    prowayne
    Oct 10, 2015
    4
    这问题问的, 我们肯定成功过啊
    ryd994
    ryd994
    Oct 10, 2015 via Android❤️1
    5
    倒不如说,我们还没失败过
    nginx+uwsgi ,不说性能,跑起来有那么难么?
    loading
    loading
    Oct 10, 2015 via iPhone
    6
    每次都成功,包括 windows 和 linux 。
    caixiexin
    caixiexin
    Oct 10, 2015
    7
    先描述下你的问题勒
    本地跑的话, flask 官方教程就有哈
    服务器部署试试 nginx+uwsgi ?
    ericls
    ericls
    Oct 10, 2015 via Android
    8
    直接 uwsgi 或者 gunicorn 就好啊 有什么难度?
    imlonghao
    imlonghao
    Oct 10, 2015
    9
    每次都成功,何不发下你的错误原因?
    izoabr
    izoabr
    Oct 10, 2015
    10
    这就是会者不难难者不会的道理。
    连问题描述都不发的,应该是不会的
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    11
    @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
    florije
    Oct 10, 2015
    12
    本地测试正常? Flask+gunicorn+supervisor+nginx ?
    都用上了?截图看下,反正这个最简单的部署是不会有问题的,也不涉及参数调整什么的。
    我怀疑你本地只到 Flask+gunicorn+supervisor 了……或者连 supervisor 都没有涉及。
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    13
    @florije 本地什么都没用,就 pycharm 自带的
    florije
    florije
    Oct 10, 2015
    14
    FLask-Script 那个用的时候要么找网上的那个比较复杂的写法,要么老老实实用 create_app 出来的 app 。
    supervisor 是作为守护进程的,需要外部安装最好。
    编码问题……这个真没人帮你解决了就,有个方法,是在全局环境设置编码,这个稍微 google 下就有了,这个,建议 vagrant 或者 docker 下跟部署环境一样,这样你也省事不少。
    florije
    florije
    Oct 10, 2015
    15
    @le0rn0 就猜到你也是没用,本地能用这一套,需要修改 host 什么的比较麻烦,前面写过一个简单的,但是暂时找不到在哪里了。上面贴的那个 do 教程里面的就是相当详细了,个人觉得完全够了。
    moosoome
    moosoome
    Oct 10, 2015 via iPhone
    16
    500 错误是不是服务器端类库没装,或者数据库没配置?
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    17
    @florije 请问下如果不用 Flask-script 会有什么影响吗?




    @moosoome 不是没装,该装的都装了,现在重装了服务器系统,从头再来一边
    florije
    florije
    Oct 10, 2015
    18
    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
    florije
    Oct 10, 2015
    19
    @le0rn0 http://stackoverflow.com/questions/14566570/how-to-use-flask-script-and-gunicorn/14569881#14569881
    具体是什么不大记得了,很久没有做这个了,然后这个应该是具体描述,你看下先。
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    20
    @florije 前两步测试没问题了,看到别人都用 Flask-script 的那个 manager 启动,我也就想试试,还以为会有什么比如优化性能之类的功能呢,谢谢啦!我再试一遍。

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

    看我的笔记: http://www.duzhipeng.com/pages/150921 你照着一步一步做就是。
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    24
    @qq7171891 你好,我加你好友了,想请教几个问题
    zjgsamuel
    zjgsamuel
    Oct 10, 2015
    25
    @le0rn0 唉 你没有仔细看 我也只能帮到这里了~
    powergx
    powergx
    Oct 10, 2015
    26
    supervisor 用 yum 安装
    其他东西安装在 venv 里面
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    27
    @powergx 我现在就 supervisor 没配置好了,其他没问题了,求教!
    joshyu8
    joshyu8
    Oct 10, 2015
    28
    @ryd994 赞同
    tkisme
    tkisme
    Oct 10, 2015
    29
    我猜测你用了 socketio 有点问题, gunicorn 需要指定版本来适配 socketio.
    我是直接在 /etc/init.d 下新建的 flask.conf 然后一般用 python2 ,没什么问题
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    30
    @tkisme2013 我现在就 supervisor 出错了,网上都说 supervisorctl reread,结果一直说*** Unknown syntax: reread
    @powergx
    tkisme
    tkisme
    Oct 10, 2015
    31
    http://stackoverflow.com/questions/16970379/environment-variables-with-supervisor
    真心觉得这个工具刚开始还简单些,后期麻烦的不行,还不如自己写一个 service 直接结束
    tkisme
    tkisme
    Oct 10, 2015
    32
    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
    yov123456
    Oct 10, 2015
    33
    @le0rn0 不要用 yum 装,前阵子也被坑了…… [也可能是我要配 python3 的 supervisors 有关?]
    去 supervisor 的 github 拖脚本(我后来是这么做的)或者 pip 安装。然后 whereis 找一下装在哪里,用这个启动 supervisord.
    matthewgao
    matthewgao
    Oct 10, 2015
    34
    如果要在 virutalenv 中 supervisor ,是不是考虑要这样 create 一个 env

    virtualenv --system-site-packages foo
    tkisme
    tkisme
    Oct 10, 2015
    35
    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
    aiver
    Oct 10, 2015
    36
    阿里云上 centos 6.5 + supervisor + gunicorn + virtualenv + flask + nginx 成功部署过,不过如果用 virtualenv 的话要注意指定 python 的路径,不然会报错,使用的也是 flask script
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    37
    @aiver 求联系方式
    qq7171891
    qq7171891
    Oct 10, 2015
    38
    @le0rn0 你可以邮件我。公司白天不大方便聊 QQ 。
    aiver
    aiver
    Oct 10, 2015
    39
    @le0rn0 鹅厂: 1002109232
    le0rn0
    le0rn0
    OP
    Oct 10, 2015
    40
    @aiver 已加


    @qq7171891 直接发 QQ 邮箱吗?
    qq7171891
    qq7171891
    Oct 10, 2015
    41
    @le0rn0 是的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3460 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 106ms · UTC 05:36 · PVG 13:36 · LAX 21:36 · JFK 00:36
    ♥ Do have faith in what you're doing.