0
来自 Discoze 社区
反向代理配置 伪静态 重定向 这三个位置检查下 ,在安装的那一刻打包生成的。
因此,1Panel 和宝塔选择了使用知名第三方镜像服务商 Bitmain Docker 打包的镜像——这个镜像,把 Discourse 的编译工具也打包进了镜像里!
这意味着,当你在 1Panel 和宝塔的一键部署功能部署 Discourse 时,它首先会启动一个容器,在这个容器里再编译一份镜像,然后再把这个镜像的运行,映射到最外层。
在这个过程中,面板里的很多操作 ,会产生意外操作。比如,安装插件:

当你根据 1Panel 官方的方法,对一键部署的 Discourse 安装插件时,Discourse 可能会崩溃。
再比如,如果你在 1Panel 里对部署好的 Discourse 点击了“重建”,那么 Discourse 也会崩溃并且再也无法启动。
这些问题没有很好的解决方案,一切根源来自于 Discourse 的构建方式。
因此,综合“你应该用 Linux 运维面板来管理 Discourse”和“你没法用 Linux 运维面板安装 Discourse ”两个看似不和调和的矛盾之后,我们正确的选择是:
使用 Linux 面板运维服务器,然后按照 Discourse 官方推荐安装方式进行安装。

进入 1Panel > 系统 > 文件,创建一下这个目录:/opt/1panel/apps/discourse/
我们之所以将 discourse 放在 1Panel 的 Apps 目录之下,是为了方便在后续使用 1Panel 进行备份时寻找路径。
使用 SSH 连入服务器,然后执行以下命令:
textsudo -s git clone https://github.com/discourse/discourse_docker.git /opt/1panel/apps/discourse cd /opt/1panel/apps/discourse chmod 700 containers
编者按:
1、如果系统没有安装git先执行以下命令安装。
debian/ubantu系统执行
sudo apt update sudo apt install -y git
CentOS执行sudo yum install -y git
2、原教程中目录权限这里是chmod 700 1panel ,实际只需要设置containers的权限。另外不要随便去改变大目录的权限,以免造成不可逆的损失。里面有各种服务,权限都不一样,本人亲测把系统搞挂过,哈哈哈!
因为 Linux 面板会占用默认的 80 443 端口,并且我们的安装目录也和默认的不一样,所以我们不能直接按照官方执行 ./discourse-setup,而是需要先编辑配置!
我们回到 1Panel 的可视化界面,找到 /opt/1panel/apps/discourse/samples/standalone.yml 这个文件,这是用于单容器安装的模板配置文件。
我们将它复制并重命名到 /opt/1panel/apps/discourse/containers/app.yml 这个位置,然后用 1Panel 的文本编辑器直接打开编辑。
需要编辑的点有以下几个:
textexpose: - "127.0.0.1:8973:80" # http - "127.0.0.1:4433:443" # https
这里,我们将容器在宿主机的端口设置为了 8973 和 4433,这样就不会因为面板占用端口而安装失败了,你也可以改成别的端口,但记住,后面要用。同时,我们禁止了容器直接向公网暴露自己,方便我们使用 1Panel 防火墙。
textDISCOURSE_HOSTNAME: 'vibe.akashio.com'
不必多说,就是你的域名。
管理员邮件地址
DISCOURSE_DEVELOPER_EMAILS: 'you@me.com'
这个一定要提前设好自己的邮箱,不然最后一步没法激活管理员账号。
邮件发送配置
textDISCOURSE_SMTP_ADDRESS: smtp.you.com DISCOURSE_SMTP_PORT: 587 DISCOURSE_SMTP_USER_NAME: 邮箱 DISCOURSE_SMTP_PASSWORD: 密码 DISCOURSE_NOTIFICATION_EMAIL: 发信邮箱 # (address to send notifications from)
这个很少有人能一次性配对,考虑到不同人使用不同的邮件供应商,你们可以在网上搜搜怎么配。Discourse 的安装向导,必须在收到管理员激活邮件之后才能正常完成。但没关系,我们稍后有一节专门讲这个。【编者注释:端口不要用465,用25一般不会有问题。部分邮件服务商会要求DISCOURSE_SMTP_USER_NAME和DISCOURSE_NOTIFICATION_EMAIL要一致,比如阿里云邮箱推送服务。这里要注意下。 】
textvolumes: - volume: host: /opt/1panel/apps/discourse/shared/standalone guest: /shared - volume: host: /opt/1panel/apps/discourse/shared/standalone/log/var-log guest: /var/log
相当于将两个宿主机文件映射到运行容器内,使得 Discourse 每次“重建”时不会丢失内容。后续,你也可以用 1Panel 的文件直接去管理这些目录,不用深入 Docker 终端了。
完成之后,检查一遍,点击确认保存。
回到终端,如果已经断开连接了,你需要重新用 SSH 连接。
cd /opt/1panel/apps/discourse 回到安装目录。
然后执行:
./launcher rebuild app
等待安装结束,即可完成安装了。【编者注:这里要等一会儿,不要急。大概十来分钟】
如果一切正常,终端将不会弹出任何错误提示,并回到命令行。然后,你将在 1Panel 的“容器”面板里,看到一个已经在运行的容器:【编者注:安装中间会有一个临时的容器,要等到app出来才安装完。】


