Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В статье рассматриваются установка discourse в среде разработки, затем в среде эксплуатации, запуск sidekiq и начальная настройка (кроме настройки электронной почты, необходимой для активации аккаутнов по е-мэйл и рассылки уведомлений, а также https).
1. Подключаемся к СУБД PostgreSQL с помощью psql -U postgres и создаем базу данных discourse_development и пользователя discourse_user, которому даем права доступа к этой базе данных.
Далее также в консоли psql подключаемся к созданной базе данных, выполняем пару команд и выходим.
2. Клонируем файлы discourse. Если у Вас версия PostgreSQL ниже 12 (psql --version), откатываем их к версии 2.4.0.beta11, которая вышла 13 февраля 2020 года (если я правильно прочитал git log).
Для этого. во-первых, есть команда
Для отката к февральской версии вводим
3. Устанавливаем гемы командой bundle install, предварительно удалив/переименовав Gemfile.lock
4. В config/database.yml добавляем значения username и password, а также строки encoding: utf8 и template: template0 и запускаем bundle exec rake db:migrate.
5. Запускаем веб-сервер для Rails командой
6. Настраиваем обратный прокси-сервер nginx, добавляем в config/environments/development.rb строку
Скриншот 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 командой
Затем указываем в нем значения db_name, db_username, db_password, а также hostname (discourse, discourse_user, your_preferred_password, discourse.domain.name соответственно).
3. Устанавливаем необходимые пакеты командой
и выполняем команду, для выполнения которой без ошибок мы их установили:
4. Устанавливаем еще один необходимый для следующей команды пакет с помощью
и вводим команду, для выполнения которой без ошибок мы его установили
5. Добавляем строки location /assets/ { ... и location /images/ { ... (см. скриншот 1) в конфигурационный файл nginx, если их там еще нет и перезапускаем nginx.
6. Остановка unicorn (см. команду выше) и запуск его в среде эксплуатации командой
1. Создаем учетную запись администратора командой
и перезапускаем unicorn.
2. Для запуска sidekiq в файле config/sidekiq.yml копируем строки конфигурации для среды разработки для среды эксплуатации (см. скриншот 2) и добавляем в config/environments/production.rb строку (в случае когда в ОС установлена Redis 3.0.6)
Скриншот 2.
После этого запускаем sidekiq командой
3. Проверяем существование запущенного процесса sidekiq командой
Открыв в браузере адрес Вашего форума и авторизовавшись на нем с учетными данными из п.1 части «Запуск sidekiq», Вы можете увидеть темы, посвященные начальной настройке, и прочитать их.
Скриншот 3. После авторизации в discourse
Используемая при написании статьи инструкция:
Install Discourse Forum Software on Ubuntu 18.04 Without Docker
Установка в среде разработки
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