前回でやっと終わったと思った Flask アプリの引っ越し、終わってなかった。
動作確認で、表示や検索の確認はできたのでそれで OK と思っていた。ところが、今日データを更新しようとしたらエラーになって更新できないことが判明。どうやらデータベース周りのエラーらしい。
そういえば、データベースを初期化した時にメッセージが出てた。Warning だったのでとりあえずそのままにしたんだけど、あれがダメだったのか?
ともかく新しいデータを登録できない状況で、アプリを改修しなきゃいけなさそう。そのためには、apostrophe で動いているもうひとつの Web アプリ(こっちは Rails 製)の引っ越しをして、apostrophe を 16.04 LTS にアップグレードしなきゃならない。そうでないと開発環境が整わないから。
ああ、道は遠いな。
月: 2017年3月
Flaskアプリを引っ越す(3)
昨日は、Ubuntu 起動時にアプリを自動起動する systemctl enable
コマンドでエラーが出る、というところで終わった。
動いている
エラーが出ているのでてっきり自動起動に失敗しているものとばかり思っていたけど、ちゃんと enabled になっていた。
bruschetta@wplj:~$ systemctl list-unit-files | grep bruschetta bruschetta.service enabled
bruschetta@wplj:~$ systemctl status bruschetta ● bruschetta.service - Bruschetta service Loaded: loaded (/lib/systemd/system/bruschetta.service; enabled; vendor prese Active: active (running) since 火 2017-02-28 22:42:15 JST; 6h ago Process: 1105 ExecStart=/etc/init.d/bruschetta start (code=exited, status=0/SU Main PID: 1138 (uwsgi) CGroup: /system.slice/bruschetta.service ├─1138 uwsgi bruschetta.ini ├─1569 uwsgi bruschetta.ini └─1570 uwsgi bruschetta.ini
試しにリブートしてみても、ちゃんと自動起動していることを確認した。
うーん、ますます訳がわかんなくなってきた。が、まあいい、この件は後でゆっくり調べることにして、先に進めよう。
データベースファイルをコピー
apostrophe からデータベースファイルをコピーする。Sqlite3 なので、単にファイルを上書きコピーすればいいだけだ。
bruschetta@wplj:~/bruschetta/bruschetta$ scp bruschetta@apostrophe:bruschetta/bruschetta/bruschetta.db . bruschetta@apostrophe's password: bruschetta.db 100% 876KB 876.0KB/s 00:00
そんで、アプリを再起動。
bruschetta@wplj:~/bruschetta/bruschetta$ sudo systemctl stop bruschetta [sudo] bruschetta のパスワード: bruschetta@wplj:~/bruschetta/bruschetta$ sudo systemctl start bruschetta
service
コマンドじゃなくて systemctl
コマンドを使ってみた。ブラウザで確認してみると、無事データが移行されていた。
Nginxのヴァーチャルホスト
ヴァーチャルホスト bruschetta でアプリにアクセスできるようにする。これも設定ファイルを apostrophe からコピーしてくる。
bruschetta@wplj:~/bruschetta/bruschetta$ cd /etc/nginx/sites-available bruschetta@wplj:/etc/nginx/sites-available$ sudo scp bruschetta@apostrophe:/etc/nginx/sites-available/bruschetta . bruschetta@apostrophe's password: bruschetta 100% 905 0.9KB/s 00:00
コピーした設定ファイルがこれ。
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/bruschetta にリンクを張る。
bruschetta@wplj:/etc/nginx/sites-available$ sudo ln -s /etc/nginx/sites-available/bruschetta /etc/nginx/sites-enabled/bruschetta bruschetta@wplj:/etc/nginx/sites-available$ cd ../sites-enabled bruschetta@wplj:/etc/nginx/sites-enabled$ ls bruschetta default
ログファイル用のディレクトリを作る。
bruschetta@wplj:/etc/nginx/sites-enabled$ sudo mkdir /var/log/nginx/bruschetta
/etc/hosts ファイルを編集して1行追加。
192.168.1.6 bruschetta
そして Nginx を再起動。
bruschetta@wplj:/etc/nginx/sites-enabled$ sudo systemctl restart nginx
OK。あとは他のマシンの hosts ファイルも編集して bruschetta にアクセスできるようにするだけだ。はー、長かった。