最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Rainbond云原生部署開源社區(qū)Discourse的配置過程

 更新時間:2022年04月21日 11:17:00   作者:Rainbond?作者  
這篇文章主要為大家介紹了Rainbond云原生部署開源社區(qū)Discourse配置過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

概述

Discourse 是一個完全開源的論壇平臺。具有豐富的插件庫與主題庫,適用于開源社區(qū)的構(gòu)建。Rainbond官方社區(qū)就是基于Discourse搭建的實際案例。

Rainbond官方社區(qū)建立之初就已經(jīng)使用了Discourse,當(dāng)時的版本為 1.5.4。時過境遷,為了更好的社區(qū)體驗,Rainbond社區(qū)運營團隊決定部署最新版本的Discourse社區(qū),并將原社區(qū)的數(shù)據(jù)遷移到新社區(qū)中。

這篇文檔,會詳細(xì)介紹如何在Rainbond容器云平臺上部署Discourse,以及在整個部署乃至遷移數(shù)據(jù)過程中所趟平的坑。對于有意搭建基于Discourse的社區(qū)的小伙伴,會有很大的幫助。

了解更多有關(guān)Discourse的信息:

Discourse官方網(wǎng)站

Discourse官方社區(qū)

基于應(yīng)用市場快速安裝

Discourse 已經(jīng)發(fā)布到了Rainbond應(yīng)用市場,可以一鍵部署安裝,即點即用。

discoure-install

點擊安裝,選擇應(yīng)用后稍等一會,即可訪問你的Discourse了

discoure-register

在正式使用前,一定要修改以下環(huán)境變量:

環(huán)境變量:

DISCOURSE_DB_PASSWORD=你自定義的數(shù)據(jù)庫密碼
DISCOURSE_DEVELOPER_EMAILS=管理員的郵箱地址
DISCOURSE_HOSTNAME=為社區(qū)準(zhǔn)備的域名,如果希望使用Rainbond默認(rèn)為80端口生成的域名,這個值設(shè)置為 ${DOMAIN}
DISCOURSE_SMTP_ADDRESS=可用的smtp服務(wù)器
DISCOURSE_SMTP_PORT=smtp服務(wù)器的端口
DISCOURSE_SMTP_USER_NAME=smtp賬戶
DISCOURSE_SMTP_PASSWORD=smtp賬戶的密碼

修改完成后,就可以繼續(xù)注冊使用了。

Discourse應(yīng)用如何制作

在使用舊版本Discourse的時候,為了將其容器化,我們做了很多工作。但在當(dāng)前版本,Discourse官方已經(jīng)支持并且主推容器化部署,這對于將Discourse部署在Rainbond容器云平臺非常友好。

接下來的部分,我將說明如何制作一個即點即用的Discourse應(yīng)用。

獲取鏡像

部署的第一步,就是獲取到Discourse的鏡像。

區(qū)別于一般的容器化部署,Discourse并沒有將它自己的鏡像托管于Docker Hub,而是為用戶準(zhǔn)備了一套完整的工具,可以讓用戶高度自定義自己需要的鏡像,這套工具就是discourse_docker。在這套工具里,用戶可以根據(jù)其提供的模版自定義部署的方式、包含的插件等信息,并通過一條命令,快速構(gòu)建對應(yīng)的鏡像;也可以利用它來管理本機正在運行的docker化部署的Discourse。

Discourse部署支持 all in one 的 Standalone 模式,也支持適用于生產(chǎn)的 Multiple 模式。Multiple 模式的意思,就是將Discourse 的WEB部分,和后端數(shù)據(jù)庫Postgresql、緩存中間件Redis分離部署。

本次部署,將使用 Multiple 模式。最終的拓?fù)?,將會是下面這種情況:

image-20191226093122462

環(huán)境的要求

首先,我們需要有一個可以運行docker服務(wù)的環(huán)境,如果你已經(jīng)安裝了Rainbond容器云平臺,那么集群中任何一個節(jié)點,都可以滿足你的需要。如果你還沒有安裝Rainbond,或者根本不知道它是什么,你需要點擊了解一下。

獲取discourse_docker

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

配置模版

在項目的根目錄中,名為 samples 的目錄下,會有我們所需要的模版文件 web_only.yml data.yml ,將這兩個模版文件拷貝到項目根目錄下的 containers 目錄下。

自定義配置

Discourse最主要的自定義在于主題(theme) 和插件(plugins),其中主題可以在網(wǎng)站設(shè)置中配置,而插件的安裝,則需要修改上述的模版文件。

編輯web_only.yml文件,在第84行附近找到如下段落,并追加插件地址:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-whos-online.git

具體原理及操作,點擊了解一下

其他的標(biāo)準(zhǔn)配置,如郵件服務(wù)器的配置,均以環(huán)境變量的方式指定,當(dāng)前可以保持默認(rèn),部署于Rainbond的時候,可以支持自定義環(huán)境變量進行替換。

關(guān)于Discourse 環(huán)境變量配置的說明

關(guān)于Rainbond如何自定義環(huán)境變量

  • 構(gòu)建WEB服務(wù)鏡像

