Поиск по сайту:

Как установить Discourse Forum на Ubuntu 18.04 LTS


Это руководство существует для этих версий ОС

  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 18.04 (Bionic Beaver)

На этой странице

  1. Требования
  2. Начало работы
  3. Установка и настройка PostgreSQL
  4. Установить Руби
  5. Установка и настройка Discourse
  6. Настройка Nginx для Discourse
  7. Доступ к веб-интерфейсу 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.