1
MrGba2z 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 1
倒不如说,我们还没失败过
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
|