如何在Ubuntu14.04上安装Discourse

来自菜鸟教程
跳转至:导航、​搜索

警告:本文已过时,不再有效。 请改为阅读 更新的 Discourse 文章


Discourse的一篇文章

介绍

Discourse是为互联网下一个十年打造的开源讨论平台。 我们将介绍在您的 DigitalOcean Droplet 上运行 Discourse 所需的所有步骤。

先决条件

在开始之前,我们需要先设置一些东西:

  • 具有至少 2 GB RAM 的 Ubuntu 14.04 Droplet(64 位)。 如果您在这部分需要帮助,本教程 将帮助您入门。

    Discourse 建议小型社区使用 1 GB RAM,大型社区使用 2 GB RAM。 如果您使用 1 GB 的 RAM,它还需要一个交换文件。 尽管对于使用传统旋转硬盘的系统通常建议使用交换,但使用 SSD 交换可能会导致硬件随着时间的推移而退化。 出于这一考虑,我们不建议在 DigitalOcean 或任何其他使用 SSD 存储的提供商上启用交换。 这样做会影响您和您的邻居的底层硬件的可靠性。 因此,我们建议至少 2 GB 的 RAM 才能在 DigitalOcean Droplet 上运行 Discourse。 有关使用交换的详细信息,请参阅 如何在 Ubuntu 14.04 上添加交换。

    如果您需要提高服务器的性能,我们建议升级您的 Droplet。 这通常会带来更好的结果,并会降低导致可能影响服务的硬件问题的可能性。

  • 您可以使用 IP 地址作为您的域进行测试,但对于生产服务器,您应该有一个解析到您的 Droplet 的域。 本教程可以帮到你。

本教程中的所有命令都应以非 root 用户身份运行。 如果该命令需要 root 访问权限,它将在前面加上 sudoUbuntu 14.04 的初始服务器设置 解释了如何添加用户并授予他们 sudo 访问权限。

第 1 步 — 安装 Git

在本节中,我们将安装 Git 来下载 Discourse 源文件。 Git 是一个开源的分布式版本控制和源代码管理系统。

在我们开始之前,强烈建议您确保您的系统是最新的。 以 root 用户身份通过 SSH 连接到您的 Droplet:

ssh sammy@your-server-ip

在您的 Droplet 上执行以下命令以更新系统:

sudo apt-get update
sudo apt-get upgrade

完成后,通过运行以下命令安装 Git:

sudo apt-get install git

第 2 步 — 安装 Docker

在本节中,我们将安装 Docker 以便 Discourse 有一个独立的运行环境。 Docker 是一个开源项目,可以在轻量级容器中打包、发布和运行任何应用程序。 有关 Docker 的更多介绍信息,请参阅本教程

Docker 提供了一个公共脚本来安装 Docker:

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

您需要将非 root 用户添加到 docker 组才能以该用户身份运行 Docker 容器:

sudo usermod -aG docker sammy

您还必须注销并以该用户身份重新登录以启用更改:

exit
su - sammy

第 3 步 — 下载话语

在本节中,我们将下载 Discourse。

创建一个 /var/discourse 文件夹,所有与 Discourse 相关的文件都将驻留:

sudo mkdir /var/discourse

official Discourse Docker Image 克隆到这个 /var/discourse 文件夹中:

sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse

第 4 步 - 配置话语

在本节中,我们将配置您的初始 Discourse 设置。

切换到/var/discourse目录:

cd /var/discourse

samples/standalone.yml 文件作为 app.yml 复制到 containers 文件夹中:

sudo cp samples/standalone.yml containers/app.yml

编辑 app.yml 文件中的 Discourse 配置:

sudo nano containers/app.yml

配置文件将在 nano 文本编辑器 中打开。

找到 env 部分并使用您的自定义电子邮件、域和 SMTP 服务器信息对其进行更新,如下所示。 在示例块之后解释了各个行:

应用程序.yml

...
env:
  LANG: en_US.UTF-8
  ## TODO: How many concurrent web requests are supported?
  ## With 2GB we recommend 3-4 workers, with 1GB only 2
  #UNICORN_WORKERS: 3
  ##
  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'me@example.com'
  ##
  ## TODO: The domain name this Discourse instance will respond to
  DISCOURSE_HOSTNAME: 'discourse.example.com'
  ##
  ## TODO: The mailserver this Discourse instance will use
  DISCOURSE_SMTP_ADDRESS: smtp.mandrillapp.com         # (mandatory)
  DISCOURSE_SMTP_PORT: 587                        # (optional)
  DISCOURSE_SMTP_USER_NAME: login@example.com      # (optional)
  DISCOURSE_SMTP_PASSWORD: 9gM5oAw5pBB50KvjcwAmpQ               # (optional)
  ##
  ## The CDN address for this Discourse instance (configured to pull)
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com
  ...

以下是需要更改的各个行:

  1. 设置管理员邮箱

选择您要用于 Discourse 管理员帐户的电子邮件地址。 它可以与您的 Discourse 域完全无关,并且可以是您认为方便的任何电子邮件地址。 在 DISCOURSE_DEVELOPER_EMAILS 行中设置此电子邮件地址。 一旦用户使用该电子邮件注册,该电子邮件地址将默认成为 Discourse 管理员。 稍后当您从其 Web 控制面板设置 Discourse 时,您将需要此电子邮件地址。

