Tasking Manager 3を更新したら動かなくなったので復旧させた話

以前更新してから時間が経っているので更新してみましたが、develop ブランチを取ってきていたせいもあって動かなくなってしまいました。

Release に置いてあるバージョンを遡っていって 3.0.1 だったらすぐに動いたので develop ブランチの HEAD から 3.0.1 に戻しました。

サービスの停止

まずは動いているサービスを停止させます。

$ sudo systemctl stop tm3.service
$ sudo systemctl stop nginx.service

configのパッチ作成

例によってドメインごとに異なる設定の書かれたファイルのパッチを用意しておきます。

$ cd ~/tasking-manager
$ git diff server/config.py > ~/config.patch

動かないですがとりあえず develop ブランチのやつを待避させておきます。

$ cd ~
$ mv tasking-manager tasking-manager.dev

v3.0.1のダウンロード

動いたバージョンを落として同じパスになるように移動させます。

$ mkdir ~/src && cd $_
$ wget https://github.com/hotosm/tasking-manager/archive/v3.0.1.tar.gz
$ tar xf v3.0.1.tar.gz
$ cd ~
$ mv ~/src/tasking-manager-3.0.1 tasking-manager

パッチの書き戻し

設定の書き戻しをします。

$ cd ~/tasking-manager
$ patch server/config.py ~/config.patch 

python venv の作成

gunicorn などが入ってくる venv を設定します。 サービスは systemctl で起動させるのですぐに deactive しました。

$ python3.6 -m venv ./venv
$ source ./venv/bin/activate
$ python3.6 -m pip install -r requirements.txt
$ deactive

クライアントのビルド

クライアントをビルドします。

cd client/
npm install
gulp build

package.json の内容だと npm から脆弱性を指摘されるので気がかりですが…。

あと2回くらい gulp build を忘れて 404 返されたことがありました(汗

サービスの再開

最後にサービスを再開させます。

$ cd ~
$ sudo systemctl start tm3.service
$ sudo systemctl start nginx.service

やっぱり Release を追いかけるのがいいのかな…

開発者でもないので GitHub リポジトリから取ってこられる develop ブランチではなく、Release から zip なり tar 玉を取ってきた方が安心かもしれません。
いやウチの環境だと v3.0.5 も動かなかったり、 3.0.1 にしたら npm install脆弱性指摘されたりするわけですが…。

動かない理由探してフィードバックできればいいんですが、なかなかアレです。