Discourse安装与配置

1.简要介绍

Discourse 是由 Stack Overflow 创始人之一的 Jeff Atwood 主导的开源论坛项目,使用时能感受到和 Stack Overflow 的关联性,比如为鼓励有效的技术讨论、控制人身攻击等做了很多努力,页面的布局方式也有相似之处。Discourse 提供了非常丰富的配置方式,也支持插件扩展,是值得学习的论坛类开源项目。
本文主要介绍通过 Docker 镜像的方式在虚拟机环境中部署 Discourse 环境,操作系统为 CentOS 7.8。

2.准备工作

2.1环境准备

Discourse 官方文档中推荐的最低配置是 1 核 2G,这里就选用了4核8G,对于没有很高访问量的站点,这个配置也足够用了。

2.2邮箱配置

Discourse 比较依赖邮箱系统,需要根据邮箱来进行注册和消息通知,所以一定要有一个可用的邮件服务系统,Discourse 推荐使用第三方的邮件系统,其实自己搭建也是完全可行的。

2.3注册域名

Discourse 是一个公共论坛,一般需要备案的公网域名。内网环境使用除外。

3.安装部署

Discourse 本身是挺复杂的,看安装过程的耗时和输出信息就知道了。幸运的是,Discourse 提供了自动化安装的脚本,较低了部署的难度。Discourse 依赖的软件并不多,主要是 git(用来拉取 Discourse 的代码)、docker(因为要使用 Docker 部署) 和 ruby(原因是 Discourse 是用 ruby 编写的)以及 ruby 的包管理工具 gem。
安装 git
yum install –y git
安装 docker
wget -qO- https://get.docker.com/ | sh
配置 docker 使用国内的镜像

vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com",
                       "http://hub.c.163.com"]
}
systemctl restart docker.service
systemctl enable docker.service

安装 discourse

mkidr /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
./discourse-setup

运行 discourse-setup 脚本后,会提示输入一些安装信息,以此输入之前注册的域名和邮箱信息即可。

Hostname for your Discourse? [discourse.example.com]:
Email address for admin account(s)? [me@example.com,you@example.com]:
SMTP server address? [smtp.example.com]:
SMTP port? [587]:
SMTP user name? [user@example.com]:
SMTP password? [pa$$word]:
Let's Encrypt account email? (ENTER to skip) [me@example.com]:

配置完成后,需要进行很久的编译,稍安勿燥,半小时之内都是正常的。等待脚本 discourse-setup 脚本执行结束,就可以访问刚刚配置好的 discourse 网站了!

网页访问:http://discourse.example.com 首页可以做些初始化设置,如果设置的邮件服务器不可用,那么可以去后台创建管理员账号:

cd /var/discourse/
./launcher enter app
rake admin:create

输入你设置的管理员邮箱you@example.com,然后设置密码,刷新权限即可。

重新访问http://discourse.example.com 首页,即可正常登录。

PS:Discourse 在国内云环境中部署,因为众所周知的原因,软件包的下载可能会遇到问题,包括gem 的连接问题。

4.容器配置文件解析

vim /var/discourse/containers/app.yml

模板配置部分:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

暴露的端口:

expose:
  - "80:80"   # http
  - "443:443" # https
  #- "587:587" # SMTP TLS

环境变量部分,配置邮箱信息及论坛域名等:

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  EMBER_CLI_PROD_ASSETS: 1
  #DISCOURSE_DEFAULT_LOCALE: en
  UNICORN_WORKERS: 8
  DISCOURSE_HOSTNAME: discourse.example.club
  #DOCKER_USE_HOSTNAME: true
  DISCOURSE_DEVELOPER_EMAILS: 'admin@example.com'
  DISCOURSE_SMTP_ADDRESS: mail.example.com
  DISCOURSE_SMTP_PORT: 25
  DISCOURSE_SMTP_USER_NAME: admin@example.com
  DISCOURSE_SMTP_PASSWORD: "123456"
  DISCOURSE_SMTP_ENABLE_START_TLS: false          # (optional, default true)
  DISCOURSE_SMTP_DOMAIN: example.com
  DISCOURSE_NOTIFICATION_EMAIL: admin@example.com
  LETSENCRYPT_ACCOUNT_EMAIL: admin@example.com
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
  DISCOURSE_SMTP_AUTHENTICATION: login

持久卷申明:

volumes:
  - volume:
    host: /var/discourse/shared/standalone
    guest: /shared
  - volume:
    host: /var/discourse/shared/standalone/log/var-log
    guest: /var/log

运行钩子,插件安装等:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/jonmbake/discourse-ldap-auth.git
run:
  - exec: echo "Beginning of custom commands"
  - exec: rails r "SiteSetting.notification_email='admin@example.com'"
  - exec: echo "End of custom commands"

根据环境修改配置,修改配置文件后必须重新编译成新镜像才能生效:

cd /var/discourse/
./launcher rebuild app

5.高级配置

5.1 配置ldap插件

管理员登录-设置-插件,在安装的插件里选择ldap

ldap user create mode : auto
ldap lookup users by : username
ldap hostname : ldap.example.club
ldap port : 389
ldap method : plain
ldap base : ou=example,dc=example,dc=com
ldap uid : uid
ldap bind dn : cn=Manager,dc=example,dc=com
ldap password : 密码
ldap filter 

5.2 修改用户上传文件大小限制:

管理员登录-设置-文件:更改max image size kb 的值,此处设置为20M,更改max attachment size kb 的值,此处设置为200M,然后在后台修改nginx配置文件,否则设置不会生效:

cd /var/discourse/
./launcher enter app
cd /etc/nginx/conf.d/
sed -i 's/client_max_body_size 20m/client_max_body_size 400m/' discourse.conf
nginx -s reload

5.3 安装主题或扩展组件

管理员登录-设置-自定义-主题:

有多种安装方式:1.直接在线安装,需要访问境外地址,因为众所周知的原因会报502错误;2.本地安装,需要本地有主题或扩展组件的文件包;3.从git仓库安装,推荐方式,直接填写git仓库地址即可在线安装。

github上有很多美化主题和扩展组件,如pdf预览组件、搜索框组件、词汇提示等等可根据需要自行安装。

posted @   wanghongwei-dev  阅读(2159)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示