wide and deep

RocketChatのバージョンアップ(0.74.3->1.2.1)を行った

背景

私が在籍する研究室では,サーバ上に立つRocketChatを活用している.
導入された当初は便利なものがあるんだなとみんなが思っていたが,
ある頃からどうも通知が送られてこなくなっていまい,
使うにも使いづらい状況になってしまった.

RocketChatを導入した前任のサーバ管理者が長い間無双していて,
その結果,去年卒業されてしまってからは研究室内に
管理をできる人がいなくなってしまった...

前任者に以前少しだけサーバ関係を教えてもらった後輩として,
RocketChatを最新版にし,通知を取り戻し便利にしようと考えた.

環境

CentOS 7.6.1810

実際の動き

新規構築

そもそもどうやってバージョンアップをすればいいんだろう?と思い,
まず新規サーバにRocketChatを導入するところからやってみた.
これは公式のドキュメントを見ることが一番だった.
上から同じように実行していくだけでサクッと構築できた.
rocket.chat
新規構築を通して,/opt/Rocket.ChatにはRocketChat本体のファイルのみが,
設定やChat履歴などは/var/lib/mongo/に入っていることがなんとなくわかった.

失敗

こちらの方がしているように,/opt/Rocket.Chatをディレクトリごと入れ替えようと考えた.
zuntan02.hateblo.jp

# サービス停止
systemctl stop mongod
systemctl stop rocketchat

# 差し替え
cd /opt
mv Rocket.Chat Rocket.Chat_0.74.3
## 公式のRocketChat導入に従う

これでイケると思ったが,どうもうまく行かなかった.
どうやらMongoDBがエラーを吐いてしまっていた.

ERROR: dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.

かなり時間をかけて対処しようとしたがどうともできず,
復旧もできずで正直もう終わってしまったと思った.

rm /var/lib/mongo/mongod.lock
mongod /var/lib/mongo --repair 

stackoverflow.com

天啓

寝て起きて次の日になると,そもそも中身だけバックアップして
再インストールしてリストアすれば良いのではと考え始めた.
そもそも前任者が毎日自動的にバックアップを取るように
スクリプトを設定していた(本当にありがとうございます......)
RocketChatのインストールはうまくいっているはずなので,
MongoDBだけを対処する
というわけでMongoDB再インストール

#バックアップ(既にされていたので実行しなかった)
# mongodump  -d rocketchat -o ~

# Mongodb アンインストール
systemctl disable mongod
systemctl stop mongod
yum remove $(rpm -qa | grep mongodb-org)
rm -r /var/log/mongodb
rm -r /var/lib/mongo

# Mongodb インストール
vim /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
yum install -y mongodb-org
systemctl enable mongod
systemctl start mongod

# リストア
systemctl stop rocketchat
mongorestore -d rocketchat ~/rocketchat --drop
systemctl start rocketchat

これで無事動作した!!
研究室のみんなには迷惑をかけてしまったが,
自分でなんとかする力がさらに身についたように思う.

それにしても前任者は自動バックアップと
リバースプロキシ(何がなんだかわからない)の設定まで
さらりとしていて,私ももっと頑張らなければと思う.

上記作業にあたり,こちらが大変参考になった.
qiita.com
gist.github.com