アップグレードに失敗しました(また :) )

ドメインプロバイダーとフォーラムドメインを変更するため、「まずアップグレードした方が良い」…悪い考えでした。ディスコースのアップグレードの50%が失敗することを忘れていました :frowning:

「gem ‘mini_racer’」に問題があるのかもしれず、古すぎるディストリビューション/gccに関するコメントも見つかりましたが、ドメインの有効期限まであと9日だったので、バックアップを復元することにしました。サイトがダウンしているのでコンソール経由で(フォーラムのURLが変更されるというメッセージを出したばかりなので、人々が今試すかもしれない、しまった)。

これも失敗します。またしまった、サイトはもう少しの間ダウンしそうです…

ログを添付しましたが、(いつものように)ほとんど手がかりがありません。用事があるので、簡単な解決策を祈るばかりです。

discourse_upgrade_fails.txt (40.7 KB)

mini-racer で問題が発生している場合、Ubuntu のインストールが古すぎる可能性があります。

Dev の類似の問題をご覧ください。

はい、これは16.04.3 LTSの話です。

とりあえず、前のバージョンに戻りたいです。

その後、十分な時間があれば、「簡単に」アップグレードできるかどうか、あるいは10年ぶりにUbuntuをクリーンインストールしてそこに移行するかどうかを確認します。しかし、長年やってきた他のことを思い出すと…うーん。

すごい、新しいサーバーに移動してください。

「いいね!」 4

バックアップ/リストアを使用して新しいサーバーに移動し、app.yml の変更を保持していれば、すべてが移行されるはずです。

「いいね!」 3

はい、しかし新しいサーバーをセットアップし、ソース管理を移動するかどうかを検討し、長年インストールしてきたものをすべて24時間年中無休のクラウドドロップレットに配置すること…少なくとも1日かけて行うことを好むものです。しかし、今はそれができません。

とりあえず、昨夜のドロップレットを復元し、そこにバックアップをドロップします。少なくともそれがうまくいくことを願っています。

真剣に、アップグレードが失敗した場合、自動フェイルセーフで以前の状態に戻るべきです。ドロップレットのバックアップを取ることは、やりすぎのように思え、管理者に依存します。疑い深く、2つのインスタンスを持ち、常にアクティブなものを古いものに移動し、それをアップグレードすること…まあ、おそらく最近やるべきことでしょう。

「いいね!」 1

標準インストールでは、コンテナを再起動するだけで試すことができる。

「いいね!」 2

あなたのOSがリリース終了から4年経っている場合、アップグレードの動作は期待できません。

新しい仮想マシンに移行してください。古いサーバに必要なものはおそらく何もないでしょう。あなたが話しているかもしれないソース管理についてはわかりません。

「いいね!」 1

鏡を見る必要があるかもしれませんね :smiley:

  • しかし、すべてのホームインスタンスをWIN11にアップグレードするのに2年かかりました(=常に時間がありません)。
  • フィンランドは今月末にHDのみのテレビに切り替わります(誰かが実際にすべてをNetflixで見ているわけではありません=はい)、そして数ヶ月間その作業をしてきました。
  • まだアップグレードされていないW7/IIS7のWebサーバーが1台あります :slight_smile:
  • そして、ディスコースはこのリストの最後です…夏かもしれません。
  • やるべきことと、できることがあります。現実は厳しいです。

ドロップレットのバックアップを復元するのに問題がありましたが、すべて元に戻りました。ふぅ。

ご迷惑をおかけしました。

「いいね!」 2

アップグレードの準備ができるまで、古いバージョンに留まってください。

実際、PostgreSQL 15 アップデートを行うよりも、新しい仮想マシンに移行する方が簡単です。

あるいは、何もアップグレードせずに、さらに数年待つのも良いでしょう。:wink:

「いいね!」 2

アプリを更新する必要がありました。ドメインの切り替えのため app.yml を更新し、Digital Ocean でスナップショットを取得せずに誤って app を再構築してしまいました。そのため、現在アップグレードを強制されています :frowning:

最終的にはうまくいきました。いくつか問題にぶつかったので(笑)、私の(不)運の道のりをここに公開します。誰かが全く同じエラーメッセージにつまずいたときに、この情報が役立つかもしれません。

