Как обновить очень старый сайт 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/docker, а не /var/discourse.
  2. У меня есть свежая резервная копия в S3.
  3. Я попробовал [изменить “templates/postgres.template.yml” на “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

Привет, Джастин! Рад снова тебя видеть. В качестве жеста доброй воли, поскольку ты используешь Discourse уже очень давно, я с радостью оплачу работу @pfaffman, чтобы он помог тебе здесь. :hugs:

Просто скажи ему связаться со мной для получения оплаты.

Привет, @justin_gordon. Сайт уже работает? Если нет, можешь прислать мне информацию по S3?

Ты можешь передать её мне относительно безопасно по ссылке: Redirecting…

Я предполагаю, что это не срочный случай, и что начало работы в понедельник — это нормально? Если это срочно, напиши об этом в своём сообщении, и я постараюсь начать раньше.

Ты также можешь отправить мне личное сообщение здесь со своим адресом электронной почты.

О боже, @codinghorror, ты сделал мой день!

@pfaffman, да, никакой срочности. Я обновлял, чтобы ответить на вопрос «как вы сделали такой красивый заголовок на talksurf.com».

Как только talksurf.com снова заработает, я обязательно добавлю здесь несколько заметок, которые будут полезны другим.

Джастин, мне теперь стыдно :slightly_frowning_face:
Прошло всего 3 дня с начала использования Discourse, а я уже устраиваю хаос!

Привет, @Paul-Reed и @codinghorror,

@pfaffman восстановил мою работу… проделал потрясающую работу! Сайт выглядит как новый, а Discourse просто великолепен, ведь всё необходимое было в резервных копиях!

Какая удивительная технология от Discourse!

@pfaffman рассказал мне следующее:

  1. Установка из двух контейнеров описана здесь.
  2. Восстановление из резервной копии на чистой установке оказалось самым простым путём для очень старой версии.
  3. Единственный файл, полезный за пределами резервных копий — это /var/discourse/containers/app.yml. И мне нужно делать ежедневные резервные копии, а не раз в 7 дней!

Важный урок, который я знал, но должен был вспомнить:

Просто потому, что вы думаете, что что-то займёт 10 минут, это не всегда так. Я взялся за это обновление, потому что хотел дать @Paul-Reed хороший совет по поводу заголовка. Ой! И я не только узнал это, но мы часто забываем об этом. Моя специализация — улучшение работы сайтов на React и Ruby on Rails через мою консалтинговую компанию https://www.shakacode.com и мой проект с открытым исходным кодом 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.

DevOps с использованием Docker — это то, что я могу делать, но это отнимает много времени от того, что я пытаюсь достичь!

Поэтому, учитывая всё вышесказанное, я думаю о том, чтобы попросить @pfaffman помочь мне с обновлением моей главной страницы для https://forum.shakacode.com/.

Так что огромное спасибо @codinghorror и @pfaffman за всю помощь!


И если вам интересно, вот исправление для пользовательского заголовка, которое стало поводом для этого обновления моего старого сайта на Discourse.

Пользовательский заголовок

Прежде всего, вместо того чтобы заниматься мелкими деталями, я рекомендую обратиться к @pfaffman по адресу https://support.literatecomputing.com/. Кстати, я попрошу @pfaffman помочь мне, если захочу создать что-то более впечатляющее в этой области!

Но для тех, кто предпочитает делать всё самостоятельно, я думаю, что здесь есть все полезные части:

Насколько мне известно, всё остальное пустое.

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">Главная</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/category/surfing/doug-silva">Дуг Сильва</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/category/surfing">Серфинг</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/category/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">Виндсерфинг</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/t/pros-instructors-equipment-travel/264">Профи</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/t/what-is-talksurf-com/265">О нас</a><span class="spacer"> | </span>
  <a href="http://forum.talksurf.com/faq">FAQ</a>
</span>
</div>
</div>

Да, я видел это здесь, но не знаю, где в коде добавлено изображение talksurf.

Я вижу, откуда берется фоновое изображение, но не изображение ‘talksurf’ слева, которое плавает поверх фона.

Добавление ‘talksurf’ как изображения в Настройки > Брендинг > Логотип приводит к тому, что изображение становится намного меньше, так как Discourse уменьшает его с исходной высоты 120 пикселей до всего 31 пикселя. Talksurf намного выше, чем 31 пиксель.

@Paul-Reed, может, попробуй нанять @pfaffman для помощи? Я сам это настраивать не стал, поэтому ничего не знаю.

Вы можете увеличить высоту заголовка с помощью небольшого CSS-кода. Я могу помочь вам с этим, но предлагаю создать новую тему в разделе Support, так как это немного не по теме здесь.

У меня уже есть тема, которую я создал несколько дней назад — Image not filling header container
Можно ли продолжить обсуждение там?