Discourse在Rainbond上的部署是怎样的

发布时间:2021-11-18 17:18:03 作者:柒染
来源:亿速云 阅读:131

Discourse在Rainbond上的部署是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

开源社区Discourse在Rainbond上的部署

概述

Discourse 是一个完全开源的论坛平台。具有丰富的插件库与主题库,适用于开源社区的构建。Rainbond官方社区就是基于Discourse搭建的实际案例。

Rainbond官方社区建立之初就已经使用了Discourse,当时的版本为 1.5.4。时过境迁,为了更好的社区体验,Rainbond社区运营团队决定部署最新版本的Discourse社区,并将原社区的数据迁移到新社区中。

小编会详细介绍如何在Rainbond容器云平台上部署Discourse,以及在整个部署乃至迁移数据过程中所趟平的坑。对于有意搭建基于Discourse的社区的小伙伴,会有很大的帮助。

基于应用市场快速安装

Discourse 已经发布到了Rainbond应用市场,可以一键部署安装,即点即用。

Discourse在Rainbond上的部署是怎样的

点击安装,选择应用后稍等一会,即可访问你的Discourse了

Discourse在Rainbond上的部署是怎样的

在正式使用前,一定要修改以下环境变量:

修改完成后,就可以继续注册使用了。

Discourse应用如何制作

在使用旧版本Discourse的时候,为了将其容器化,我们做了很多工作。但在当前版本,Discourse官方已经支持并且主推容器化部署,这对于将Discourse部署在Rainbond容器云平台非常友好。

接下来的部分,我将说明如何制作一个即点即用的Discourse应用。

获取镜像

部署的第一步,就是获取到Discourse的镜像。

区别于一般的容器化部署,Discourse并没有将它自己的镜像托管于Docker Hub,而是为用户准备了一套完整的工具,可以让用户高度自定义自己需要的镜像,这套工具就是discourse_docker。在这套工具里,用户可以根据其提供的模版自定义部署的方式、包含的插件等信息,并通过一条命令,快速构建对应的镜像;也可以利用它来管理本机正在运行的docker化部署的Discourse。

Discourse部署支持 all in one 的 Standalone 模式,也支持适用于生产的 Multiple 模式。Multiple 模式的意思,就是将Discourse 的WEB部分,和后端数据库Postgresql、缓存中间件Redis分离部署。

本次部署,将使用 Multiple 模式。最终的拓扑,将会是下面这种情况:

Discourse在Rainbond上的部署是怎样的

git clone https://github.com/discourse/discourse_docker.git

当前构建出来的data镜像,是一个合并了 postgresql 和 redis 的镜像。这还不符合我们想要的部署方式,我要将它进行进一步的拆分。

我决定使用官方镜像来运行 postgresql 和 redis。然后对 postgresql 进行处理,使之可以自动初始化。

redis 部署

这一步比较简单,直接基于镜像部署一个标准的redis即可:

Discourse在Rainbond上的部署是怎样的

postgresql部署

基于官方的postgresql镜像做了进一步处理,使之可以自动初始化Discourse所需要的数据库。

部署的方式使用了基于 Dockerfile 的源码构建,项目地址:https://github.com/dazuimao1990/pri-postgresql

关键Dockerfile部分解析:

FROM postgres:10-alpine
MAINTAINER guox@goodrain.com
# 下面的步骤,会将初始化数据用的sql脚本放置在指定目录下
ADD sql/*.sql /docker-entrypoint-initdb.d/
ADD docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
ENV TZ Aisa/Shanghai
ENV LANG en_US.utf8
ENV PGDATA /var/lib/postgresql/data
ENV PG_MAJOR 10
ENV PG_VERSION 10.11
VOLUME /var/lib/postgresql/data
EXPOSE 5432

自动初始化的原理参见:https://hub.docker.com/_/postgres 中的 Initialization scripts 部分。docker化的数据库,大部分都支持这种方式自动初始化,这样做的好处是,基于此镜像的容器在首次启动时,不需要其他操作,就会自动执行sql脚本完成初始化。对于Rainbond部署而言,在将这样的数据库作为应用的一部分发布到应用市场后,执行一键安装可以达到即安即用的效果。

这一步的另一个重点在于如何获取初始化用的sql脚本。这需要利用到上个步骤构建出来的数据库镜像。

将这个镜像启动为容器:

./launcher start data

这时就会启动一个已经初始化好了的data容器。我们需要将它里面的数据库 discourse 备份出来。

docker exec -ti data bash
pg_dump -d discourse -h 127.0.0.1 -U discourse > data.sqlpg_dump -d discourse -h 127.0.0.1 -U discourse > /shared/data.sql

输入密码后即可开始备份,备份完成后在服务器的 /var/discourse/shared/data/ 目录下,找到对应的 data.sql 文件。

在官方镜像使用 data.sql 初始化的时候,发现一个小问题,官方镜像没有默认创建role:postgres 故此手动在 data.sql前面加入以下内容:

--
-- This row is added manually because when the SQL is imported manually, recived role "postgres" does not exist
-- 

CREATE USER postgres SUPERUSER;

准备就绪后,就可以在Rainbond部署订制的postgresql 了

Discourse在Rainbond上的部署是怎样的

构建之前,需要定义高级设置:

部署Discourse_web

利用我们已经推送好的 rainbond/discourse_web:2.4.0-beta8 镜像,来部署WEB服务部分。

Discourse在Rainbond上的部署是怎样的

点击构建之前,进行高级设置:

建立依赖

利用Rainbond依赖关系,将三个服务建立起正确的依赖关系。

访问

访问discourse_web的80端口所对应的域名,看到欢迎页面即可证明系统部署完成了。

一些踩过的坑

邮件配置

Discourse初始化安装,是会向管理员的邮箱发送注册邮件的,所以正确的配置邮件服务是重中之重,官方推荐的邮件服务器及配置方式参见:

https://github.com/discourse/discourse/blob/master/docs/INSTALL-email.md

数据恢复

如果你是一个向我一样的老版本用户,那么将旧版本的数据导入到新版本的 Discourse,就会是个非常必要的操作。Discourse支持全站数据的备份与恢复,但是我在实际恢复过程中遇到了很多问题,究其原因还是我的旧版本实在是太老了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. Golang部署在Linux上的方法
  2. MySQL如何部署在Linux上

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rainbond discourse

上一篇:Docker私有仓库Registry如何搭建

下一篇:OPENSTACK开源虚拟化KVM如何搭建部署

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》