所要時間 3.5 時間(楽をして Digital Ocean の 1 クリックセットアップをすればよかったのですが、アップグレードがうまくいくか好奇心があったためです)。

*****Ubuntu 16.x → Ubuntu 18.x のアップグレード
*****Ubuntu 18.x → Ubuntu 20.x のアップグレード(これが実際にうまく機能したことに驚きました。Windows よりずっと良かったです :smiley:

*Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-208-generic x86_64)*

*root@Discourse:~# cd /var/discourse/*
*root@Discourse:/var/discourse# ./launcher restart app*
*ERROR: Docker version 19.03.13 not supported, please upgrade to at least 20.10.0, or recommended 24.0.7*
*root@Discourse:/var/discourse# sudo apt-get install docker-ce --only-upgrade*
*Reading package lists... Done*
*Building dependency tree*
*Reading state information... Done*
*docker-ce is already the newest version (5:19.03.13~3-0~ubuntu-xenial).*

******(/(&(%(&/()(=)/&/))&/*
******Docker を削除して再インストールしたくはなかったのですが、もう我慢できませんでした...*

*root@Discourse:/var/discourse# sudo apt remove docker docker-engine docker.io containerd runc*
*root@Discourse:/var/discourse# sudo apt install apt-transport-https ca-certificates curl software-properties-common*
*root@Discourse:/var/discourse# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -*
*root@Discourse:/var/discourse# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"*
*root@Discourse:/var/discourse# sudo apt update*

******これも実行するつもりでしたが、ログで見つからなかったので、実行しなかったのかもしれません(コマンドは表示されませんが、インストールは表示されますね?):*
******sudo apt install docker-ce docker-ce-cli containerd.io*

*root@Discourse:/var/discourse# sudo docker --version*
*Docker version 28.0.1, build 068a01e*
*root@Discourse:/var/discourse# ./launcher rebuild app*

******何度か試行錯誤しましたが、数回の再構築の後、ようやく良くなりました。*
******...ついに redis に到達しました、やったー...と思いきや*
*docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint app (ea1a6cc790c13940435c2626a4e8b6169f04612f4be552be25564def7d5745eb): failed to bind host port for 0.0.0.0:80:172.17.0.2:80/tcp: address already in use*

******(/(&(%(&/()(=)/&/))&/(すでに言いましたっけ?)*

*root@Discourse:/var/discourse# hostname -I*
*139.X.X.X 10.19.0.5 172.17.0.1*
*root@Discourse:/var/discourse# sudo lsof -i :80*
*COMMAND PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME*
*apache2 839     root    4u  IPv6  23477      0t0  TCP *:http (LISTEN)*
*apache2 844 www-data    4u  IPv6  23477      0t0  TCP *:http (LISTEN)*
*apache2 845 www-data    4u  IPv6  23477      0t0  TCP *:http (LISTEN)*

******Apache がデフォルトで起動している?いつから?まさか!*

*root@Discourse:/var/discourse# sudo systemctl stop apache2*
*root@Discourse:/var/discourse# sudo systemctl disable apache2*
*Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.*
*Executing: /lib/systemd/systemd-sysv-install disable apache2*
*Removed /etc/systemd/system/multi-user.target.wants/apache2.service.*
*root@Discourse:/var/discourse# ./launcher start app*

******やった、ついに!(いつもの遅い nginx のエラーメッセージの後で)*

******起動後、もちろん...待っていたものが表示されました...まあいいか、すべてが 1 週間うまく機能したら、また苦しむのを続けるかもしれません...スナップショットとバックアップを取った後で... ;) *
*New release '22.04.5 LTS' available.*
*Run 'do-release-upgrade' to upgrade to it.*
「いいね!」 1

そうしないでください。それはサポートされているインストール方法ではありません。

新しいDropletを作成し、クリーンインストールしてバックアップをコピーするか、rsyncを使用してDiscourseサイトを別のVPSに移動する のいずれかを行います。SSL証明書をrsyncで転送し、その後バックアップを復元するハイブリッドバージョンも行います。これにより、データベースのアップグレードの手順が省略されます。