Как установить Discourse Forum на Ubuntu 18.04 LTS
Это руководство существует для этих версий ОС
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 18.04 (Bionic Beaver)
На этой странице
- Требования
- Начало работы
- Установка и настройка PostgreSQL
- Установить Руби
- Установка и настройка Discourse
- Настройка Nginx для Discourse
- Доступ к веб-интерфейсу Discourse
Discourse — это бесплатное приложение для дискуссионных форумов с открытым исходным кодом, которое можно использовать в качестве списка рассылки и чата. Это очень мощная и гибкая платформа, которая позволяет пользователям входить в систему с помощью единого входа. Его можно интегрировать с WordPress, Google Analytics, Zendesk, Patreon, Slack и многими другими. Он поддерживает уведомления по электронной почте, ответы по электронной почте и различные методы аутентификации, такие как социальные сети и единый вход. Он простой, удобный в использовании, плоский и имеет встроенную мобильную раскладку.
В этом руководстве мы узнаем, как установить и настроить форум Discourse на сервере Ubuntu 18.04.
Требования
- Сервер под управлением Ubuntu 18.04.
- На вашем сервере настроен статический IP-адрес 192.168.0.101.
- Для вашего сервера установлен пароль root.
Начиная
Во-первых, вам нужно будет обновить свой сервер до последней версии. Вы можете сделать это с помощью следующей команды:
apt-get update -y
apt-get upgrade -y
После обновления вашего сервера перезагрузите систему, чтобы применить все изменения.
Далее вам нужно будет настроить полное доменное имя на вашем сервере. Вы можете сделать это с помощью следующей команды:
hostnamectl set-hostname test.example.com
Затем откройте файл /etc/hosts и добавьте следующую строку:
nano /etc/hosts
Добавьте следующую строку:
192.168.0.101 test.example.com test
Сохраните и закройте файл, когда закончите. Затем выполните следующую команду, чтобы применить все изменения:
hostname -f
Далее вам нужно будет установить некоторые необходимые пакеты в вашу систему. Вы можете установить их с помощью следующей команды:
apt-get install nginx curl git wget unzip nano -y
Как только вы это сделаете, вы можете перейти к следующему шагу.
Установите и настройте PostgreSQL.
Во-первых, вам нужно будет установить PostgreSQL в вашу систему. Вы можете установить его, выполнив следующую команду:
apt-get install postgresql -y
После установки PostgreSQL войдите в консоль PostgreSQL с помощью следующей команды:
sudo -u postgres psql
Затем создайте базу данных и пользователя для Discourse с помощью следующей команды:
postgres=#CREATE DATABASE discoursedb;
postgres=#CREATE USER discourseuser;
postgres=#ALTER USER discourseuser WITH ENCRYPTED PASSWORD 'password';
postgres=#ALTER DATABASE discoursedb OWNER TO discourseuser;
Затем подключитесь к discoursedb и создайте расширение hstore и pg_trgm с помощью следующей команды:
postgres=#\c discoursedb;
postgres=#CREATE EXTENSION hstore;
postgres=#CREATE EXTENSION pg_trgm;
Наконец, выйдите из PostgreSQL с помощью следующей команды:
postgres=#\q
Установить Руби
Далее вам нужно будет установить последнюю версию Ruby в вашу систему. Вы можете установить Ruby с помощью RVM.
Сначала установите защиту конфиденциальности GNU с помощью следующей команды:
apt-get install gnupg2 -y
Затем импортируйте общедоступный менеджер версий Ruby с помощью следующей команды:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Вы должны увидеть следующий вывод:
gpg: keybox '/root/.gnupg/pubring.kbx' created gpg: key 105BD0E739499BDB: 6 signatures not checked due to missing keys gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key 105BD0E739499BDB: public key "Piotr Kuczynski <>" imported gpg: key 3804BB82D39DC0E3: 103 signatures not checked due to missing keys gpg: key 3804BB82D39DC0E3: public key "Michal Papis (RVM signing) <>" imported gpg: no ultimately trusted keys found gpg: Total number processed: 2 gpg: imported: 2
Затем установите RVM с Ruby и Rails по умолчанию с помощью следующей команды:
curl -sSL https://get.rvm.io | bash -s stable --rails
После установки Ruby и Rails вам потребуется исходный код RVM-скриптов. Вы можете сделать это с помощью следующей команды:
source /usr/local/rvm/scripts/rvm
Теперь вы можете увидеть версии Ruby с помощью следующей команды:
rvm list
Вы должны увидеть следующий вывод:
=* ruby-2.6.3 [ x86_64 ] # => - current # =* - current && default # * - default
Установите и настройте дискурс
Во-первых, вам нужно скачать последнюю версию Discourse из репозитория Git. Вы можете скачать его с помощью следующей команды:
cd /var/www/
git clone https://github.com/discourse/discourse.git
Вывод:
Cloning into 'discourse'... remote: Enumerating objects: 57, done. remote: Counting objects: 100% (57/57), done. remote: Compressing objects: 100% (37/37), done. remote: Total 403387 (delta 26), reused 34 (delta 20), pack-reused 403330 Receiving objects: 100% (403387/403387), 267.39 MiB | 235.00 KiB/s, done. Resolving deltas: 100% (252384/252384), done. Checking out files: 100% (27055/27055), done.
Затем проверьте последнюю стабильную версию Discourse с помощью следующей команды:
cd discourse
git checkout v2.2.4
Затем установите менеджер зависимостей Ruby с помощью следующей команды:
/usr/local/rvm/src/ruby-2.6.3/bin/gem install bundler -v '1.17.3'
Вы должны увидеть следующий вывод:
Fetching bundler-1.17.3.gem Successfully installed bundler-1.17.3 Parsing documentation for bundler-1.17.3 Installing ri documentation for bundler-1.17.3 Done installing documentation for bundler after 15 seconds 1 gem installed
Далее вам нужно будет установить несколько дополнительных пакетов для компиляции исходного кода. Вы можете установить их все с помощью следующей команды:
apt-get install gcc ruby-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick redis-server optipng pngquant jhead jpegoptim gifsicle -y
Затем установите все зависимости, необходимые Discourse, с помощью следующей команды:
RAILS_ENV=production bundle install --path vendor/bundle/
Затем переименуйте файл конфигурации Discourse по умолчанию с помощью следующей команды:
mv config/discourse_defaults.conf config/discourse.conf
Затем откройте файл discourse.conf и определите настройки вашей базы данных:
nano config/discourse.conf
Измените следующие строки:
db_host = localhost db_port = 5432 db_name = discoursedb db_username = discourseuser db_password = password hostname = "test.example.com"
Сохраните и закройте файл. Затем отредактируйте файл конфигурации рабочей среды с помощью следующей команды:
nano /var/www/discourse/config/environments/production.rb
Добавьте следующую строку в качестве третьей строки
require 'uglifier'
Затем найдите следующую строку:
config.assets.js_compressor = :uglifier
И замените его следующим:
config.assets.js_compressor = Uglifier.new(harmony: true)
Сохраните и закройте файл, когда закончите. Затем подготовьте Discourse к работе с помощью следующей команды:
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile
Затем откройте файл puma.rb с помощью следующей команды:
nano /var/www/discourse/config/puma.rb
Найдите следующую строку:
APP_ROOT = '/home/discourse/discourse'
Замените его следующей строкой:
APP_ROOT = '/var/www/discourse'
Сохраните и закройте файл, когда закончите. Затем создайте каталог сокетов и идентификаторов процессов с помощью следующей команды:
mkdir /var/www/discourse/tmp/sockets/
mkdir /var/www/discourse/tmp/pids/
Наконец, запустите Discourse, выполнив следующую команду:
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Вы должны увидеть следующий вывод:
[29834] Puma starting in cluster mode... [29834] * Version 3.11.4 (ruby 2.6.3-p62), codename: Love Song [29834] * Min threads: 8, max threads: 32 [29834] * Environment: development [29834] * Process workers: 4 [29834] * Preloading application [29834] * Listening on unix:///var/www/discourse/tmp/sockets/puma.sock [29834] ! WARNING: Detected 3 Thread(s) started in app boot: [29834] ! #<Thread:/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus.rb:667 sleep> - /var/www/html/discourse/vendor/bundle/ruby/2.6.0/gems/hiredis-0.6.1/lib/hiredis/ext/connection.rb:19:in `read' [29834] ! #<Thread:/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/html/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus/timer_thread.rb:123:in `sleep' [29834] ! #<Thread:/var/www/discourse/lib/discourse.rb:584 sleep> - /var/www/discourse/lib/discourse.rb:587:in `sleep' [29834] * Daemonizing...
Затем создайте учетную запись администратора для доступа к веб-интерфейсу Discourse с помощью следующей команды:
cd /var/www/discourse
RAILS_ENV=production bundle exec rake admin:create
Укажите свой адрес электронной почты и пароль, как показано ниже:
Email: Password: Repeat password: Ensuring account is active! Account created successfully with username example Do you want to grant Admin privileges to this account? (Y/n) Y Your account now has Admin privileges!
Затем перезапустите службу Discourse с помощью следующей команды:
RAILS_ENV=production bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart
Настройте Nginx для обсуждения
Далее вам нужно будет настроить Nginx в качестве обратного прокси-сервера для доступа к веб-интерфейсу Discourse через порт 80.
Сначала скопируйте пример файла конфигурации виртуального хоста Nginx с помощью следующей команды:
cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
Затем откройте файл discourse.conf с помощью следующей команды:
nano /etc/nginx/conf.d/discourse.conf
Внесите следующие изменения:
#upstream discourse { # server unix:/var/www/discourse/tmp/sockets/thin.0.sock; # server unix:/var/www/discourse/tmp/sockets/thin.1.sock; # server unix:/var/www/discourse/tmp/sockets/thin.2.sock; # server unix:/var/www/discourse/tmp/sockets/thin.3.sock; #} upstream discourse { server unix:/var/www/discourse/tmp/sockets/puma.sock; } server_name test.example.com;
Сохраните и закройте файл, когда закончите. Затем создайте каталог кеша с помощью следующей команды:
mkdir -p /var/nginx/cache/
Затем проверьте Nginx на наличие синтаксической ошибки с помощью следующей команды:
nginx -t
Вывод:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Далее перезапустите Nginx, чтобы применить все изменения:
systemctl restart nginx
Вы также можете проверить статус Nginx с помощью следующей команды:
systemctl status nginx
Вывод:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2019-05-26 04:19:12 UTC; 29min ago Docs: man:nginx(8) Process: 1052 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 848 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 1065 (nginx) Tasks: 3 (limit: 1114) CGroup: /system.slice/nginx.service ??1065 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??1066 nginx: worker process ??1067 nginx: cache manager process May 26 04:19:04 ubuntu1804 systemd[1]: Starting A high performance web server and a reverse proxy server... May 26 04:19:12 ubuntu1804 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument May 26 04:19:12 ubuntu1804 systemd[1]: Started A high performance web server and a reverse proxy server.
Вам также необходимо скопировать следующий файл JS, если вы получаете какую-либо ошибку при доступе к веб-интерфейсу Discourse:
cp /var/www/discourse/public/assets/_vendor-3eae3eec8fba033cb1b5af6c103a5b8781caa69cf97fe7773ba89ba68980b263.js /var/www/discourse/public/assets/vendor-3eae3eec8fba033cb1b5af6c103a5b8781caa69cf97fe7773ba89ba68980b263.js
Доступ к веб-интерфейсу Discourse
Discourse теперь установлен и настроен, пришло время получить доступ к веб-интерфейсу Discourse.
Откройте веб-браузер и введите URL-адрес http://test.example.com. Вы будете перенаправлены на следующую страницу:
Теперь нажмите на кнопку Войти. Вы должны увидеть следующую страницу:
Теперь укажите свое имя пользователя и пароль. Затем нажмите кнопку «Войти». Вы должны увидеть следующую страницу:
Теперь вы можете запустить мастер установки, используя URL-адрес http://test.example.com/wizard в веб-браузере. Вы должны увидеть экран приветствия на следующей странице:
Теперь выберите свой язык и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:
Здесь введите тему и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:
Здесь выберите «Общедоступный» и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:
Здесь укажите свой адрес электронной почты и контактную страницу. Затем нажмите кнопку Далее. Вы должны увидеть следующую страницу:
Здесь укажите название и адрес вашей компании. Затем нажмите кнопку Далее. Вы должны увидеть следующую страницу:
Теперь выберите тему и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:
Теперь загрузите свой логотип и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:
Теперь выберите «Значки» и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:
Теперь выберите свою домашнюю страницу и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:
Теперь выберите Emoji по своему усмотрению и нажмите кнопку «Далее». Вы должны увидеть следующую страницу:
Теперь пригласите своих сотрудников присоединиться к этому форуму и нажмите кнопку «Далее». После завершения установки Вы должны увидеть следующую страницу:
Теперь нажмите кнопку «Готово». Вы будете перенаправлены на панель управления Discourse, показанную на следующей странице:
Поздравляем! вы успешно установили и настроили форум Discourse на сервере Ubuntu 18.04.