Перенос форума fluxbb на discourse

Опубликовано  19 06 2021 
2 min на чтение

Для переноса нужно получить базу данных форума fluxbb, наверняка вы знаете как это сделать, но если нет, то вот. Данные для подключение к базе, которые вы создавали, или то, что предоставил хостер, при создании.

  • host_ip - ip или домен mysql.
  • user_db - имя пользователя базы
  • PASS_WORD_DB - пароль к базе
  • db_name - имя базы
# получение через ssh
ssh creio@125.120.10.54 "mysqldump -h host_ip -u user_db -pPASS_WORD_DB db_name" > ~/forum.sql

Login в docker

Копируем mysql дамп базы в докер контейнер и логинемся в него.

docker cp ~/forum.sql app:/var/www/discourse

# docker exec -it app /bin/bash --login
sudo ./launcher enter app

Установка mysql и запуск.

apt install -y mariadb-server mariadb-client libmariadb-dev
service mysql start

Создаем mysql базу, в которую выгрузим старые данные.

mysql -u root -p mysql
mysql> CREATE USER 'fluxbb'@'localhost' IDENTIFIED BY 'fluxbb';
mysql> CREATE DATABASE fluxbb;
mysql> GRANT ALL PRIVILEGES ON fluxbb.* TO 'fluxbb'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit

Логинимся под юзера discourse.

su discourse

Экспортируем базу данных fluxbb.

mysql -u fluxbb -p fluxbb < forum.sql
# pass
fluxbb

Добавляем зависимости в Gemfile.

echo "gem 'mysql2'" >> Gemfile
echo "gem 'redcarpet'" >> Gemfile
echo "gem 'ruby-bbcode-to-md', git: 'https://github.com/nlalonde/ruby-bbcode-to-md'" >> Gemfile
echo "gem 'reverse_markdown'" >> Gemfile

Установка зависимостей для корректной конвертации.

bundle config unset deployment
bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development

Данные для подключение к mysql, возможно у вас нет FLUXBB_PREFIX в базе и будет ошибка, попробуйте убрать это значение.

FLUXBB_HOST="localhost" FLUXBB_DB="fluxbb" FLUXBB_USER="fluxbb" FLUXBB_PW="fluxbb" FLUXBB_PREFIX="bb_" bundle exec ruby script/import_scripts/fluxbb.rb

Изменение домена, полезно выполнить на тестовом домене, а когда все готово изменить на основной, meta.discourse.org.

Обновление discourse

Первым делом стоит обновить сам сервер(ubuntu/debian).

apt-get update
apt-get dist-upgrade

Включить автообновления(не обязательно) и не везде это возможно, для убунту.

sudo dpkg-reconfigure -plow unattended-upgrades

Discourse работает в докере и используются скрипты для упрощения.

sudo su
cd /var/discourse
git pull
./launcher rebuild app

После обновления и запусков rebuild будут плодится контейнеры и images, которые забивают диск, но не используются.

# размер диска
df -h /
# размеры директорий
du -sh /var/lib/*

Удалить не нужные образы можно через docker, или через скрипт, имейте ввиду скрипт снесет все остановленные контейнеры и удалит все неиспользуемые образы. Дело в том, что если у вас работает, что-то еще кроме discourse в докере, то лучше работать именно самим docker-ом и удалять по id(7281bf55ce46).

# листинг контейнеров
docker ps -a
# удаление контейнеров(CONTAINER ID)
docker rm 8ee579ceabf7

# листинг образов
docker images
# удаление образов(IMAGE ID)
docker rmi 7281bf55ce46

# удаление всего скриптом
./launcher cleanup

Очистка системы apt.

apt-get autoclean
apt-get autoremove
Top