使用命令行工具 launcher 來構(gòu)建 web_only 鏡像:

./launcher bootstrap web_only

構(gòu)建完成后,在服務(wù)器的本地鏡像列表里,就會出現(xiàn)對應(yīng)的鏡像:

root@localhost:~/discourse_docker# docker images | grep web_only
local_discourse/web_only   latest              79a99d0d8fd1        7 days ago          2.83GB

將這個鏡像推送至Docker hub或者私有的鏡像倉庫備用即可,在我的部署環(huán)境里,我將其推送到了 Docker hub,具體的鏡像地址為: rainbond/discourse_web:2.4.0-beta8。

構(gòu)建數(shù)據(jù)庫鏡像

使用命令行工具構(gòu)建 data 鏡像

./launcher bootstrap data

構(gòu)建完成后,在服務(wù)器的本地鏡像列表里,就會出現(xiàn)對應(yīng)的鏡像:

root@iZj6chkije5xk0gfyvcrzyZ:~/discourse_docker# docker images | grep data
local_discourse/data       latest              76e100480749        2 weeks ago         2.35GB

這個鏡像不必推送到鏡像倉庫,后續(xù)的步驟會繼續(xù)拆分這個鏡像,并進行數(shù)據(jù)自動初始化的處理。

當(dāng)前構(gòu)建出來的data鏡像,是一個合并了 postgresql 和 redis 的鏡像。這還不符合我們想要的部署方式,我要將它進行進一步的拆分。

我決定使用官方鏡像來運行 postgresql 和 redis。然后對 postgresql 進行處理,使之可以自動初始化。

redis 部署

這一步比較簡單,直接基于鏡像部署一個標(biāo)準(zhǔn)的redis即可:

image-20191226102759385

postgresql部署

基于官方的postgresql鏡像做了進一步處理,使之可以自動初始化Discourse所需要的數(shù)據(jù)庫。

部署的方式使用了基于 Dockerfile 的源碼構(gòu)建,項目地址:https://github.com/dazuimao1990/pri-postgresql

關(guān)鍵Dockerfile部分解析:

FROM postgres:10-alpine
MAINTAINER guox@goodrain.com
# 下面的步驟,會將初始化數(shù)據(jù)用的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化的數(shù)據(jù)庫,大部分都支持這種方式自動初始化,這樣做的好處是,基于此鏡像的容器在首次啟動時,不需要其他操作,就會自動執(zhí)行sql腳本完成初始化。對于Rainbond部署而言,在將這樣的數(shù)據(jù)庫作為應(yīng)用的一部分發(fā)布到應(yīng)用市場后,執(zhí)行一鍵安裝可以達到即安即用的效果。

這一步的另一個重點在于如何獲取初始化用的sql腳本。這需要利用到上個步驟構(gòu)建出來的數(shù)據(jù)庫鏡像。

將這個鏡像啟動為容器:

./launcher start data

這時就會啟動一個已經(jīng)初始化好了的data容器。我們需要將它里面的數(shù)據(jù)庫 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

輸入密碼后即可開始備份,備份完成后在服務(wù)器的 /var/discourse/shared/data/ 目錄下,找到對應(yīng)的 data.sql文件。

在官方鏡像使用 data.sql 初始化的時候,發(fā)現(xiàn)一個小問題,官方鏡像沒有默認(rèn)創(chuàng)建role:postgres 故此手動在 data.sql前面加入以下內(nèi)容:

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

準(zhǔn)備就緒后,就可以在Rainbond部署訂制的postgresql 了

image-20191226111213717

構(gòu)建之前,需要定義高級設(shè)置:

組件部署類型 :有狀態(tài)服務(wù)

環(huán)境變量:

POSTGRES_DB=discourse

POSTGRES_PASSWORD=自定義的數(shù)據(jù)庫密碼

POSTGRES_USER=discourse

部署Discourse_web

利用我們已經(jīng)推送好的 rainbond/discourse_web:2.4.0-beta8 鏡像,來部署WEB服務(wù)部分。

image-20191226114203876

點擊構(gòu)建之前,進行高級設(shè)置:

環(huán)境變量:

DISCOURSE_DB_HOST=127.0.0.1
DISCOURSE_DB_PASSWORD=你自定義的數(shù)據(jù)庫密碼
DISCOURSE_DB_USERNAME=discourse
DISCOURSE_DEVELOPER_EMAILS=管理員的郵箱地址
DISCOURSE_HOSTNAME=為社區(qū)準(zhǔn)備的域名,如果希望使用Rainbond默認(rèn)為80端口生成的域名,這個值設(shè)置為 ${DOMAIN}
DISCOURSE_REDIS_HOST=127.0.0.1
DISCOURSE_SMTP_ADDRESS=可用的smtp服務(wù)器
DISCOURSE_SMTP_PORT=smtp服務(wù)器的端口
DISCOURSE_SMTP_USER_NAME=smtp賬戶
DISCOURSE_SMTP_PASSWORD=smtp賬戶的密碼

建立依賴

利用Rainbond依賴關(guān)系,將三個服務(wù)建立起正確的依賴關(guān)系。

