Discourseの非常に古いサイトをアップグレードするには?

1. 最も簡単に復旧する方法は何ですか?
2. S3 にバックアップがあれば、画像やメタデータなど、関連するすべてのデータが含まれていますか?

この記事を見つけましたが、5 年ほど更新されていません:

なので、今日さらに時間を無駄にする前に、何か役立つヒントをいただけないでしょうか。誰かにバーチャルビールをおごったり、GitHub - shakacode/react_on_rails: Integration of React + Webpack + Rails including server-side rendering of React, enabling a better developer experience and faster client performance. · GitHub などで無料のアドバイスを提供したり、他の形で協力することも可能です。

一緒にペアプログラミングしていただける方がいれば、その過程をドキュメント化します。

私が把握している情報は以下の通りです:

  1. Discourse のディレクトリは /var/discourse ではなく /var/docker です。
  2. S3 に最近のバックアップがあります。
  3. [Change “templates/postgres.template.yml” TO “templates/postgres.9.5.template.yml”](http://Change “templates/postgres.template.yml” TO “templates/postgres.9.5.template.yml”) を試みました。
  4. しかし、データベースが互換性がないとのエラーが発生しました:
2020-04-04 20:53:42.164 UTC [1601] FATAL:  database files are incompatible with server
2020-04-04 20:53:42.164 UTC [1601] DETAIL:  The data directory was initialized by PostgreSQL version 9.3, which is not compatible with this version 9.5.21.

関連ログ

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-148-generic x86_64)
  System load:  0.08               Processes:              137
  Usage of /:   69.3% of 29.40GB   Users logged in:        0
  Memory usage: 77%                IP address for eth0:    192.241.224.165
  Swap usage:   24%                IP address for docker0: 172.17.0.1
187 packages can be updated.
19 updates are security updates.

*** System restart required ***

root@forum:~# cd /var/docker/
root@forum:/var/docker# git pull

Updating 67f34b8..b0c92ba

I, [2020-04-04T20:34:13.023086 #1]  INFO -- : > apt-get update && apt-get install -y postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
E: Unable to locate package postgresql-client-9.3
E: Couldn't find any package by glob 'postgresql-client-9.3'
E: Couldn't find any package by regex 'postgresql-client-9.3'
E: Unable to locate package postgresql-contrib-9.3
E: Couldn't find any package by glob 'postgresql-contrib-9.3'
E: Couldn't find any package by regex 'postgresql-contrib-9.3'
I, [2020-04-04T20:34:17.590352 #1]  INFO -- : Hit:1 http://deb.debian.org/debian buster InRelease

FAILED
--------------------
Pups::ExecError: apt-get update && apt-get install -y postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3 failed with return #<Process::Status: pid 18 exit 100>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "apt-get update && apt-get install -y postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3"
159a5389071c2e398c9f426ae0853f11f662503190b648f0390fdb14dd9a057e

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
5fd4cef4498a5ad12efb2f27373e3950e83b106d8ab7095177862511b10a0366

Total reclaimed space: 1.494GB
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: local_discourse/app:latest

Total reclaimed space: 9.848GB
root@forum:/var/docker# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            477M     0  477M   0% /dev
tmpfs           100M   11M   89M  11% /run
/dev/vda1        30G  9.6G   19G  35% /
tmpfs           497M     0  497M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           497M     0  497M   0% /sys/fs/cgroup
cgmfs           100K     0  100K   0% /run/cgmanager/fs
tmpfs           100M     0  100M   0% /run/user/0

LOG:  skipping missing configuration file "/shared/postgres_data/postgresql.auto.conf"
2020-04-04 20:53:42.164 UTC [1601] FATAL:  database files are incompatible with server
2020-04-04 20:53:42.164 UTC [1601] DETAIL:  The data directory was initialized by PostgreSQL version 9.3, which is not compatible with this version 9.5.21

FAILED
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return #<Process::Status: pid 1627 exit 2>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
e5ea7eeecd58ef02a19254a299700fe2146b447c6eda637a4fe64df373348953
「いいね!」 3

こんにちは、ジャスティンさん!またお会いできて嬉しいです。Discourse をずっと長く使われているとのこと、礼儀として、@pfaffman さんにここでサポートしてもらう費用を私が負担しても構いません。:hugs:

彼に私に連絡して支払いについて相談するよう伝えてください。

「いいね!」 6

こんにちは、@justin_gordon さん。サイトは現在稼働していますか?もし稼働していない場合、S3 の情報を教えていただけますか?

Redirecting… から、比較的セキュアな方法でお送りいただけます。

これは緊急ではないと信じていますが、月曜日の開始で問題ありませんか?もし緊急の場合は、メッセージでお知らせください。できるだけ早く着手します。

また、こちらでプライベートメッセージ(PM)を送り、メールアドレスをお知らせいただくこともできます。

「いいね!」 5

OMG @codinghorror、本当に嬉しいです!

@pfaffman さん、はい、急ぎません。talksurf.com のヘッダーをどのようにしてあんなに見栄え良くしたのかという質問にお答えするために、アップグレードを進めていました。

talksurf.com が復旧したら、他の皆さんにも役立つよう、ここにいくつかのメモを残すようにします。

「いいね!」 7

ジャスティンさん、今さら罪悪感を感じています :slightly_frowning_face:
Discourse を使い始めて 3 日目なのに、すでに大混乱を引き起こしてしまいました!

「いいね!」 4

@Paul-Reed さん、@codinghorror さん、こんにちは。

@pfaffman さんが私の環境を復旧させてくれました。本当に素晴らしい仕事をしてくれました!サイトはすっかり新品のようにピカピカで、Discourse はバックアップに必要なものがすべて含まれていたため、本当に素晴らしいです!

Discourse の技術は本当にすごいものです!

@pfaffman さんから以下のような情報をいただきました。

  1. 2 つのコンテナを使ったインストール(こちらで説明されています)。
  2. 非常に古いインストールの場合、新規インストールからバックアップを復元するのが最も抵抗の少ない方法でした。
  3. バックアップ以外で本当に役立つファイルは /var/discourse/containers/app.yml だけですが、7 日ごとではなく毎日バックアップを取るべきでした!

私が知っていながら思い出さなかった重要な教訓:

10 分で終わると思っていたことが、実際にはそうではないことがあります。今回の更新は、@Paul-Reed さんにヘッダーについて良いアドバイスを提供したか確認したかっただけだったのですが、オプス!そして、これは私が学んだことだけでなく、私たちはよく忘れてしまいます。私の専門は、コンサルティング(https://www.shakacode.com)やオープンソースプロジェクト(https://github.com/shakacode/react_on_rails)を通じて、React と Ruby on Rails を使ったサイトをより良くすることです。

Docker 型の DevOps は私でもできますが、私が達成しようとしていることからはるかに多くの時間を奪ってしまいます!

そのため、@pfaffman さんに https://forum.shakacode.com/ のホームページの更新を手伝っていただこうと考えています。

というわけで、@codinghorror さんと @pfaffman さんには大変お世話になりました。心から感謝します!


興味があれば、今回の古い Discourse サイトの更新のきっかけとなったカスタムヘッダーの修正方法をご紹介します。

カスタムヘッダー

まず第一に、やけくそな作業をするよりも、@pfaffman さんに https://support.literatecomputing.com/ まで連絡することをお勧めします。実際、この分野でより素敵なものを作りたい場合は、@pfaffman さんに手伝っていただきます!

しかし、DIY をする方のために、役立つ部分はすべてここにあります。

私の知る限り、他はすべて空白です。

CSS

#top-navbar-container {
    background: black;
    height: 25px;
}

#top-navbar-links .spacer {
    display: inline-block;
    margin-left: 12px;
    margin-right: 12px;
}


#top-navbar-links, #top-navbar-links a:visited, #top-navbar-links a {
    color: white;
}

