nginx + uWSGI + Python3 + bottle でHello Worldまで

雑に動かすところまでやってみたのでメモ。
PythonフレームワークDjangoが有名だけど、シンプルなbottleを使ってみることにした。
「bottle.py」だけでできているので入門に最適らしい。

環境

uWSGIをインストール

$ pip install uwsgi
$ uwsgi --version
2.0.12

インストールできた。

bottleをインストール。

$ pip install bottle

bottleで簡単なプログラムを書く

$ mkdir myapp
$ cd myappp
$ vim index.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-

from bottle import route, run, default_app

@route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    # コマンドから"python3 index.py"で起動した場合
    run(host='localhost', port=3030)
else:
    # uWSGIから起動した場合
    application = default_app()

nginxの設定

vim /etc/nginx/conf.d/myapp.conf

server {
    listen 80;
    server_name  myapp.com;
    access_log   /var/log/nginx/myapp.com.access.log;

    location / {
        include uwsgi_params;
        uwsgi_pass  unix:/var/run/uwsgi/myapp.com.sock;
    }
}

uWSGIの設定

[uwsgi]
socket       = /var/run/uwsgi/myapp.com.sock
pidfile      = /var/run/uwsgi/myapp.com.pid
daemonize    = /var/log/uwsgi/myapp.com.log
chdir        = /home/vagrant/myapp/
master       = 1
file         = index.py
chmod-socket = 666
uid          = nginx
gid          = nginx
py-autoreload = 1

ディレクトリ作成して、オーナー変更

$ sudo mkdir /var/run/uwsgi/
$ sudo chown nginx /var/run/uwsgi/
$ sudo mkdir /var/log/uwsgi
$ sudo chown nginx /var/log/uwsgi

uwsgiを起動

uwsgi --ini uwsgi.ini

あとはhosts設定してアクセスすると、Hello World!が表示される。

とても参考になったブログあったんだけど、URLなんだったかな。。。