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预览组件、搜索框组件、词汇提示等等可根据需要自行安装。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?