
1 v2gba 2015-10-10 00:13:37 +08:00 |
2 matthewgao 2015-10-10 00:15:08 +08:00 via Android 什么问题,描述下哇 |
3 powergx 2015-10-10 01:20:37 +08:00 via iPhone ngunx uwsgi flask so easy ,完全碰不到任何问题 |
4 prowayne 2015-10-10 01:31:37 +08:00 这问题问的, 我们肯定成功过啊 |
5 ryd994 2015-10-10 01:48:22 +08:00 via Android 倒不如说,我们还没失败过 nginx+uwsgi ,不说性能,跑起来有那么难么? |
6 loading 2015-10-10 04:04:35 +08:00 via iPhone 每次都成功,包括 windows 和 linux 。 |
7 caixiexin 2015-10-10 08:05:30 +08:00 先描述下你的问题勒 本地跑的话, flask 官方教程就有哈 服务器部署试试 nginx+uwsgi ? |
8 ericls 2015-10-10 08:16:16 +08:00 via Android 直接 uwsgi 或者 gunicorn 就好啊 有什么难度? |
9 imlonghao 2015-10-10 08:41:03 +08:00 每次都成功,何不发下你的错误原因? |
10 izoabr 2015-10-10 08:48:08 +08:00 这就是会者不难难者不会的道理。 连问题描述都不发的,应该是不会的 |
11 le0rn0 OP @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 最后再次谢谢各位!!! |
12 florije 2015-10-10 09:04:43 +08:00 本地测试正常? Flask+gunicorn+supervisor+nginx ? 都用上了?截图看下,反正这个最简单的部署是不会有问题的,也不涉及参数调整什么的。 我怀疑你本地只到 Flask+gunicorn+supervisor 了……或者连 supervisor 都没有涉及。 |
14 florije 2015-10-10 09:09:11 +08:00 FLask-Script 那个用的时候要么找网上的那个比较复杂的写法,要么老老实实用 create_app 出来的 app 。 supervisor 是作为守护进程的,需要外部安装最好。 编码问题……这个真没人帮你解决了就,有个方法,是在全局环境设置编码,这个稍微 google 下就有了,这个,建议 vagrant 或者 docker 下跟部署环境一样,这样你也省事不少。 |
15 florije 2015-10-10 09:10:56 +08:00 @le0rn0 就猜到你也是没用,本地能用这一套,需要修改 host 什么的比较麻烦,前面写过一个简单的,但是暂时找不到在哪里了。上面贴的那个 do 教程里面的就是相当详细了,个人觉得完全够了。 |
16 moosoome 2015-10-10 09:13:13 +08:00 via iPhone 500 错误是不是服务器端类库没装,或者数据库没配置? |
17 le0rn0 OP |
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 了…… |
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 具体是什么不大记得了,很久没有做这个了,然后这个应该是具体描述,你看下先。 |
20 le0rn0 OP @florije 前两步测试没问题了,看到别人都用 Flask-script 的那个 manager 启动,我也就想试试,还以为会有什么比如优化性能之类的功能呢,谢谢啦!我再试一遍。 话说大家都是直接 create_app 的吗 |
21 zjgsamuel 2015-10-10 09:39:19 +08:00 直接祭出 这里 hustlzp 大牛的 Flask-Boost https://github.com/hustlzp/Flask-Boost |
22 le0rn0 OP @zjgsamuel 这个教程启动服务器是直接 python manager.py run ,并没有用 wsgi 等,还是谢谢啦 |
23 qq7171891 2015-10-10 10:23:27 +08:00 题主你一些细节完全弄错了, supervisor 怎么会配置在 Python 虚拟环境中呢? 看我的笔记: http://www.duzhipeng.com/pages/150921 你照着一步一步做就是。 |
26 powergx 2015-10-10 10:55:10 +08:00 supervisor 用 yum 安装 其他东西安装在 venv 里面 |
29 tkisme 2015-10-10 11:14:40 +08:00 我猜测你用了 socketio 有点问题, gunicorn 需要指定版本来适配 socketio. 我是直接在 /etc/init.d 下新建的 flask.conf 然后一般用 python2 ,没什么问题 |
30 le0rn0 OP |
31 tkisme 2015-10-10 11:22:25 +08:00 http://stackoverflow.com/questions/16970379/environment-variables-with-supervisor 真心觉得这个工具刚开始还简单些,后期麻烦的不行,还不如自己写一个 service 直接结束 |
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 |
33 yov123456 2015-10-10 11:24:20 +08:00 @le0rn0 不要用 yum 装,前阵子也被坑了…… [也可能是我要配 python3 的 supervisors 有关?] 去 supervisor 的 github 拖脚本(我后来是这么做的)或者 pip 安装。然后 whereis 找一下装在哪里,用这个启动 supervisord. |
34 matthewgao 2015-10-10 11:25:39 +08:00 如果要在 virutalenv 中 supervisor ,是不是考虑要这样 create 一个 env virtualenv --system-site-packages foo |
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' |
36 aiver 2015-10-10 12:24:21 +08:00 阿里云上 centos 6.5 + supervisor + gunicorn + virtualenv + flask + nginx 成功部署过,不过如果用 virtualenv 的话要注意指定 python 的路径,不然会报错,使用的也是 flask script |