header.d-header {
    background: black;
    background-image: url(/uploads/default/63/873a733a013f8208.jpg);
    padding-top: 0;
    box-shadow: none;
    top: 25px;
    height: 63px;
}

.ember-view > #main-outlet {
    padding-top: 97px;
}

header > .container {
    background-image: url(/uploads/default/63/873a733a013f8208.jpg);
    max-width: 1200px;
    padding-right: 50px;
}

header.d-header > .container > .contents {
    margin: 0;
}

header.d-header #site-logo, header.d-header .logo-small {
    max-height: 53px;
}

body #main .extra-info > a.star {
    color: #A5ACDD;
}

header .extra-info-wrapper h1 {
    margin-top: 18px;    
}

@media screen and (min-width: 1140px)  {
    header .extra-info-wrapper {
        max-width: 780px;
    }
}

@media screen and (min-width: 967px) and (max-width: 1139px)  {
    header .extra-info-wrapper {
        max-width: 647px;
    }
}

#user-notifications, #search-button, #site-map  {
    color: #AAA; 
}

@media screen and (max-width: 966px) {
    .extra-info-wrapper {
        max-width: 620px;
    }
}

header .current-username .username > a {
    color: white;
}

header.d-header .icons .icon:hover {
    background-color: #000000;
}

ヘッダー

<div id="top-navbar-container" class="d-header">
<div id="top-navbar" class="wrap">
<span id="top-navbar-links" style="height:20px;">
  <a href="http://forum.talksurf.com">Home</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/category/surfing/doug-silva">Doug Silva</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/category/surfing">Surfing</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/category/kitesurfing">Kitesurfing</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/category/standup-paddling">SUP</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/category/windsurfing">Windsurfing</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/t/pros-instructors-equipment-travel/264">Pros</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/t/what-is-talksurf-com/265">About</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/faq">FAQ</a>
</span>
</div>
</div>
「いいね!」 5

はい、こちらで確認しましたが、コード内で talksurf の画像がどこに含まれているのか分かりません。

背景画像の元は確認できますが、背景画像の上に浮かんでいる左側の ‘talksurf’ 画像の場所が分かりません。

設定 > ブランディング > ロゴに ‘talksurf’ を画像として追加すると、画像が小さくなってしまいます。Discourse が元の 120px の高さを 31px まで縮小してしまうためです。Talksurf は 31px よりもはるかに高い画像です。

@Paul-Reed @pfaffman の助けを借りてみてはいかがでしょうか?私はこれを設定したことがないので、全くわかりません。

「いいね!」 1

少し CSS を追加するだけで、ヘッダーを高くすることができます。お手伝いできますが、このトピックからは少し外れるので、新しいサポートトピックを作成することをお勧めします。

数日前に作成した既存のトピックがあります - Image not filling header container
そこで続けてもよろしいでしょうか?

「いいね!」 1