DISCOURSE_DEVELOPER_EMAILS: 'me@example.com'

me@example.com 替换为您的电子邮件。

创建和激活您的初始管理员帐户需要开发人员电子邮件设置。

  1. 设置域

DISCOURSE_HOSTNAME 设置为 discourse.example.com。 这意味着您希望您的 Discourse 论坛可以在 http://discourse.example.com/ 上使用。 如果您还没有指向服务器的域,则可以在此处使用 IP 地址。 此处只能列出一个域(或 IP)。

DISCOURSE_HOSTNAME: 'discourse.example.com'

discourse.example.com 替换为您的域。 从 Web 访问您的 Discourse 实例需要主机名。

  1. 设置邮件凭据

我们推荐将 Mandrill 用于您的 SMTP 邮件服务器。 从 Mandrill 获取您的 SMTP 凭证。

DISCOURSE_SMTP_ADDRESSDISCOURSE_SMTP_PORTDISCOURSE_SMTP_USER_NAMEDISCOURSE_SMTP_PASSWORD 的行中输入您的 SMTP 凭据。 (确保根据需要从这些行的开头删除注释 # 字符。)

DISCOURSE_SMTP_ADDRESS: smtp.mandrillapp.com         # (mandatory)
DISCOURSE_SMTP_PORT: 587                        # (optional)
DISCOURSE_SMTP_USER_NAME: login@example.com      # (optional)
DISCOURSE_SMTP_PASSWORD: 9gM5oAw5pBB50KvjcwAmpQ               # (optional)

从 Discourse 实例发送邮件需要 SMTP 设置; 例如,发送注册邮件、密码重置邮件、回复通知等。

设置邮件凭据时遇到问题? 请参阅 Discourse 电子邮件故障排除指南

需要设置邮件凭据,否则您将无法引导您的 Discourse 实例。 凭据必须正确,否则您将无法为论坛注册用户(包括管理员用户)。

  1. 可选:调整内存设置(首选 1 GB Droplet)

同样在配置文件的 env 部分,将 db_shared_buffers 设置为 128MBUNICORN_WORKERS 设置为 2有更多的记忆空间。

db_shared_buffers: "128MB"

UNICORN_WORKERS: 2

调整这些内存设置将优化 1 GB Droplet 上的 Discourse 性能。

注意: 以上更改是强制性的,不应跳过,否则您将拥有一个损坏的 Discourse 论坛。

保存 app.yml 文件,然后退出文本编辑器。

第 5 步 — 引导话语

在本节中,我们将引导 Discourse。

首先,我们需要确保 Docker 可以访问它需要的所有外部资源。 打开 Docker 设置文件 /etc/default/docker

sudo nano /etc/default/docker

取消注释 DOCKER_OPTS 行,以便 Docker 使用 Google 的 DNS:

/etc/default/docker

...

# Use DOCKER_OPTS to modify the daemon startup options.
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

...

重新启动 Docker 以应用新设置:

sudo service docker restart

注意:如果你在运行bootstrap命令之前没有改变Docker的DNS设置,你可能会得到类似“致命:无法访问'https://github.com/SamSaffron/pups .git/':无法解析主机:github.com”。

现在使用引导过程来构建 Discourse 并使用您在上一节中配置的所有设置对其进行初始化。 这也会启动 Docker 容器。 您必须在 /var/discourse 目录中:

cd /var/discourse

引导话语:

sudo ./launcher bootstrap app

此命令在配置您的 Discourse 环境时将需要大约 8 分钟的时间运行。 (在此过程的早期,您将被要求生成 SSH 密钥;按 Y 接受。)

引导过程完成后,启动 Discourse:

sudo ./launcher start app   

恭喜! 你现在拥有了自己的 Discourse 实例!

第 6 步 - 访问话语

在 Web 浏览器中访问域或 IP 地址(您之前为 Discourse 主机名设置的)以查看默认的 Discourse 网页。

如果您收到 502 Bad Gateway 错误,请尝试等待一两分钟,然后刷新,以便 Discourse 可以完成启动。

第 7 步 — 注册并创建管理员帐户

使用页面右上角的【X8X】注册【X19X】按钮注册一个新的Discourse账号。 您应该使用之前在 DISCOURSE_DEVELOPER_EMAILS 设置中提供的电子邮件地址。 确认您的帐户后,该帐户将自动被授予管理员权限。

注册并登录后,您应该会看到员工主题和 Admin 快速入门指南。 它包含进一步配置和自定义 Discourse 安装的后续步骤。

您可以通过访问 /admin 访问管理仪表板。

如果您 没有 在注册时收到任何电子邮件,并且无法注册新的管理员帐户,请参阅 Discourse 电子邮件故障排除清单

如果您仍然无法通过电子邮件注册新的管理员帐户,请参阅 从控制台创建管理员帐户 演练,但请注意 在您获得正常的 SMTP 之前,您将有一个损坏的站点 电子邮件工作。

就是这样! 您现在可以让用户注册并开始管理您的 Discourse 论坛。

安装后升级

要将 升级到最新版本 ,请访问 /admin/upgrade 并按照说明进行操作。