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

Как установить Discourse Forum с Nginx на CentOS 7


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

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

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

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

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

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

Предпосылки

  • СентОС 7
  • Привилегии root
  • Учетная запись SMTP — например, из Mailgun, SendGrid или Mailjet

Шаг 1. Установите Docker на CentOS 7.

Дискуссионный форум будет установлен в контейнере Docker. Итак, первый шаг, который мы должны сделать, это установить Docker на наш сервер CentOS 7.

Установите Docker на CentOS 7, используя следующую команду.

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

Если у вас нет команды wget, установите ее из репозитория.

yum -y install wget

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

systemctl start docker
systemctl enable docker

Механизм Docker установлен и работает на сервере CentOS 7. Проверьте статус службы с помощью следующей команды.

systemctl status docker

Служба Docker активна и работает.

Шаг 2. Установите и настройте программное обеспечение Discourse Forum.

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

Перед загрузкой дискурса нам нужно установить команду git на сервер.

yum -y install git

Теперь создайте новый каталог /var/discourse и загрузите/клонируйте скрипт docker discourse с помощью команды git.

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

Перейдите в каталог discourse и скопируйте образец сценария создания докеров standalone.yml в каталог /var/discourse/containers/ с именем app.yml.

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.co'

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

DISCOURSE_DEVELOPER_EMAILS: ''

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

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

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

Затем раскомментируйте конфигурацию 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.

docker ps -a

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

netstat -plntu

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

Шаг 3 — Создайте SSL Letsencrypt на CentOS 7

В этом руководстве мы будем запускать форум Discourse под веб-сервером Nginx и принимать только HTTPS-соединение. Для этого нам нужны новые SSL-сертификаты для доменного имени, поэтому мы будем использовать бесплатный SSL-сертификат от Letsencrypt.

Установите инструмент командной строки Letsencrypt с помощью команды yum следующим образом.

yum -y install letsencrypt

После установки добавьте новую службу HTTP и HTTPS в конфигурацию Firewalld.

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

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

letsencrypt certonly

Вы увидите два подтверждения от Letsencrypt. Введите номер 1, чтобы запустить временный веб-сервер для аутентификации.

В рамках этого введите свой адрес электронной почты для обновления уведомления, введите A, чтобы согласиться с TOS (Условиями обслуживания) letsencrypt.

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

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

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

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

В этом руководстве мы будем использовать веб-сервер Nginx в качестве обратного прокси-сервера для Discourse, работающего в контейнере Docker. Веб-сервер Nginx будет работать под портами HTTP и HTTPS, и все клиентские запросы будут обрабатываться Nginx.

Перед установкой веб-сервера Nginx нам необходимо установить в системе репозиторий EPEL.

yum -y install epel-release

Теперь установите nginx из репозитория EPEL, используя следующую команду yum.

yum -y install nginx

После завершения установки перейдите в каталог конфигурации nginx /etc/nginx.

cd /etc/nginx/

И создайте новую дополнительную конфигурацию SSL ssl.conf с помощью vim.

vim ssl.conf

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

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;

Сохраните изменения и выйдите из редактора.

Затем создайте новый файл виртуального хоста nginx discourse.conf для Discourse.

vim conf.d/discourse.conf

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

server {
    listen 80; listen [::]:80;
    server_name discourse.hakase-labs.co;
 
    # Automatic Redirect HTTP to HTTPS Nginx
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl http2; 
    server_name discourse.hakase-labs.co;

    # SSL Configuration
    ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.co/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.co/privkey.pem;
    include /etc/nginx/ssl.conf;
 
    # Reverse Proxy Configuration
    location / {
        proxy_pass http://discourse.hakase-labs.co: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.co:2045/ https://discourse.hakase-labs.co;
    }
}

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

Теперь протестируйте конфигурацию nginx и убедитесь в отсутствии ошибок. Затем перезапустите службу Nginx.

nginx -t
systemctl restart nginx

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

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

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

http://discourse.hakase-labs.co

И вы будете перенаправлены на HTTPS-соединение.

Нажмите кнопку Зарегистрироваться.

Теперь нам нужно создать новую учетную запись администратора.

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

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

Нажмите на ссылку.

И вы получите страницу приветствия Discourse.

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

Нажмите кнопку «Возможно позже».

Дискуссионный форум установлен, и мы получаем домашнюю страницу по умолчанию, как показано ниже.

Вы можете перейти на панель администратора, и вы получите панель администратора Discourse.

Программное обеспечение Discourse Forum было установлено с Nginx в качестве обратного прокси-сервера на сервере CentOS 7.

Шаг 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://meta.discourse.org/