如何在 Ubuntu 16.04 上使用 Nginx 安装 Discourse Forum如何在 Ubuntu 16.04 上使用 Nginx 安装 Discourse Forum如何在 Ubuntu 16.04 上使用 Nginx 安装 Discourse Forum如何在 Ubuntu 16.04 上使用 Nginx 安装 Discourse Forum
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 16.04 上使用 Nginx 安装 Discourse Forum

Discourse 是一个免费的开源软件,用于创建 Internet 论坛社区和邮件列表。它创建于 2013 年,使用 Ruby 和 Javascript 编程语言编写。 Discourse 论坛软件已被许多组织使用,包括 Codeacademy、Udacity、Twitter Developers 和 Docker Community Forum。

在本教程中,我们将逐步向您展示如何在 Ubuntu 16.04 上使用 Nginx Web 服务器安装和配置 Discourse Forum。具体来说,我们将向您展示如何安装 Discourse 论坛软件,将 Nginx 配置为 Discourse 应用程序的反向代理,以及使用来自 Letsencrypt 的免费 SSL 保护 Discourse 论坛软件。

我们将要做什么

  1. 在 Ubuntu 16.04 上安装 Docker
  2. 安装和配置 Discourse Forum 软件
  3. 在 Ubuntu 16.04 上生成 SSL Letsencrypt
  4. 安装和配置 Nginx 作为 Discourse 的反向代理
  5. Discourse Web 安装程序
  6. 话语附加配置

先决条件

  • Ubuntu 16.04
  • 根权限
  • SMTP 帐户 - Mailgun、SendGrid、Mailjet 等。

第 1 步 - 在 Ubuntu 16.04 上安装 Docker

Discourse 软件是用 Ruby 和 Javascript 编写的,使用 PostgreSQL 作为主数据库,使用 Redis 作为缓存和临时数据。我们将在 Docker 容器下安装 Discourse。

安装过程将在 Ubuntu 16.04 上进行。因此,首先,使用以下命令安装 Docker。

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

安装完成后,检查docker服务,确保其已经在系统上运行。

systemctl status docker

还要确保 Docker 在启动引导应用程序上。

systemctl is-enabled docker

第 2 步 - 安装和配置 Discourse Forum

在此步骤中,我们将安装和配置 Discourse 软件。我们将下载 discourse docker-compose 脚本,根据我们的要求进行配置,然后为 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

使用 vim 编辑器编辑 app.yml 文件。

vim containers/app.yml

配置 Docker 端口映射

默认情况下,所有 HTTP 和 HTTPS 请求都将由 Docker 代理处理。对于本指南,我们将为此目的使用 Nginx - 所有 HTTP 和 HTTPS 都将由 Nginx Web 服务器处理。

所以我们需要更改docker端口映射配置。 Discourse 容器将只有 HTTP 连接,主机将打开新端口 2045 并映射到容器端口 80。

取消注释 HTTPS 行并将 HTTP 行更改为新端口 2045。

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

话语域名配置

为安装在 DISCOURSE_HOSTNAME 行中的话语输入您自己的域名,如下所示。

DISCOURSE_HOSTNAME: 'discourse.hakase-labs.me'

并在 DISCOURSE_DEVELOPER_EMAIL 行中输入您的电子邮件地址。

DISCOURSE_DEVELOPER_EMAILS: ''

SMTP 配置

这是 Discourse Software 最重要的配置。确保您拥有用于安装 Discourse 的 SMTP 帐户 - 您可以从 Mailgun、Mailjet 或 SendGrid 购买或试用免费级 SMTP 帐户。

在本教程中,我们将使用 Mailgun 的免费层级 SMTP 帐户。取消注释 SMTP 配置并键入您的帐户,如下所示。

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

保存并退出。

接下来,根据 app.yml 模板配置构建新的 Discourse Docker 镜像。

sudo ./launcher bootstrap app

之后,使用下面的命令启动/初始化新的 Discourse 容器。

sudo ./launcher start app

Discourse 容器应该启动并运行 - 使用 docker 命令检查它。

docker ps -a

使用 netstat 检查主机开放端口,并确保新的 docker-proxy 端口 2045 在列表中。

netstat -plntu

Discourse Forum 软件已安装在主机 Ubuntu 16.04 上的 docker 容器下。

第 3 步 - 在 Ubuntu 16.04 上生成 SSL Letsencrypt

Discourse 论坛将在 HTTP 安全连接下运行,并由 Nginx Web 服务器处理。我们将在本指南中使用 Letsencrypt 提供的免费 SSL,我们需要在服务器上安装 letsencrypt 客户端。

使用下面的 apt 命令安装 letsencrypt。

sudo apt install letsencrypt -y

现在使用 letsencrypt 命令生成新的 SSL 证书。

letsencrypt certonly

键入用于更新通知的电子邮件地址,然后选择“确定”。

对于 Letsencrypt TOS(服务条款),选择同意。

现在输入您的话语域名 discourse.hakase-labs.me。

完成后,您将得到如下结果

/etc/letsencrypt/live 目录中已生成来自 letsencrypt 的新 SSL 证书。

第 4 步 - 安装和配置 Nginx 作为 Discourse 容器的反向代理

在此步骤中,我们将安装 Nginx Web 服务器并将其配置为在端口 2045 上运行的 Discourse 容器的反向代理。

使用下面的 apt 命令安装 Nginx。

sudo apt install nginx -y

现在启动 Nginx 并使用 systemctl 命令使其在启动时启动。

systemctl start nginx
systemctl enable nginx

Nginx 已安装并在 HTTP 端口 80 上运行。您可以使用 netstat 进行检查。

netstat -plntu

Nginx Web 服务器已安装到 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;

保存并退出。

现在使用 ln -s 命令激活 discourse 虚拟主机,如下所示。

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

测试配置并确保没有错误,然后重新启动服务。

nginx -t
systemctl restart nginx

作为 Discourse 容器反向代理的 Nginx 安装和配置已经完成。

第 5 步 - Discourse Web 安装程序

打开您的网络浏览器并访问讨论 URL。

http://discourse.hakase-labs.me

您将被重定向到 HTTP 安全连接。单击注册按钮创建一个新的管理员用户。

现在键入您的管理员用户和密码,然后单击注册。

您将收到一封关于您的管理员用户激活的新电子邮件确认。

以下是 Discourse 帐户确认的示例电子邮件。单击链接以确认并激活管理员帐户。

你应该得到如下所示的话语页面。单击单击此处激活您的帐户按钮。

现在您可以配置自己的 Discourse 论坛。单击下一步按钮,您需要使用 13 步配置 Discourse Forum。或者您可以稍后通过单击可能以后配置它。

下面显示的是安装在 Nginx Web 服务器上的 Discourse Forum 和 Ubuntu 16.04 上的 HTTPS。

以下是我的 Discourse 管理仪表板。

Discourse Forum 已经在 Ubuntu 16.04 服务器上安装了 Nginx 作为反向代理。

第 6 步 - Discourse 附加配置

安装 Discourse 时,您可能会遇到一个问题,即您没有收到管理员用户激活的电子邮件确认。

要对问题进行排序,请确保您在配置 app.yml 上拥有正确的 SMTP 帐户。或者您可以从您的服务器手动激活管理员帐户。

要手动激活您的管理员帐户,请转到 /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

©2015-2025 艾丽卡 support@alaica.com