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

Как установить Discourse Forum с Nginx на Ubuntu 16.04


Discourse — это бесплатное программное обеспечение с открытым исходным кодом для создания Интернет-форумов и списков рассылки. Он был создан в 2013 году и написан на языках программирования Ruby и Javascript. Программное обеспечение Discourse Forum используется многими организациями, включая Codeacademy, Udacity, Twitter Developers и Docker Community Forum.

В этом руководстве мы пошагово покажем вам, как установить и настроить Discourse Forum с веб-сервером Nginx в Ubuntu 16.04. В частности, мы покажем вам, как установить программное обеспечение форума Discourse, настроить Nginx в качестве обратного прокси-сервера для приложения Discourse и защитить программное обеспечение форума Discourse с помощью бесплатного SSL от Letsencrypt.

Что мы будем делать

  1. Установите Docker в Ubuntu 16.04.
  2. Установите и настройте программное обеспечение Discourse Forum.
  3. Создание SSL Letsencrypt в Ubuntu 16.04
  4. Установите и настройте Nginx в качестве обратного прокси-сервера для Discourse.
  5. Интернет-установщик Discourse
  6. Дополнительная конфигурация Discourse

Предпосылки

  • Убунту 16.04
  • Привилегии root
  • Учетная запись SMTP — Mailgun, SendGrid, Mailjet и т. д.

Шаг 1. Установите Docker на Ubuntu 16.04.

Программное обеспечение Discourse написано на Ruby и Javascript с использованием PostgreSQL в качестве основной базы данных и Redis в качестве кэша и для временных данных. Мы установим Discourse в контейнере Docker.

Процесс установки будет осуществляться на Ubuntu 16.04. Итак, для начала установите Docker с помощью приведенной ниже команды.

wget -qO- https://get.docker.com/ | sh

После завершения установки проверьте службу Docker и убедитесь, что она уже запущена в системе.

systemctl status docker

А также убедитесь, что Docker находится в загрузочном приложении при запуске.

systemctl is-enabled docker

Шаг 2. Установите и настройте дискуссионный форум.

На этом этапе мы установим и настроим программное обеспечение Discourse. Мы загрузим сценарий создания дискурса докеров, настроим его в соответствии с нашими требованиями, а затем создадим новый контейнер Docker для программного обеспечения форума дискурса.

Создайте новый каталог /var/discourse и клонируйте скрипт установщика.

mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse

Теперь перейдите в каталог discourse и скопируйте пример файла docker-compose.

cd /var/discourse
cp samples/standalone.yml containers/app.yml

Отредактируйте файл app.yml с помощью редактора vim.

vim containers/app.yml

Настроить сопоставление портов Docker

По умолчанию все запросы HTTP и HTTPS будут обрабатываться прокси-сервером Docker. И в этом руководстве мы будем использовать для этой цели Nginx — все HTTP и HTTPS будут обрабатываться веб-сервером Nginx.

Поэтому нам нужно изменить конфигурацию сопоставления портов докера. Контейнер Discourse будет иметь только HTTP-соединение, а хост будет открывать новый порт 2045 и сопоставлять его с портом 80 контейнера.

Раскомментируйте строку HTTPS и измените строку HTTP на новый порт 2045.

expose:
  - "2045:80"   # http
#  - "443:443" # https

Настройка доменного имени Discourse

Введите собственное доменное имя для дискурса, установленного в строке DISCOURSE_HOSTNAME, как показано ниже.

DISCOURSE_HOSTNAME: 'discourse.hakase-labs.me'

И введите свой адрес электронной почты в строку DISCOURSE_DEVELOPER_EMAIL.

DISCOURSE_DEVELOPER_EMAILS: ''

SMTP-конфигурация

Это самая важная конфигурация для Discourse Software. Убедитесь, что у вас есть учетная запись SMTP для установки Discourse — вы можете купить или попробовать бесплатную учетную запись SMTP в Mailgun, Mailjet или SendGrid.

В этом руководстве мы будем использовать учетную запись SMTP бесплатного уровня от Mailgun. Раскомментируйте конфигурацию SMTP и введите свою учетную запись, как показано ниже.

  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME:
  DISCOURSE_SMTP_PASSWORD: mypassword

Сохранить и выйти.

Затем создайте новый образ Discourse Docker на основе конфигурации шаблона app.yml.

sudo ./launcher bootstrap app

После этого запустите/инициализируйте новый контейнер Discourse с помощью приведенной ниже команды.

sudo ./launcher start app

Контейнер Discourse должен быть запущен и запущен — проверьте его с помощью команды docker.

docker ps -a

Проверьте открытый порт хоста с помощью netstat и убедитесь, что новый порт 2045 docker-proxy есть в списке.

netstat -plntu

Программное обеспечение Discourse Forum было установлено в док-контейнере на хосте Ubuntu 16.04.

Шаг 3 — Создайте SSL Letsencrypt в Ubuntu 16.04

Форум Discourse будет работать по безопасному HTTP-соединению и будет обрабатываться веб-сервером Nginx. В этом руководстве мы будем использовать бесплатный SSL от Letsencrypt, и нам нужно установить клиент letsencrypt на сервер.

