Nginx 部署Bottle + uwsgi

  1. 安装
    安装uwsgi和Bottle框架
    sudo apt-get install uwsgi uwsgi-plugin-python python-bottle nginx

安装bottle


pip install bottle
  1. Bottle程序
    建立py文件目录:/home/cc/Documents/bottle2
    python文件app.py:
#!/usr/bin/env python
import bottle
app = application = bottle.Bottle()

@app.route('/helloTTT')
def show_index():
    '''
    The front "index" page
    '''
    return 'Hello hhhh world!'

class StripPathMiddleware(object):
    '''
    Get that slash out of the request
    '''
    def __init__(self, a):
        self.a = a
    def __call__(self, e, h):
        e['PATH_INFO'] = e['PATH_INFO'].rstrip('/')
        return self.a(e, h)

if __name__ == '__main__':
    bottle.run(
        app=StripPathMiddleware(app),
        reloader=True,
        host='0.0.0.0',
        port=10059)

reloader = True有代码变化的时候,自动加载

经测试,这里也可以不需要写host和port,直接写就可以了


#!/usr/bin/env python
import bottle
app = application = bottle.Bottle()

@app.route('/helloTTT')
def show_index():
    '''
    The front "index" page
    '''
    return 'Hello hhhh world!'


if __name__ == '__main__':
    bottle.run()
  1. 启动服务
python app.py

如果有写端口按第一种方式,在浏览器中访问http://127.0.0.1:10059/helloTTT 可以看到返回Hello hhhh world!,如果没有写端口,可以直接访问http://127.0.0.1:8080

  1. 配置uwsgi
    编辑uwsgi配置文件,(一定要以.ini结尾)
sudo vim /etc/uwsgi/apps-available/bottle.ini

[uwsgi]
socket = 127.0.0.1:10059
chdir = /home/cc/Documents/bottle2/
master = true
plugins = python
file = app.py
uid = www-data
gid = www-data

做一个软链接,(因为available中是不能生效的,enabled才能生效)

ln -s /etc/uwsgi/apps-available/bottle.ini /etc/uwsgi/apps-enabled/bottle.ini

启动uwsgi

sudo service uwsgi restart

由于使用的是socket的方式,不能通过浏览器来访问,所以需要nginx来代理一下。

  1. 配置nginx
    编辑配置文件,
 sudo vim /etc/nginx/sites-available/bottle.conf
server {
    listen [::]:80;
    listen 80;
    server_name 192.168.182.129;
    root /home/cc/Documents/bottle2;

    location / {
        try_files $uri @uwsgi;
    }

    location @uwsgi {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:10059;
    }
}
~       

同样做一个软链接到sites-enabled目录下:

sudo ln -s /etc/nginx/sites-available/bottle.conf /etc/nginx/sites-enabled/bottle.conf

测试并生效配置文件, sudo nginx -t & sudo service nginx reload
现在就可以再浏览器里直接访问http://127.0.0.1/helloTTT 可以看到返回Hello hhhh world!
这里因为是80默认端口反向代理10059端口,所以通过80端口访问即可。注意uwsgi的配置文件中的端口应和nginx的端口配置保持一致,nginx的配置中server 监听listen的端口即是我们可以访问到的端口。

参考文章:

http://ju.outofmemory.cn/entry/263445
http://www.cnblogs.com/Xjng/archive/2014/05/27/3754635.html
https://michael.lustfield.net/nginx/bottle-uwsgi-nginx-quickstart

阅读更多
换一批

没有更多推荐了,返回首页