警告:本文已过时,不再有效。 请改为阅读 更新的 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 的域。 本教程可以帮到你。
- 具有 sudo 权限的非 root 用户(Initial Server Setup with Ubuntu 14.04 解释了如何设置。)
- Mandrill 和 上的免费帐户获取 SMTP 凭据。 事先测试这些凭据的有效性并没有什么坏处,尽管您可以在 Discourse 中首次使用它们。
本教程中的所有命令都应以非 root 用户身份运行。 如果该命令需要 root 访问权限,它将在前面加上 sudo
。 Ubuntu 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 ...
以下是需要更改的各个行:
- 设置管理员邮箱
选择您要用于 Discourse 管理员帐户的电子邮件地址。 它可以与您的 Discourse 域完全无关,并且可以是您认为方便的任何电子邮件地址。 在 DISCOURSE_DEVELOPER_EMAILS 行中设置此电子邮件地址。 一旦用户使用该电子邮件注册,该电子邮件地址将默认成为 Discourse 管理员。 稍后当您从其 Web 控制面板设置 Discourse 时,您将需要此电子邮件地址。
DISCOURSE_DEVELOPER_EMAILS: 'me@example.com'
将 me@example.com 替换为您的电子邮件。
创建和激活您的初始管理员帐户需要开发人员电子邮件设置。
- 设置域
将 DISCOURSE_HOSTNAME 设置为 discourse.example.com。 这意味着您希望您的 Discourse 论坛可以在 http://discourse.example.com/ 上使用。 如果您还没有指向服务器的域,则可以在此处使用 IP 地址。 此处只能列出一个域(或 IP)。
DISCOURSE_HOSTNAME: 'discourse.example.com'
将 discourse.example.com 替换为您的域。 从 Web 访问您的 Discourse 实例需要主机名。
- 设置邮件凭据
我们推荐将 Mandrill 用于您的 SMTP 邮件服务器。 从 Mandrill 获取您的 SMTP 凭证。
在 DISCOURSE_SMTP_ADDRESS、DISCOURSE_SMTP_PORT、DISCOURSE_SMTP_USER_NAME 和 DISCOURSE_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 GB Droplet)
同样在配置文件的 env 部分,将 db_shared_buffers 设置为 128MB 和 UNICORN_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
并按照说明进行操作。