discourse_web 依賴 postgresql10

discourse_web 依賴 redis 訪問

訪問

discourse_web的80端口所對應(yīng)的域名,看到歡迎頁面即可證明系統(tǒng)部署完成了。

一些踩過的坑

郵件配置

Discourse初始化安裝,是會向管理員的郵箱發(fā)送注冊郵件的,所以正確的配置郵件服務(wù)是重中之重,官方推薦的郵件服務(wù)器及配置方式參見:

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

數(shù)據(jù)恢復(fù)

如果你是一個向我一樣的老版本用戶,那么將舊版本的數(shù)據(jù)導(dǎo)入到新版本的 Discourse,就會是個非常必要的操作。Discourse支持全站數(shù)據(jù)的備份與恢復(fù),但是我在實際恢復(fù)過程中遇到了很多問題,究其原因還是我的舊版本實在是太老了。具體的解決方式,請參見下面的帖子,我得到了來自官方工程師大牛的幫助:

https://meta.discourse.org/t/restore-from-old-version-to-a-new-version-of-discourse-failed/135545

以上就是Rainbond云原生部署開源社區(qū)Discourse的配置過程的詳細(xì)內(nèi)容,更多關(guān)于Rainbond云原生部署開源社區(qū)Discourse的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解kubernetes pod的編排和生命周期

    詳解kubernetes pod的編排和生命周期

    這篇文章主要介紹了kubernetes pod的編排和生命周期的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用K8S,感興趣的朋友可以了解下
    2021-04-04
  • k8s如何使用NFS作為StorageClass提供動態(tài)存儲

    k8s如何使用NFS作為StorageClass提供動態(tài)存儲

    本文主要介紹了k8s中的StorageClass,包括其定義、引入的原因、實現(xiàn)方式、定義方法以及回收策略對數(shù)據(jù)的影響等,首先,StorageClass是在K8s集群中創(chuàng)建用于動態(tài)PV的管理,可以鏈接至不同的后端存儲,對存儲的請求可以指向StorageClass
    2024-09-09
  • CentOS?8.2?k8s?基礎(chǔ)環(huán)境配置

    CentOS?8.2?k8s?基礎(chǔ)環(huán)境配置

    這篇文章主要介紹了CentOS?8.2?k8s?基礎(chǔ)環(huán)境配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • 在K8S中實現(xiàn)會話保持的兩種方案

    在K8S中實現(xiàn)會話保持的兩種方案

    這篇文章主要介紹了在K8S中實現(xiàn)會話保持的兩種方案,每種方案結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 一文講解如何獲取k8s容器里運行的jar包

    一文講解如何獲取k8s容器里運行的jar包

    K8S是Google開源的容器集群管理系統(tǒng),其設(shè)計目標(biāo)是在主機集群之間提供一個能夠自動化部署、可拓展、應(yīng)用容器可運營的平臺,這篇文章主要給大家介紹了關(guān)于如何獲取k8s容器里運行的jar包的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Kubernetes?權(quán)限管理認(rèn)證鑒權(quán)詳解

    Kubernetes?權(quán)限管理認(rèn)證鑒權(quán)詳解

    這篇文章主要為大家介紹了Kubernetes?權(quán)限管理認(rèn)證鑒權(quán)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運行流程

    Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運行流程

    這篇文章主要為大家介紹了Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運行流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Kubernetes調(diào)度管理優(yōu)先級和搶占機制詳解

    Kubernetes調(diào)度管理優(yōu)先級和搶占機制詳解

    這篇文章主要為大家介紹了Kubernetes調(diào)度管理優(yōu)先級和搶占機制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 不同k8s集群間服務(wù)如何相互訪問實現(xiàn)詳解

    不同k8s集群間服務(wù)如何相互訪問實現(xiàn)詳解

    這篇文章主要為大家介紹了不同k8s集群間服務(wù)如何相互訪問實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Kubernetes中crictl的詳細(xì)用法教程與應(yīng)用實戰(zhàn)記錄

    Kubernetes中crictl的詳細(xì)用法教程與應(yīng)用實戰(zhàn)記錄

    crictl作為Kubernetes的容器運行時接口(CRI)的命令行工具,為Kubernetes的調(diào)試和管理提供了強大的支持,通過本文的詳細(xì)介紹,你應(yīng)該已經(jīng)掌握了crictl的基本安裝、配置、常用命令以及高級用法,需要的朋友可以參考下
    2024-07-07

最新評論

益阳市| 南昌县| 湛江市| 拜城县| 新化县| 临西县| 海丰县| 新疆| 扶沟县| 天祝| 铜川市| 勃利县| 佳木斯市| 大庆市| 南靖县| 辽阳县| 襄汾县| 静安区| 靖远县| 改则县| 石城县| 诸城市| 大庆市| 太白县| 五河县| 宣威市| 桦川县| 仪陇县| 平遥县| 伊川县| 屯门区| 仙桃市| 白山市| 大冶市| 建水县| 中宁县| 祁东县| 乡城县| 锡林浩特市| 九江市| 上高县|