简单ubuntu flask uwsgi 部署教程

简单记录一下 uwsgi 爬坑笔记

使用python3 和 flask 写的简单网站 主要有两个文件构成 一个 views 和 一个启动脚本 views.py代码如下

from app import app

@app.route('/')
@app.route('/index')
def index():
 return 'hello world'

@app.route('/hello')
def hello():
 return 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'

启动脚本 wsgi.py 代码如下

from app import app
if __name__ == "__main__":
    app.run()

views.py 目录结构 myapp/app/views.py wsgi.py 目录结构 myapp/wsgi.py

这里说明下 使用python3 遇到的问题 ubuntu14 安装python3后 使用命令 python3 -m venv flask 创建env总会出如下错误

Error: Command '['/home/cg/myvenv/bin/python3.4', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

这样 环境能创建 但是不能使用 而且没有pip 使用非常不方便, 这时要使用 python3 -m venv –without-pip flask 即可成功创建 但是没pip 所以先激活 虚拟环境

. flask/bin/activate

然后手动安装 pip ,使用 如下步骤

curl -O https://pypi.python.org/packages/source/s/setuptools/setuptools-1.1.6.tar.gz
tar xvzf setuptools-1.1.6.tar.gz
cd setuptools-1.1.6
python ez_setup.py
easy_install pip

下载包 解压 然后安装 就可以使用 python3 的pip 安装 flask了

下面 安装 uwsgi 直接apt-get install uwsgi 安装即可

配置uwsgi 作为http 服务器 直接能访问 方便测试 创建 http.ini 配置文件 添加如下代码

[uwsgi]
vhost=false
uid=www-data
gid=www-data
plugins=python3
module = wsgi
master = true
processes = 5
protocol=http
socket=0.0.0.0:8080
chmod-socket = 660
vacuum = true
die-on-term = true
wsgi-file=/var/web/myapp/wsgi.py
virtualenv=/var/web/myapp/flask
callable=app
daemonize=/var/web/myapp/uwsgi.log

其中 大部分命令行命令 如 –socket=0.0.0.0:8080 类似的命令 都可以直接 使用 socket=0.0.0.0:8080配置在文件中 简化 uwsgi 命令 启动 只需要 uwsgi --ini http.ini 就可以启动了 简单方便

配置为nginx 只需要 去掉 protocol=http 把 socket=0.0.0.0:8080 替换为 socket=web.sock即可
代码如下

[uwsgi]
vhost=false
plugins=python3
uid=33
gid=33
module = wsgi
master = true
processes = 5
socket=/tmp/web.sock
chmod-socket = 660
vacuum = true
pidfile=uwsgi.pid
die-on-term = true
wsgi-file=/var/web/myapp/wsgi.py
virtualenv=/var/web/myapp/flask
callable=app
daemonize=/var/web/myapp/uwsgi.log                                 

nginx 配置

server {
        listen 80;
        root /var/web/myapp;
        index index.html index.htm;
        server_name 0.0.0.0;

        location / {
                include uwsgi_params;
                uwsgi_pass unix:///tmp/web.sock;
        }

启动 uwsgi 和 nginx 即可访问

过程中遇到的问题
uwsgi 总提示

uwsgi: unrecognized option '--callable'
getopt_long() error

此时需要在配置中增加选项 plugins=python3 选项

遇到如下错误时

error “bind(): Permission denied”

使用的 .sock 文件放到了 应用文件夹下导致没有权限 放到 tmp 目录下即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值