ユーザの作成
専用ユーザを作る。
takatoh@nightschool $ sudo adduser bruschetta
[sudo] password for takatoh:
ユーザー `bruschetta' を追加しています...
新しいグループ `bruschetta' (1003) を追加しています...
新しいユーザー `bruschetta' (1003) をグループ `bruschetta' に追加しています...
ホームディレクトリ `/home/bruschetta' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
bruschetta のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
フルネーム []: bruschetta
部屋番号 []:
職場電話番号 []:
自宅電話番号 []:
その他 []:
以上で正しいですか? [Y/n] Y
sudo する権限をつける。
takatoh@nightschool $ sudo gpasswd -a bruschetta sudo
ユーザ bruschetta をグループ sudo に追加
アプリの配置と起動確認
今作った新しいユーザでログインしなおして GitHub から clone。
bruschetta@nightschool:~$ git clone https://github.com/takatoh/Bruschetta.git bruschetta
Cloning into 'bruschetta'...
remote: Counting objects: 345, done.
remote: Compressing objects: 100% (126/126), done.
remote: Total 345 (delta 231), reused 319 (delta 205), pack-reused 0
Receiving objects: 100% (345/345), 31.03 KiB | 0 bytes/s, done.
Resolving deltas: 100% (231/231), done.
Checking connectivity... done.
virtualenv の作成と必要なライブラリのインストール。
bruschetta@nightschool:~$ cd bruschetta
bruschetta@nightschool:~/bruschetta$ virtualenv env
New python executable in env/bin/python
Installing setuptools, pip, wheel...done.
bruschetta@nightschool:~/bruschetta$ source env/bin/activate
(env)bruschetta@nightschool:~/bruschetta$ pip install -r requirements.txt
Collecting Flask (from -r requirements.txt (line 1))
/home/bruschetta/bruschetta/env/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Downloading Flask-0.10.1.tar.gz (544kB)
100% |████████████████████████████████| 544kB 720kB/s
Collecting Flask-SQLAlchemy (from -r requirements.txt (line 2))
Downloading Flask-SQLAlchemy-2.1.tar.gz (95kB)
100% |████████████████████████████████| 98kB 1.6MB/s
Collecting Flask-Script (from -r requirements.txt (line 3))
Downloading Flask-Script-2.0.5.tar.gz (42kB)
100% |████████████████████████████████| 45kB 2.4MB/s
Collecting Werkzeug>=0.7 (from Flask->-r requirements.txt (line 1))
Downloading Werkzeug-0.11.2-py2.py3-none-any.whl (304kB)
100% |████████████████████████████████| 307kB 1.1MB/s
Collecting Jinja2>=2.4 (from Flask->-r requirements.txt (line 1))
Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB)
100% |████████████████████████████████| 266kB 1.4MB/s
Collecting itsdangerous>=0.21 (from Flask->-r requirements.txt (line 1))
Downloading itsdangerous-0.24.tar.gz (46kB)
100% |████████████████████████████████| 49kB 1.8MB/s
Collecting SQLAlchemy>=0.7 (from Flask-SQLAlchemy->-r requirements.txt (line 2))
Downloading SQLAlchemy-1.0.9.tar.gz (4.7MB)
100% |████████████████████████████████| 4.7MB 120kB/s
Collecting MarkupSafe (from Jinja2>=2.4->Flask->-r requirements.txt (line 1))
Downloading MarkupSafe-0.23.tar.gz
Building wheels for collected packages: Flask, Flask-SQLAlchemy, Flask-Script, itsdangerous, SQLAlchemy, MarkupSafe
Running setup.py bdist_wheel for Flask
Stored in directory: /home/bruschetta/.cache/pip/wheels/d2/db/61/cb9b80526b8f3ba89248ec0a29d6da1bb6013681c930fca987
Running setup.py bdist_wheel for Flask-SQLAlchemy
Stored in directory: /home/bruschetta/.cache/pip/wheels/79/20/fe/49ca207b5445eacf8f34ac4c7f2365dd344e17668cd63b8fdd
Running setup.py bdist_wheel for Flask-Script
Stored in directory: /home/bruschetta/.cache/pip/wheels/42/85/3d/fca6d4a04f7852ce8322be36ff8918ceff9bce568e7144c813
Running setup.py bdist_wheel for itsdangerous
Stored in directory: /home/bruschetta/.cache/pip/wheels/97/c0/b8/b37c320ff57e15f993ba0ac98013eee778920b4a7b3ebae3cf
Running setup.py bdist_wheel for SQLAlchemy
Stored in directory: /home/bruschetta/.cache/pip/wheels/f7/c3/1f/a136a98dbce9c82df10df168813df34bba6d039787e4327634
Running setup.py bdist_wheel for MarkupSafe
Stored in directory: /home/bruschetta/.cache/pip/wheels/94/a7/79/f79a998b64c1281cb99fa9bbd33cfc9b8b5775f438218d17a7
Successfully built Flask Flask-SQLAlchemy Flask-Script itsdangerous SQLAlchemy MarkupSafe
Installing collected packages: Werkzeug, MarkupSafe, Jinja2, itsdangerous, Flask, SQLAlchemy, Flask-SQLAlchemy, Flask-Script
Successfully installed Flask-0.10.1 Flask-SQLAlchemy-2.1 Flask-Script-2.0.5 Jinja2-2.8 MarkupSafe-0.23 SQLAlchemy-1.0.9 Werkzeug-0.11.2 itsdangerous-0.24
データベースの初期化。
(env)bruschetta@nightschool:~/bruschetta$ python manage.py init_db
起動確認。
(env)bruschetta@nightschool:~/bruschetta$ python manage.py runserver
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
OK。
uWSGIを使った起動
uWSGI 用の設定ファイル。
[uwsgi]
uid = root
gid = root
http = :9090
venv = /home/bruschetta/bruschetta/env
python-path = /home/bruschetta/bruschetta
wsgi-file = /home/bruschetta/bruschetta/manage.py
callable = app
master=true
pidfile=/var/run/bruschetta.pid
logger=file:/home/bruschetta/bruschetta/bruschetta.log
起動確認。
bruschetta@nightschool:~/bruschetta$ sudo uwsgi bruschetta.ini
[sudo] password for bruschetta:
[uWSGI] getting INI configuration from bruschetta.ini
OK。sudo をつけてるのは、/var/run/bruschetta.pid に書き込むため。
起動用スクリプト
PATH=/sbin:/usr/local/bin:/usr/bin:/bin
APP_ROOT=/home/bruschetta/bruschetta
case "$1" in
start)
cd ${APP_ROOT}
uwsgi bruschetta.ini
;;
stop)
PID_FILE=/var/run/bruschetta.pid
PID=`cat ${PID_FILE}`
kill -INT ${PID}
rm ${PID_FILE}
;;
*)
echo "Usage: bruschetta {start|stop}" >&2
exit 1
;;
esac
exit 0
起動確認。
bruschetta@nightschool:~/bruschetta$ sudo service bruschetta start
[uWSGI] getting INI configuration from bruschetta.ini
あれ、デーモンにならない。
ググってみたら、ini ファイルに logger じゃなくて daemonize を書くみたい。次のように書きなおした。
[uwsgi]
uid = root
gid = root
http = :9090
venv = /home/bruschetta/bruschetta/env
python-path = /home/bruschetta/bruschetta
wsgi-file = /home/bruschetta/bruschetta/manage.py
callable = app
master=true
pidfile=/var/run/bruschetta.pid
#logger=file:/home/bruschetta/bruschetta/bruschetta.log
daemonize=/home/bruschetta/bruschetta/bruschetta.log
今度は OK。
Ubuntu 起動時に自動的に起動するように設定。sysv-rc-conf を使う。
bruschetta@nightschool:~/bruschetta$ sudo sysv-rc-conf
Nginxの設定
upstream uwsgi-bruschetta {
server 127.0.0.1:9090;
}
server {
# port
listen 80;
# server name
server_name bruschetta;
# document root
root /home/bruschetta/bruschetta;
# index
#index index.php index.html index.htm;
# log files
access_log /var/log/nginx/bruschetta/access.log combined;
error_log /var/log/nginx/bruschetta/error.log warn;
keepalive_timeout 60;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
#client_max_body_size 20M;
location / {
#root /home/bruschetta/bruschetta;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://uwsgi-bruschetta;
}
}
sites-enabled から sites-available へリンクを張る。
bruschetta@nightschool:/etc/nginx/sites-enabled$ sudo ln -s ../sites-available/bruschetta bruschetta
/etc/hosts に次の行を挿入。
127.0.0.1 bruschetta
ログファイル用のディレクトリを作成。
bruschetta@nightschool:~$ sudo mkdir /var/log/nginx/bruschetta
Nginx を再起動。
bruschetta@nightschool:/etc/nginx/sites-enabled$ sudo service nginx restart
* Restarting nginx nginx
これで完了。