あらすじ
RedashはV8からDockerによるデプロイのみをアップグレード対象とするようになりbin/upgrade
コマンドによる昔ながらのアップグレードができなくなりました。
なのでこのタイミングでモダンなデプロイ方法に式年遷宮すれば良いんですが、そうは問屋がおろしてくれない人向けに、bin/upgrade
相当のことを自前でやる方法を紹介します。
ご利用は自己責任で計画的に!!!
方法の概要
bin/upgrade
のコードを読んで同じことを自前でやるだけです
- 新バージョンのソースを固めたtarballを取ってくる
- V8からはこのtarballが提供されなくなったので
bin/upgrade
が動かなくなっています - このtarballにはRedashのコードとビルド済のアセットが含まれてます
- V8からはこのtarballが提供されなくなったので
- 新バージョンのソースで
pip install -r requirements.txt
を実施 - 新バージョンのソースで
bin/run ./manage.py db upgrade
を実施 -
$REDASH_HOME/current
のシンボリックリンクを新バージョンに差し替え -
supervisorctl
でRedashのプロセスを再起動
この手順を順次やってく感じです。
アップグレード手順
dockerイメージからアセットを取り出してRedashインスタンスに配置する
以下のコマンドを実行してV8のRedashのdockerイメージからアセットを取り出します
docker run -it -v /tmp/work:/tmp/work -w /app/client docker.io/redash/redash:8.0.0.b30340 /bin/bash -c "tar cvfz dist.tar.gz dist ; mv dist.tar.gz /tmp/work/dist.tar.gz"
アップグレードするRedashインスタンスにdockerが入ってればコレをインスタンス上で直で実行しましょう。なければローカルで実行してSCPか何かで/tmp/work/dist.tar.gz
を転送しておきましょう。
以後はRedashインスタンス上に/tmp/work/dist.tar.gz
が置いてある前提で進めます。
Redashインスタンスでアップグレードを実行
Redashインスタンスにログインしてroot
になって以下を実行していきます
ますはRedashを止めます
/etc/init.d/redash_supervisord stop
/etc/init.d/redash_supervisord status
GithubからV8のソースを持ってきて展開します
cd /opt/redash/ # $REDASH_HOME
curl -L https://github.com/getredash/redash/archive/v8.0.0.tar.gz -O
tar xvfz v8.0.0.tar.g
chown redash:root /opt/redash/redash-8.0.0
ls -al /opt/redash/redash-8.0.0
.env
のシンボリックリンクを作ります
ln -s /opt/redash/.env /opt/redash/redash-8.0.0/.env
dockerから抜き取ったV8のアセットを展開します
cd /opt/redash/redash-8.0.0/client
tar xvfz /tmp/work/dist.tar.gz
ls -al /opt/redash/redash-8.0.0/client/dist
pip install
とdb migrade
を実施します
cd /opt/redash/redash-8.0.0
# pipがchardetでコケたら以下を参考に
# https://stackoverflow.com/questions/49915951/cannot-uninstall-chardet
pip install -r requirements.txt
sudo -u redash bin/run ./manage.py db upgrade
currentのシンボリックリンクを差し替えます
ln -nfs /opt/redash/redash-8.0.0 /opt/redash/current
ここまで無事終わったら勝利は目前です、後はRedashを起動するだけ
/etc/init.d/redash_supervisord start
/etc/init.d/redash_supervisord status
Redashが無事起動してアクセスできれば作業は完了です。
無事起動しなかったら後は気合で頑張れ!!
終わりに
ご利用は自己責任で計画的に!!!
どのみち次のバージョンではPython2が全面的に切られるであろうから刹那の延命策です。