updateコマンドのメモ
2024/04/30
あくまで自鯖でやってる通りにメモ
うちはnvmとpm2を使っていてdockerは使ってません
無駄な手順とか意味不明な手順がありそうなのであまり参考にしないでほしい(?)
Nodeアップデート
nvmはユーザーごとにインストールされる内容が変わるのでpm2でFirefishを実行しているユーザとビルドするユーザーでやる(私の場合はrootだけどよくないかもしれない)
code:command
pm2 stop Firefish
nvm install node (もしくは任意のNodeのversion名)
nvm alias default 任意のNodeのversion名
pm2はnodeが変わったらインストールしなおす必要がある
インストールしなおしたら既存のpm2の起動登録設定ファイルがsystemdにあるはずなんでそれを書き換える(pm2 startupでも行けるかもしれないけど記憶が無い)
code:command
npm install pm2 -g
sudo nano /etc/systemd/system/pm2を起動登録しているサービス名.service
このファイル内のnodeのバージョン名を任意のversionに変える
Environment=PATH=/root/.cargo/bin:/root/.nvm/versions/node/v21.7.3/bin:以下略
みたいになってると思うんでこのv21.7.3のような前のバージョン名のとこを新しいversion名にする
ここ以外にもv21.7.3みたいになってるとこは全部変えて保存する
code:command
sudo systemctl daemon-reload
sudo systemctl restart pm2を起動登録している任意のサービス名.service
これでpm2側のnodeのバージョンが変わったはず
nodeを新しくするとFirefishを起動したりするときに使うpnpmコマンドもも新しく入れなおさなければいけない
code:command
npm install -g pnpm@8.15.7
このpnpm@のあとはFirefishのbuildに使っているバージョンを使うのが望ましいと思う
多分何も指示がなければpackage.json内のpackageManagerに書かれてるバージョン?でよい
Nodeのマイナーアップデートのみの場合、ソフトウェアのアプデは不要ならこの時点でpm2 start Firefishで起動します
Firefishのアップデートの前に
※アップデートの前に注意したいこと
アップデートしたいバージョン名を確認してこのドキュメントを先に読むこと
アップデートするときにこういうことをやらないとまずいですよ!と書いてる場合があるので先にそっちを確認してからやりましょう
例としてv20240413の場合だとsystemd/pm2で起動してるユーザーは下のコマンドをしないとダメとかあるので
code:command
rm --recursive --force packages/backend-rs/target
Firefishのアップデート
この公式の手順に従いアップグレード
code:command
pm2 stop Firefish
git checkout --packages/backend/assets
git pull --ff origin main
corepack prepare pnpm@latest --activate
pnpm install --frozen-lockfile
NODE_ENV='production' NODE_OPTIONS='--max_old_space_size=3072' pnpm run rebuild
pnpm run migrate
Nodeのアプデをした後はpm2に再度プロセスの登録が必要なはず
code:command
pm2 start "NODE_ENV=production pnpm run start" --name 既存のpm2に登録しているFirefishと違う名前
この時点で自鯖にWEBからアクセスして起動しているか確認する
問題なさそうなら古いプロセスを消してこれで起動するように保存します
code:command
pm2 delete 古いFirefishプロセス名
pm2 save
※おかしいところは教えてください!とりあえず動いているヨシ!の精神で生きているため…