Как установить Discourse Forum с Nginx на CentOS 7
На этой странице
- Шаг 1. Установите Docker на CentOS 7
- Шаг 2. Установите и настройте программное обеспечение Discourse Forum.
- Шаг 3. Создание SSL Letsencrypt в CentOS 7
- Шаг 4. Установите и настройте Nginx в качестве обратного прокси-сервера для Discourse
- Шаг 5. Веб-установщик Discourse
- Шаг 6. Дополнительная настройка Discourse
- Справочник
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.
Что мы будем делать
- Установите Docker на CentOS 7
- Установка и настройка программного обеспечения Discourse Forum
- Создание SSL Letsencrypt в CentOS 7
- Установите и настройте Nginx в качестве обратного прокси-сервера для Discourse.
- Веб-установщик Discourse
- Дополнительная конфигурация 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/