Как установить дискурс за Nginx в Ubuntu 14.04

Вступление

http://www.discourse.org [Discourse] - это дискуссионная площадка сообщества с открытым исходным кодом, созданная для современной сети.

Из этого туториала Вы узнаете, как настроить Discourse, переместить его за обратный прокси-сервер с помощью Nginx и настроить SSL-сертификат для него с помощью Let’s Encrypt. Перемещение Дискурса за обратным прокси-сервером предоставляет вам гибкость для запуска других веб-сайтов на вашей Droplet.

Предпосылки

Прежде чем мы начнем, убедитесь, что у вас есть следующее:

  • Ubuntu 14.04 Droplet (1 ГБ или больше)

  • Пользователь без полномочий root с привилегиями sudo (Initial Server Setup с Ubuntu 14.04 объясняет, как это настроить. )

  • Дискурс установлен с использованием th этого учебника

  • Полностью зарегистрированный домен. Вы можете приобрести один на https://namecheap.com [Namecheap] или получить его бесплатно на Freenom.

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

Все команды в этом руководстве должны выполняться от имени пользователя без полномочий root. Если для этой команды требуется root-доступ, ему будет предшествовать + sudo +.

Шаг 1 - Настройка дискурса

Теперь, когда у вас установлен Discourse, нам нужно настроить его на работу за Nginx.

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

cd /var/discourse

Затем откройте файл конфигурации, который нам нужно изменить:

sudo nano containers/app.yml

Используя клавиши со стрелками, прокрутите вниз до раздела + expose + (он должен быть ближе к верху) и измените первый номер порта в этой строке:

/var/discourse/containers/app.yml

...
## which TCP/IP ports should this container expose?
expose:
 - ":80"   # fwd host port 80   to container port 80 (http)
...

Это число может быть случайным и не должно передаваться другим. Вы даже можете заблокировать несанкционированный доступ к нему https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04 при помощи брандмауэра iptables правило], если хотите.

Теперь сохраните и выйдите из текстового редактора.

Включите изменение конфигурации, запустив:

sudo ./launcher rebuild app

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

Вы можете убедиться, что все работает, посетив ваш сайт. Ваше доменное имя для Discourse (например, + http: // +) больше не будет загружать интерфейс в веб-браузере, но оно должно быть доступно, если вы используете порт, только что настроенный для Discourse, такой как `+ http: // /: + `(замените вашим доменным именем и портом, который вы только что использовали в этом шаге).

Шаг 2 - Установка и настройка Nginx

Теперь, когда Discourse установлен и настроен для работы за Nginx, пришло время установить Nginx.

Чтобы установить Nginx в Ubuntu, просто введите эту команду, и установка начнется:

sudo apt-get install nginx

При переходе к старому URL-адресу Discourse по адресу + http: // + будет отображена веб-страница Nginx по умолчанию:

изображение: https: //assets.digitalocean.com/articles/discouse_behind_nginx/default-webpage.png [целевая страница Nginx по умолчанию]

Это отлично. Мы изменим это на ваш форум сейчас. Во-первых, давайте остановим Nginx:

sudo service nginx stop

Затем удалите эту конфигурацию веб-страницы по умолчанию - она ​​нам не понадобится:

sudo rm /etc/nginx/sites-enabled/default

Затем мы создадим новый файл конфигурации для нашего сервера Discourse, который назовем + discourse +.

sudo nano /etc/nginx/sites-enabled/discourse

Скопируйте и вставьте в следующую конфигурацию. Замените ` на ваше доменное имя, а ` на порт, который вы только что использовали на предыдущем шаге:

/ И т.д. / Nginx / сайты с поддержкой / дискурс

server {
       listen 80;
       server_name ;
       return 301 https://$request_uri;
}
server {
       listen 443 ssl spdy;
       server_name ;
       ssl_certificate /etc/letsencrypt/live//fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live//privkey.pem;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
       ssl_prefer_server_ciphers on;
       location / {
               proxy_pass      http://:/;
               proxy_read_timeout      90;
               proxy_redirect  http://:/ https://;
       }
}

Вот что делает этот конфиг:

  • Первый блок сервера прослушивает домен ++ на порте 80 и перенаправляет все запросы на SSL через порт 443. Это необязательно, но оно заставляет SSL на вашем сайте для всех пользователей.

  • Второй блок сервера находится на порту 443 и передает запросы веб-серверу, работающему на порту ++ (в данном случае Discourse). В сущности, он использует обратный прокси-сервер для отправки страниц Discourse вашим пользователям и обратно через SSL.

Возможно, вы заметили, что мы ссылаемся на некоторые сертификаты в + / etc / letsencrypt +. На следующем шаге мы сгенерируем их до перезапуска Nginx.

Шаг 3 - Генерация сертификатов SSL

Чтобы сгенерировать SSL-сертификаты, мы сначала установим ACME-клиент Let Encrypt. Это программное обеспечение позволяет нам создавать сертификаты SSL.

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Затем перейдите в каталог + letsencrypt +:

cd /opt/letsencrypt/

Установите пакеты, необходимые для Let’s Encrypt в первый раз:

./letsencrypt-auto --help

Теперь мы можем сгенерировать ваши сертификаты, запустив (замените ваш адрес электронной почты и имя домена):

./letsencrypt-auto certonly --standalone --email  --agree-tos -d

Вы должны получить ответ довольно быстро, похожий на этот:

Давайте зашифруем вывод

IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
  e-mails sent to .
- Congratulations! Your certificate and chain have been saved at
  /etc/letsencrypt/live//fullchain.pem. Your
  cert will expire on . To obtain a new version of the
  certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Let's
  Encrypt so making regular backups of this folder is ideal.

Вы заметите, что ваши сертификаты были сохранены в + / etc / letsencrypt / live / +. Это означает, что наша конфигурация Nginx теперь действительна. Вы также заметите, что срок годности не слишком далеко. Это нормально с сертификатами Let’s Encrypt. Все, что вам нужно сделать, чтобы возобновить, - это запустить ту же самую команду снова, но вход в систему каждые 90 дней - это не весело, поэтому мы автоматизируем ее на нашем следующем шаге.

Шаг 4 - Автоматизация обновления сертификата Let Encrypt

Теперь, когда мы настроили наши сертификаты впервые, мы должны убедиться, что они обновляются автоматически. Сертификаты Let Encrypt действительны только в течение 90 дней, после чего срок их действия истекает и в браузере отображается предупреждение для всех посетителей вашего сайта. На момент написания статьи автообновление не встроено в клиент, но мы можем настроить скрипт для их ручного обновления.

Обратитесь к https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04#step-4-%E2%80% 94-настройка-автообновление [Настроить автоматическое обновление] шаг https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu -14-04 [Как защитить Nginx с помощью Let’s Encrypt в Ubuntu 14.04] для получения подробной информации о настройке задания cron для автоматического обновления вашего сертификата.

Любой вывод, созданный этой командой, будет находиться в + / var / log / certificate-renewal.log + для устранения неполадок.

Шаг 5 - Перезапуск Nginx

Наконец, наша конфигурация должна быть завершена. Перезапустите Nginx, выполнив эту команду:

sudo service nginx restart

Теперь, если вы переходите к + https: /// +, ваш веб-сайт должен быть подключен к сети и защищен с помощью Let’s Encrypt, который в большинстве браузеров отображается как зеленый замок.

Заключение

Это оно! Теперь у вас есть форум Discourse, созданный за Nginx, защищенный новейшими стандартами SSL с помощью Let Encrypt.

Related