如图,进入 1Panel 的网站里,创建一个新的网站,类型选择反向代理,域名写上你刚才在配置里填的域名,反向代理的地址填上 localhost:8973。如果你刚才改了端口,这里就也要改一下端口。

在 1Panel 里,点刚才创建的网站,点配置,选择 HTTPS,打开自动跳转,根据提示跳转到证书页面创建证书。然后回到这里配置好证书,你的安装就结束了。
如果你之前的邮件配置正确,此时,你可以用浏览器访问你的 yourname.com 完成剩下的安装进程。
安装过程中出现任何问题,你都可以通过修改配置,重新执行 ./launcher rebuild app 来继续安装。
啊,正常人很难一次配置成功。
如果失败了怎么办?我们假设你已经完成了上面的所有步骤,并且卡在 Web 界面无法激活管理员账号。
首先,用终端连接服务器,然后 cd /opt/1panel/apps/discourse 去到安装目录。
然后执行 ./discourse-doctor 命令,该命令会执行一个诊断程序,并且会让你提供一个邮件地址发送测试邮件。你可以根据发送结果的错误,在网上搜索,你到底是哪里配置错了。
然后,你需要修改你的 SMTP 设置,怎么修改呢?
在 1Panel 的可视化面板里,进入 /opt/1panel/apps/discourse/containers 这个目录,然后用文本编辑器编辑 app.yml ,直接编辑你之前的 SMTP 设置。
编辑完成后保存,回到终端。
在终端中执行 ./launcher destroy app 然后等待执行结束。
再执行 ./launcher start app 等待执行结束。
如果你只是修改 SMTP,是不需要./launcher rebuild app的,destroy 和 start 就能生效,并且速度更快。
然后,你可以重复执行 ./discourse-doctor 诊断进行调试。
最新版的Discouse已经内置了官方的核心插件,只有第三方和一些新的插件需要这样安装。如下文中的Discourse AI就不需要安装了,不然会报错!不然会报错!不然会报错!
在 1Panel 的可视化面板里,进入 /opt/1panel/apps/discourse/containers 这个目录,然后用文本编辑器编辑 app.yml 。然后找到如下这一段:
texthooks: after_code: - exec: cd: $home/plugins cmd: - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
你需要的,就是在 https://github.com/discourse/docker_manager.git 这一行下面,添加一行你插件的地址。比如 Discourse AI 这个插件的地址是 https://github.com/discourse/discourse-ai,那么,修改后的就是:
texthooks: after_code: - exec: cd: $home/plugins cmd: - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git - sudo -E -u discourse git clone https://github.com/discourse/discourse-ai.git
有两个注意点,一个是结尾别忘了加.git,另一个是,如果你原本的那条里没有- sudo -E -u discourse这个前缀,那么你新增的插件行业不要有。
编辑完成后,确认保存。
然后,我们用 SSH 连接服务器。
执行 cd /opt/1panel/apps/discourse 去到安装目录。
然后执行:
./launcher rebuild app
等待执行完毕,插件安装完成。
在这个教程的安装中,Discourse 所需的所有资源被打包成一个整体映像,在 Docker 中运行。可由 1Panel 容器面板管理。
用于编译映像的所有文件,存储于 /opt/1panel/apps/discourse 文件夹之中,你可以用 1Panel 文件面板进行图形化管理。
容器运行于宿主机,而非容器中的容器,所以,使用 Discourse CLI 的各项管理命令(如重建),需要使用 SSH 连接至宿主机。这一步,你也可以用 1Panel 的 Web 终端来完成。2
> 2. 访问地址 > > ``` > DISCOURSE_HOSTNAME: 'vibe.akashio.co...