Здравствуйте,
После успешного слияния двух форумов на тестовом сервере в апреле мы решили окончательно объединить их.
Следуя процедуре, которую я использовал тогда, я столкнулся с ошибкой подключения к PostgreSQL при запуске скрипта слияния.
Я занимаюсь этим уже четыре дня, но, не будучи разработчиком, испытываю трудности с поиском причины проблемы.
Заранее спасибо.
Вот текст ошибки:
discourse@serveur-app:/var/www/discourse$ IMPORT=1 DB_NAME=copyme DB_PASS=passwdDB SOURCE_BASE_URL=http://old.forum.fr UPLOADS_PATH=/var/www/discourse/public/uploads/default bundle exec ruby script/bulk_import/discourse_merger.rb
Loading application...
Traceback (most recent call last):
5: from script/bulk_import/discourse_merger.rb:817:in `<main>'
4: from script/bulk_import/discourse_merger.rb:817:in `new'
3: from script/bulk_import/discourse_merger.rb:22:in `initialize'
2: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.4.2/lib/pg.rb:69:in `connect'
1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.4.2/lib/pg/connection.rb:661:in `new'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.4.2/lib/pg/connection.rb:708:in `connect_to_hosts': could not match 0 port numbers to 1 hosts (PG::ConnectionBad)
Я воспользуюсь случаем, чтобы привести полную процедуру слияния.
Эта процедура основана на оригинальном посте и проблемах, возникших во время моих тестов
Эта процедура работала в апреле (см. эту тему).
- Начните с обновленных резервных копий обоих форумов,
- Установите Discourse,
- Импортируйте обе резервные копии,
- Восстановите форум, который нужно сохранить.
В SSH:
- Перейдите в папку
/var/discourse - Войдите в приложение:
./launcher enter app.
Создание базы данных.
su postgres
psql
CREATE DATABASE copyme ENCODING='utf8';
Смена пароля пользователя postgres
\postgres password
Выход из psql:
\q
Выход из пользователя postgres
exit
Переключение на пользователя discourse
su discourse
Распаковка резервной копии старого форума
Перейдите в папку: cd public/backups/default
Распакуйте резервную копию старого форума командой: tar xvzf old.forum.tar.gz
Копирование из БД.old в БД copyme.
gunzip < dump.sql.gz | psql -d copyme
Выход из пользователя discourse
exit
Зависимости
Зависимости: nano, sqlite3 и mysql2
(от имени root в /var/www/discourse)
apt update && apt upgrade -y
apt-get install -y nano sqlite3 libsqlite3-dev mariadb-server libmariadb-dev -y
gem install sqlite3 mysql2
ruby bbcode to md
git clone https://github.com/nlalonde/ruby-bbcode-to-md.git
cd ruby-bbcode-to-md/
gem build ruby-bbcode-to-md.gemspec
gem install ruby-bbcode-to-md-*.gem
cd ./..
Установка Tiny_tds
Сначала необходимо установить FreeTDS, затем Tiny_tds.
Для FreeTDS:
wget http://www.freetds.org/files/stable/freetds-1.3.12.tar.gz
tar -xzf freetds-1.3.12.tar.gz
cd freetds-1.3.12
./configure --prefix=/usr/local --with-tdsver=7.3
make
make install
Для Tiny_tds:
gem install tiny_tds
gem install ruby-bbcode-to-md
cd ./..
Скрипт
su discourse
bundle config unset deployment
IMPORT=1 bundle install
IMPORT=1 DB_NAME=copyme DB_PASS=passwdDB SOURCE_BASE_URL=http://old.forum.fr UPLOADS_PATH=/var/www/discourse/public/uploads/default bundle exec ruby script/bulk_import/discourse_merger.rb
Переведено с помощью www.DeepL.com/Translator (бесплатная версия)