devDevOps

Discourse 安装指南

2014-04-19  本文已影响5737人  fantasticfears

This is a Simplified Chinese tutorial about Discourse installation.

<small>文章在知识共享 署名-相同方式共享 3.0协议之条款下提供。原文见此。</small>

EDIT:目前已经将几乎所有官方论坛的指南都翻译到了一个中文论坛,用来做本地化的支持。比如30 分钟内在 Digital Ocean 上部署 Discourse
Discourse 已经相当接近 1.0.0,大部分功能都比较成熟了。这篇文章将主要介绍如何用 Docker 安装 Discourse,以及其他一些安装方案。我将持续更新这篇文章。

介绍

Discourse 是一个为下一个十年的互联网准备的论坛程序。到沙盒试试。

你可以在 GitHub 找到官方的安装指南。官方将只支持 Docker 安装方案

硬件要求

Docker 安装方案

简介

官方 Docker 安装指南请至 GitHub。这里将提供一个在一台服务器上安装所有部件(数据库、Ruby 各种依赖)的指南。

安装前准备:安装 Docker

  1. 使用 64 位的 Linux 系统。
  2. 升级或者安装最新版的 Docker。Ubuntu 的 Docker 安装指南
  3. 为 Discourse Docker 创建一个目录。推荐(/var/docker)。运行 install -g docker -m 2775 -d /var/docker
  4. 之后的操作以管理员或者 docker 用户组的成员进行。将用户账户添加到 docker 用户组的命令为:usermod -a -G docker yourusername,之后请重新登入。

开始安装

  1. 在服务器上运行 git clone https://github.com/discourse/discourse_docker.git /var/docker 克隆配置文件。
  2. /var/docker 中复制独立模式的配置文件到 containers 目录下 cp samples/standalone.yml containers/app.yml。这里的 app 可以换成你想要的任何名字,同理在后面操作的时候要用你选择的名字。
  3. 配置 containers/app.yml。(见后文)
  4. 运行 sudo ./launcher bootstrap app
  5. 启动 sudo ./launcher start app

目录结构

/cids

包含了当前运行的 Docker 容器的 id。Docker 中的 cid 就相当于 pid。每一个容器有一个独特的哈希。

/containers

这个目录用于存放不同的 Discourse 容器配置文件。该目录由你管理,默认为空。

/samples

样例容器配置文件,你可以用来初始化环境。你可以将其复制到 containers 目录里更改。

/shared

用于 Discourse 容器的共享目录。你可以将部分持久信息存在容器之外。我们将日志文件和上传文件的目录放在容器外。这能帮助你更方便重建容器而不会损失重要的信息。让上传文件的目录放在容器外也能让你在多个 web 实例运行时共享他们。

/templates

用于初始化的模板文件。

/image

用于 samsaffron/discourse_base 和 samsaffron/discourse 的 Dockerfile。

samsaffron/discourse_base 包含了所有与操作系统有关的依赖,包括 sshd、runit、postgres、nginx 和 ruby。

samsaffron/discourse 构建基础映像并且配置用户 discourse,将 Discourse 源代码放于 /var/www/discourse。

Docker 库中将永远包含最新的基础映像版本,位于:https://index.docker.io/u/samsaffron/discourse/ ,你绝不该自己构建基础映像。

容器配置

templates

templates:
  - "templates/cron.template.yml"
  - "templates/postgres.template.yml"

最终的模板是在这一系列的模板中组合起来的,你可以自己增加他们。

expose

expose:
  - "2222:22"
  - "127.0.0.1:20080:80"

暴露容器内的 22 端口至所有本地主机接口的 2222 端口。若想绑定至一个接口,你可以按照 [([<host_interface>:[host_port]])|(<host_port>):]<container_port>[/udp] 的格式定义规则,详情查看 Docker 端口绑定的文档。

volumes

volumes:
  - volume:
      host: /var/docker/shared
      guest: /shared

将容器内的目录暴露至主机。

env

## List of comma delimited emails that will be made admin on signup
DISCOURSE_DEVELOPER_EMAILS: 'my-email-address@example.com'

在这里输入用逗号分隔的邮件地址,注册后这些用户将拥有管理员权限。

## The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: 'discourse.example.com'

设置 Discourse 的域名

## The mailserver this Discourse instance will use
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (mandatory)
# DISCOURSE_SMTP_PORT: 587 # (optional)
# DISCOURSE_SMTP_USER_NAME: user@example.com # (optional)
# DISCOURSE_SMTP_PASSWORD: p@ssword # (optional)

邮件通知是 Discourse 的一个主要功能,你需要配置他们。你可以选择安装 postfix 并且自己配置他们,但是会比较麻烦。

推荐使用 Mandrill,需要翻墙。注册后创建一个 API,再按照 Mandrill 里的信息来填写。Mandrill 中可以查看到发送错误的日志,出问题可以去查看一下。

DISCOURSE_SMTP_ADDRESS: smtp.mandrillapp.com
DISCOURSE_SMTP_PORT: 587 # 使用 SSL 的话,阅读一下 Mandrill 的帮助
DISCOURSE_SMTP_USER_NAME:
DISCOURSE_SMTP_PASSWORD:

locale

目前还没支持,所以默认装的是英文版。管理员登入后在后台改成简体中文即可,但是自动生成的几个主题将会是英文的。

单容器 vs 多容器

samples 目录包含了一个 standalone 模板用于单容器安装。其中包含了在单一容器中安装 Discourse 的所有文档。优点是比较简单。

多容器配置更灵活、强大,但也更难配置。多容器能让你:

如果你想要使用多容器安装,看一看 sample 目录的 data.ymlweb_only.yml 模板。为了简化安装,launcher 将会在映像中注入一个 DISCOURSE_HOST_IP 的环境变量。
警告:在多站点配置中,确定配置好 iptables 或者其他的防火墙为 postgresql 和 redis 保护他们使用的端口。在 Ubuntu 上,安装 ufwiptables-persistent 包来管理防火墙规则。

多容器配置请参考这个主题

SSL

请参考这个主题

排错

可以 SSH 登入至容器:./launcher ssh my_container。初始化容器时将自动配置 ssh 登入信息。

其他方案

Digital Ocean

对照上文的安装方案,整体流程是一样的。GitHub 上的教程

托管方案

Discourse 有托管服务。国内目前还没有。

安装后配置

默认的主题标题和内容字符限制应该是第一个要更改的东西,根据需要调整一下。

升级

访问 /admin/docker,看到升级按钮点了即可。

已知问题

上一篇 下一篇

猜你喜欢

热点阅读