В статье рассматриваются установка discourse в среде разработки, затем в среде эксплуатации, запуск sidekiq и начальная настройка (кроме настройки электронной почты, необходимой для активации аккаутнов по е-мэйл и рассылки уведомлений, а также https).

Установка в среде разработки


1. Подключаемся к СУБД PostgreSQL с помощью psql -U postgres и создаем базу данных discourse_development и пользователя discourse_user, которому даем права доступа к этой базе данных.

create database discourse_development;
create user discourse_user;
alter user discourse_user with encrypted password 'your_preferred_password';
alter database discourse_development owner to discourse_user;

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

\c discourse_development;
create extension hstore;
create extension pg_trgm;
\q

2. Клонируем файлы discourse. Если у Вас версия PostgreSQL ниже 12 (psql --version), откатываем их к версии 2.4.0.beta11, которая вышла 13 февраля 2020 года (если я правильно прочитал git log).

Для этого. во-первых, есть команда

git clone https://github.com/discourse/discourse.git

Для отката к февральской версии вводим

git checkout 2136d4b5d535ca1fb83bd015502741d53301a61f

3. Устанавливаем гемы командой bundle install, предварительно удалив/переименовав Gemfile.lock

4. В config/database.yml добавляем значения username и password, а также строки encoding: utf8 и template: template0 и запускаем bundle exec rake db:migrate.

5. Запускаем веб-сервер для Rails командой

UNICORN_PORT=3002 bundle exec unicorn -c config/unicorn.conf.rb

6. Настраиваем обратный прокси-сервер nginx, добавляем в config/environments/development.rb строку config.hosts << "discourse.domain.name"


Скриншот 1. Содержимое файла /etc/nginx/sites-enabled/discourse.conf

Прим.1 Строки location /assets/ {… и location /images/ { ... нужны для запуска в среде эксплуатации, для запуска в среде разработки их добавлять вообще-то еще рано.

Перезапускаем nginx командой /etc/init.d/nginx restart

7. Перезапускаем unicorn: для остановки вводим kill -QUIT `cat tmp/pids/unicorn.pid`, для повторного запуска вводим команду из п.5. Готово.

Установка в среде разработки


1. Создаем базу данных аналогичным образом, только имя базы данных указываем не discourse_development, а discourse.

2. Создаем файл config/discourse.conf командой

cp config/discourse_defaults.conf config/discourse.conf

Затем указываем в нем значения db_name, db_username, db_password, а также hostname (discourse, discourse_user, your_preferred_password, discourse.domain.name соответственно).

3. Устанавливаем необходимые пакеты командой

sudo apt install optipng pngquant jhead jpegoptim gifsicle 

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

RAILS_ENV=production bundle exec rake db:migrate 

4. Устанавливаем еще один необходимый для следующей команды пакет с помощью

sudo apt install brotli

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

RAILS_ENV=production bundle exec rake assets:precompile

5. Добавляем строки location /assets/ { ... и location /images/ { ... (см. скриншот 1) в конфигурационный файл nginx, если их там еще нет и перезапускаем nginx.

6. Остановка unicorn (см. команду выше) и запуск его в среде эксплуатации командой

RAILS_ENV=production UNICORN_PORT=3002 bundle exec unicorn -c config/unicorn.conf.rb

Запуск sidekiq


1. Создаем учетную запись администратора командой

RAILS_ENV=production bundle exec rake admin:create

и перезапускаем unicorn.

2. Для запуска sidekiq в файле config/sidekiq.yml копируем строки конфигурации для среды разработки для среды эксплуатации (см. скриншот 2) и добавляем в config/environments/production.rb строку (в случае когда в ОС установлена Redis 3.0.6)

Redis.exists_returns_integer = false


Скриншот 2.

После этого запускаем sidekiq командой

bundle exec sidekiq -C config/sidekiq.yml

3. Проверяем существование запущенного процесса sidekiq командой

ps aux | grep sidekiq

Начальная настройка


Открыв в браузере адрес Вашего форума и авторизовавшись на нем с учетными данными из п.1 части «Запуск sidekiq», Вы можете увидеть темы, посвященные начальной настройке, и прочитать их.


Скриншот 3. После авторизации в discourse

Используемая при написании статьи инструкция:

Install Discourse Forum Software on Ubuntu 18.04 Without Docker