Discourse 安装部署教程

官方部署教程:

拉取 discourse 项目文件

sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers

开始部署:

  1. 启动设置工具(discourse-setup)
./discourse-setup
  • 填写对应的信息
Hostname for your Discourse? [discourse.example.com]:  #填写你的域名,discourse不允许 IP 访问
Email address for admin account(s)? [me@example.com,you@example.com]:  #填写你的管理员邮箱
SMTP server address? [smtp.example.com]: #SMTP服务器地址
SMTP port? [587]:  #SMTP端口
SMTP user name? [user@example.com]: # SMTP 账户
SMTP password? [pa$$word]:  # SMTP 密码/密钥/应用专用密码
Let's Encrypt account email? (ENTER to skip) [me@example.com]:  #申请证书的邮箱
Optional Maxmind License key () [xxxxxxxxxxxxxxxx]: # 默认可以回车自动设置
  1. 手动配置 App.yml (上面的输入数据将会为你的 Discourse 实例创建一个 app.yml​ 文件,这个文件将会在安装进行后对你的 Discourse 实例进行配置。上面的输入数据将会为你的 Discourse 实例创建一个 app.yml​ 文件,这个文件将会在安装进行后对你的 Discourse 实例进行配置)
  • App.yml 是 discourse 安装的配置文件,路径在 /var/discoure/containers/app.yml
  • app.yml 配置教程以及解析

配置文件解析(翻译)

暂时没空写

开始安装

如果你选择了手动部署,请在 Discourse 的目录输入

./launcher rebuild app

app 指的是你的配置文件名​,默认​就是 app.yml

安装会拉取镜像,整个安装过程一般在8-10分钟左右

Discourse 常用命令

重建服务

./launcher rebuild app

清理缓存

./launcher cleanup

执行安装

./discourse-setup

开启永久删除

./launcher enter app
rails c
SiteSetting.can_permanently_delete = true

荷包蛋踩坑教程-部署非正常端口

Discourse 部署默认占用80、443端口,如需部署在其他端口,需要修改配置文件

默认占用的端口,会导致我无法使用 Nginx 宝塔等等,浪费了服务器资源

下文将为大家教学如何将 Discourse 部署在非正常端口

首先你需要先拉取 Discourse 项目

修改配置文件

本文不按照官方推荐的必须使用 80/443​ 端口的方式,也不使用官方容器内部的 Nginx 代理,而是在容器外使用反向代理实现 HTTPS 访问。经过实际测试,这种方式可以成功部署,且邮件服务和文件上传等功能均正常。

郑重提示: 尽量不要按照官方给的部署教程,否则可能会遇到很多问题。

在配置文件中需要特别注意以下几点:

  • templates​ 部分,一定不要引入以下三个文件:

    • "templates/web.socketed.template.yml"
    • "templates/web.ssl.template.yml"
    • "templates/web.letsencrypt.ssl.template.yml"

    注意,是一定不要!!!

  • expose​ 部分,容器内部只需要暴露一个 80​ 端口即可。容器外部的端口可以根据需要定义(通过该端口进行反代即可实现 HTTPS,不需要额外暴露 443​ 端口)。

    expose:
      - "3333:80"   # http
      # - "443:443" # https
  • 配置文件示例:

    Hostname for your Discourse? [discourse.example.com]:  # 填写你的域名,Discourse 不允许 IP 访问
    Email address for admin account(s)? [me@example.com,you@example.com]:  # 填写你的管理员邮箱
    SMTP server address? [smtp.example.com]: # SMTP 服务器地址
    SMTP port? [587]:  # SMTP 端口
    SMTP user name? [user@example.com]: # SMTP 账户
    SMTP password? [pa$word]:  # SMTP 密码/密钥/应用专用密码
    Let's Encrypt account email? (ENTER to skip) [me@example.com]:  # 申请证书的邮箱
    Optional Maxmind License key () [xxxxxxxxxxxxxxxx]: # 默认可以回车自动设置

部署安装

./launcher rebuild app

然后就可以开始部署了。如果需要 HTTPS​,可以自己安装一个 Nginx​,反代你设置的 HTTP 端口,然后申请 SSL 证书即可(建议开启强制 HTTPS​)。

其他说明

launcher​ 的功能如下:

Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Commands:
    start:      Start/initialize a container
    stop:       Stop a running container
    restart:    Restart a container
    destroy:    Stop and remove a container
    enter:      Use nsenter to get a shell into a container
    logs:       View the Docker logs for a container
    bootstrap:  Bootstrap a container for the config based on a template
    rebuild:    Rebuild a container (destroy old, bootstrap, start new)
    cleanup:    Remove all containers that have stopped for > 24 hours

Options:
    --skip-prereqs             Don't check launcher prerequisites
    --docker-args              Extra arguments to pass when running docker

UNICORN_WORKERS​ 指的是启动工作的数量,一般建议设置为1-4 ,之前遇到的内存暴增就是这个原因,他默认是根据你的服务器性能设置的

db_shared_buffers​ 这个也是一样,不需要太大256MB-2048MB 都行

配置插件之后,如果 rebuild​ 失败,可以通过 ./discourse-doctor​ 命令来查看部署失败的原因(前提是配置文件为默认的 app 名字)

重构失败问题

如果你一直重构失败,请先考虑看看插件是不是安装了非官方的导致不兼容

其次重构的时候留意一下是不是RAM都吃满了,加个 SWAP​也许能解决

参考:Debian 添加 SWAP