Установите letsencrypt с помощью приведенной ниже команды apt.

sudo apt install letsencrypt -y

Теперь сгенерируйте новые SSL-сертификаты с помощью команды letsencrypt.

letsencrypt certonly

Введите свой адрес электронной почты для обновления уведомления и нажмите OK.

Для Letsencrypt TOS (Условия обслуживания) выберите «Принимаю».

Теперь введите доменное имя дискурса discourse.hakase-labs.me.

И когда он будет завершен, вы получите результат, как показано ниже.

Новые сертификаты SSL от letsencrypt были сгенерированы в каталоге /etc/letsencrypt/live.

Шаг 4. Установите и настройте Nginx в качестве обратного прокси-сервера для контейнера Discourse.

На этом этапе мы установим веб-сервер Nginx и настроим его в качестве обратного прокси-сервера для контейнера Discourse, работающего на порту 2045.

Установите Nginx с помощью приведенной ниже команды apt.

sudo apt install nginx -y

Теперь запустите Nginx и включите его во время загрузки с помощью команды systemctl.

systemctl start nginx
systemctl enable nginx

Nginx установлен и работает на HTTP-порту 80. Вы можете проверить это с помощью netstat.

netstat -plntu

Веб-сервер Nginx был установлен на сервер Ubuntu 16.04.

Далее нам нужно создать новый файл виртуального хоста для контейнера Discourse. Перейдите в каталог конфигурации nginx и создайте новый файл дискурса с помощью редактора vim.

cd /etc/nginx/
vim sites-available/discourse

Теперь вставьте следующую конфигурацию виртуального хоста Discourse nginx.

server {
    listen 80; listen [::]:80;
    server_name discourse.hakase-labs.me;
 
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl http2; 
    server_name discourse.hakase-labs.me;

    ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.me/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.me/privkey.pem;
    include /etc/nginx/snippets/ssl.conf;
 
    location / {
        proxy_pass http://discourse.hakase-labs.me:2045/;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect http://discourse.hakase-labs.me:2045/ https://discourse.hakase-labs.me;
    }
}

Сохранить и выйти.

Примечание.

  • Все HTTP-запросы будут автоматически перенаправлены на HTTPS-соединение.
  • Измените конфигурацию SSL, указав собственный путь к каталогу.
  • Есть дополнительная конфигурация SSL.

Теперь создайте новый дополнительный файл конфигурации ssl ssl.conf.

vim snippets/ssl.conf

Вставьте следующую конфигурацию в файл.

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Сохранить и выйти.

А теперь активируйте виртуальный хост discourse с помощью команды ln -s, как показано ниже.

ln -s /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/

Проверяет конфигурацию и убеждается в отсутствии ошибок, затем перезапускает службу.

nginx -t
systemctl restart nginx

Установка и настройка Nginx в качестве обратного прокси для контейнера Discourse завершена.

Шаг 5. Веб-установщик Discourse

Откройте веб-браузер и перейдите по URL-адресу дискурса.

http://discourse.hakase-labs.me

И вы будете перенаправлены на защищенное HTTP-соединение. Нажмите кнопку «Регистрация», чтобы создать нового пользователя-администратора.

Теперь введите имя пользователя и пароль администратора, а затем нажмите «Регистрация».

И вы получите новое подтверждение по электронной почте об активации пользователя с правами администратора.

Ниже приведен образец сообщения электронной почты для подтверждения учетной записи Discourse. Нажмите на ссылку, чтобы подтвердить и активировать учетную запись администратора.

И вы должны получить страницу дискурса, как показано ниже. Нажмите кнопку Нажмите здесь, чтобы активировать свою учетную запись.

Теперь вы можете настроить свой собственный форум Discourse. Нажмите кнопку «Далее», и вам нужно настроить Discourse Forum с шагом 13. Или вы можете настроить его позже, нажав «Возможно позже».

Ниже показан Discourse Forum, установленный на веб-сервере Nginx и HTTPS в Ubuntu 16.04.

Ниже приведена панель администратора Discourse.

Discourse Forum был установлен с Nginx в качестве обратного прокси-сервера на сервере Ubuntu 16.04.

Шаг 6 - Дополнительная настройка Discourse

При установке Discourse вы можете столкнуться с проблемой, когда вы не получаете подтверждение по электронной почте для активации пользователя с правами администратора.

Чтобы решить проблему, убедитесь, что у вас есть правильная учетная запись SMTP в конфигурации app.yml. Или вы можете активировать учетную запись администратора вручную с вашего сервера.

Чтобы активировать учетную запись администратора вручную, перейдите в каталог /var/discourse.

cd /var/discourse

Теперь получите доступ к контейнеру дискурса с помощью приведенной ниже команды.

./launcher enter app

И активируйте первого пользователя-администратора с помощью команды rails, как показано ниже.

rails c
u=User.last
u.admin=true
u.activate
u.save

И теперь вы можете войти на форум Discourse под своим именем пользователя и паролем.

Рекомендации

  • https://github.com/discourse/discourse/tree/master/docs