美文网首页devDevOps
Discourse 安装指南

Discourse 安装指南

作者: fantasticfears | 来源:发表于2014-04-19 10:03 被阅读5737次

    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 安装方案

    硬件要求

    • 推荐双核 CPU
    • 最少 1 GB 内存(加上交换空间),推荐至少 2 GB;实际上 512 MB 也可以安装,估计不会好过。

    Docker 安装方案

    简介

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

    • Docker 是一个用于打包、部署并运行 Linux 应用的一个新项目。容器比传统的虚拟机方案更轻量和快速。
    • Docker 让部署和更新 Discourse 论坛变得简单。
    • 能够以官方团队推荐的最优设置配置 Discourse。

    安装前准备:安装 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 的所有文档。优点是比较简单。

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

    • 升级新版本 Discourse 时降低下线时间。你可以在更新后初始化新的 web 进程,再切换过去。
    • 使用多个服务器均衡负载。
    • 增加服务器冗余。
    • 将某些服务(如数据库)运行在特定硬件上。

    如果你想要使用多容器安装,看一看 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,看到升级按钮点了即可。

    已知问题

    • 前几周把简体中文的翻译都做完了。有什么不对的、不合适的可以联系我,或在 Transifex 上更改,或在 Meta 上指出。
    • 繁体中文可以从简体中文转换一下,应该能节省不少时间了。
    • 搜索功能与 postgresql 的 locale 设置有关,没有设置成指定语言就没法工作,考虑用 ElasticSearch,不知道 1.0.0 前能否完成。

    相关文章

      网友评论

      • c2198a819541:还有更多吗
      • 691a96084865:用这个论坛程序,假如域名有www.test.com和test.com。想让所有访问test.com的强制转跳到www.test.com怎么做301转跳?

      本文标题:Discourse 安装指南

      本文链接:https://www.haomeiwen.com/subject/auiltttx.html