ユーザの作成
専用ユーザを作る。
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
これで完了。