菜单
Discourse论坛Web UI

在独立环境和Nginx的环境中部署搭建Discourse论坛

最新记录Discourse独立环境部署和其他网站中与nginx环境共存部署方法

引言

Discourse一款功能强大、现代化的开源论坛软件,由Stack Overflow的联合创始人Jeff Atwood推出。它基于Ruby on Rails和Ember.js开发,使用PostgreSQL和Redis数据库。Discuz,被腾讯收购后许久没有更新,部署安装时一堆报错,我更倾向于discourse。

这篇文章将为诸位提供一份在独立环境或Nginx的环境中部署Discourse论坛De 指南,让你能够从头到尾顺利地完成Discourse的安装。本文非一蹴而就,而是站在了前人的肩膀上,参考并总结了大量线上的资料和线下自己部署的实践经验。开源不易,在此感谢为此开源项目做出贡献的人!

关于discourse特点

  1. 现代化、简洁的界面设计,支持响应式布局,在手机、平板和桌面上都有良好的浏览体验。
  2. 类似电子邮件的讨论模式,回复会自动嵌入到帖子中,方便追踪和查看最新回复。
  3. 搜索功能强大,支持全文检索、自动关键词高亮等。
  4. 用户可订阅感兴趣的主题,并接收新回复提醒。
  5. 支持Markdown格式编辑帖子,方便插入代码块、公式等。
  6. 内置的用户分类、信任等级等社区管理功能。
  7. 可扩展的插件生态系统,可由社区贡献多种插件扩展功能。
  8. 支持导入导出,便于从其它论坛系统迁移数据。
  9. 开发活跃,持续更新迭代,修复漏洞并优化性能。

准备工作

  • 域名:Discourse 不能通过 IP 地址来工作,需要一个域名作为论坛的站点地址,并将其解析到你要部署的服务器IP地址。
  • 邮箱:一个支持SMTP的邮箱,用户名和密码,用于Discourse的邮件通知(重要 用户注册、登录、密码找回等)
  • 服务器:内存大户,官方文档中推荐的最低配置是1 核2G、10GB磁盘。小机可添加交换分区,它的大小应该是物理内存的 1 到 2 倍,Swap 可以帮助缓解内存压力,但仅是一个备选项,过多依赖可能导致系统性能下降,建议优先考虑增加内存或者优化应用程序内存使用。

独立环境部署步骤

1. 系统环境准备

选择一个Linux发行版,如Ubuntu或CentOS,这里演示使用的是CentOS9,全新部署discourse。使用root用户连接到终端,复制粘贴下方代码,安装过程中需要root权限。更新系统包并安装必要的软件Git。

# 以CentOS9为例:
yum update -y
yum install git -y  #安装 Git

如果你是Ubuntu,则为

# 以Ubuntu为例:
apt update
apt upgrade -y   #更新软件包
apt install git -y  #安装 Git

安装Docker(可选)如果你想使用指定的 Docker 版本,你可以在你的服务器上自定义安装docker。 你的服务器上没有默认安装 Docker,那么执行 discourse-setup 时将会自动从Docker下载并安装。

2. 克隆 Discourse Docker 仓库

克隆Discourse Docker官方镜像到本地 /var/discourse 目录。

sudo -s    #获取root权限
git clone https://github.com/discourse/discourse_docker.git /var/discourse

3. 配置Discourse

运行 discourse-setup 安装脚本

cd /var/discourse
chmod 700 containers
./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服务器地址,例如是Google邮箱则为smtp.gmail.com
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]:     #按回车跳过

等待构建,整个安装启动过程可能需要耗费 十多分钟 来配置 Discourse,具体时间根据服务器性能决定。一旦初始化安装配置完成后,你的 Discourse 应该可以通过你配置的域名在浏览器上访问可以看见注册向导了。

Nginx的环境中部署

官网提供的脚本虽然安装便利,但安装时默认脚本会占用443、80端口,如果此服务器上有其他的网站,则无法安装。如果你在内网环境中部署,也可使用此方法。的此时就要自定义app.yml 文件。首先按照上文更新并安装必要软件后,手动安装docker

1. 安装docker

这里给大家分享一个docker官方提供的安装命令,通过此命令你可以在任何Linux发行版上安装docker。参考这篇文章官网脚本一键安装docker和docker compose、docker更换国内源 | BOBO Blog (soulcloser.com)

2. 克隆 Discourse Docker 仓库

还是一样克隆Discourse Docker官方镜像到本地 /var/discourse 目录。不过这里要手动复制、修改配置文件。

sudo -s 
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers
cp samples/standalone.yml containers/app.yml 
vi containers/app.yml   #编辑 app.yml 文件

进入编辑页面,要修改的地方和上文一样,找到对应的值修改就行了。这里我只单独贴自定义端口修改位置的图片了,以自定义80端口为8080、443端口为8443为例。检查无误后,保存退出

Discourse论坛共存部署指南

3. 重构discourse

接着执行下方命令重构并启动:

./launcher bootstrap app
./launcher start app

4. 配置反向代理

为了使 Discourse 和其他网站程序能够共存,我们将使用 Nginx 作为反向代理服务器。以下是 Nginx 的配置示例,此配置会将 HTTP请求重定向到 HTTPS,下述配置中:

  • yourdomain.com 应替换为你的域名。
  • ssl_certificate 和 ssl_certificate_key 应替换为你的 SSL 证书和私钥的路径。
  • 重要8080 是 Discourse 容器内部http使用的端口,那用https(8443)端口可以吗?不行,https只能通过域名访问,discourse是禁止了IP地址访问论坛的,但是我测试使用http可以访问,改为https会提示拒绝连接。
server {
    listen 80;
    server_name yourdomain.com;

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name yourdomain.com;

    # SSL 配置
    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private-key.key;

    # 其他 SSL 配置...

    location / {
        proxy_pass http://localhost:8080/;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Proxy "";
    }
}

通过以上步骤,就可以在同一服务器上成功部署 Discourse 论坛和其他网站程序共存。现在你只需要跟着步骤注册就🆗演示地址:https://bbs.soulcloser.com

Discourse论坛共存部署指南

总结

借助discourse_docker项目, 我们只需极少的命令和配置,就能在服务器上部署一个全新的Discourse论坛实例。Docker的隔离性使它健壮、高效,并且便于日后升级维护。接下来,就大展身手,为你的社区打造一个活跃、强大的论坛平台吧!

如果这篇文章对你有帮助,可以分享给你的朋友。需要免费的技术支持的话,可以在评论区留言或者在这里注册账户与我取得在线联系https://bbs.soulcloser.com 😎文章分享链接:https://www.soulcloser.com/3921

版权声明 © 2024 BOBO Blog :原创文章,本文不允许在未获取作者同意的情况下以任何形式复制其内容、摘编、转载。

订阅评论
提醒
guest
0 评论
最新
最旧 最多投票
内联反馈
查看所有评论