溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用全站CDN部署Discourse論壇

發布時間:2022-01-14 17:42:21 來源:億速云 閱讀:153 作者:小新 欄目:服務器

這篇文章將為大家詳細講解有關怎么用全站CDN部署Discourse論壇,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Discourse 介紹

Discourse 是一款由 Stack Overflow 的聯合創始人——Jeff Atwood,基于 Ruby on Rails 開發的開源論壇。相較于傳統論壇,Discourse 從他全面開放的開源態度、簡介明了的頁面風格到其特有的內容運作體系都在證明自己是一款為下一個 10 年的互聯網而設計的產品?,F在,諸如 Car Talk 等國外知名產品都采用 Discourse 為論壇方案。

作為一個開源的論壇項目,Discourse 相對其他的論壇有以下亮點:

  • 高度可定制:從發帖等級要求權限到論壇帖子標題最少字數要求,Discourse 在論壇設置里羅列了 25 設置大項,300+ 個論壇小項,即使大家都使用 Discourse 搭建論壇但是每個用 Discourse 搭建的論壇都有自己的風格。

  • 插件:Discourse 官方及 Discourse 開源社區用戶開發了豐富的插件可供使用,比如:個性化導航、自定義論壇封面。

  • 集成:可接入第三方產品,Google Analytics、 Slack、Wordpress 都在支持之列。

  • 免費:雖然 Discourse 有 $100/Month 的托管服務,但是你可以完全自行部署免費使用 Discourse 服務。

  • 其他:Discourse 還有其他許多的好處,舉個例子,它提供了一個機器人 Discobot?是一個可自定義的 bot,交互式地教新用戶使用平臺的許多功能,例如為主題添加 書簽),單框鏈接(嵌入的預覽),添加 emoji表情,非常簡單的格式設置,添加圖片回復,標記帖子以及如何使用搜索功能。

豐富的插件、可自定義論壇設置便是 Nebula Graph 選擇 Discourse 最大的原因,而本文不在于介紹如何搭建 Discourse(搭建 Discourse 是一個簡單的活,可自行搜索教程),本文旨在介紹圖數據庫 Nebula graph 如何利用 CDN 來部署 Discourse。

部署 Discourse

自托管的原因

盡管 Discourse 官方的托管服務,但由于國內的訪問質量不穩定、不能自由的修改插件和自定義網絡設置,因此我們決定自行托管這項服務?;谧酝泄芊?,我們對網絡、插件系統做了一些自定義修改,使得目前 Nebula Graph社區有著更好的訪問速度和功能。

自托管論壇服務要求

經測試以下配置清單可以完全滿足我們部署 Discourse 的要求:

  • 2G 內存以上的 Linux 服務器,如果使用 1G 內存的主機,則需要開啟 SWAP 分區。

  • 具備完整控制權的域名,注冊郵件服務和 CDN 服務時我們會用到它。

  • 一個 Cloudflare 賬號,這會對加速網站和提高安全性有幫助。

  • 一個可用的 SMTP 郵件服務。

  • 為 Linux 服務器部署 Docker 服務,國內用戶可添加 Azure 中國、七牛云的鏡像域名

部署實踐

Cloudflare 介紹

Cloudflare 是一家覆蓋全世界主要地區的 CDN 服務商,在提供基本的 CDN 服務同時,他們還提供高質量的 DNS 查詢、DDOS 保護、緩存加速服務。相比其他的 CDN 服務商,他們產品理念更為先進,不僅有著良好的服務質量且擁有非常低廉的價格(通常情況下甚至是免費的),因此目前 Cloudflare 的用戶規模非常龐大,是值得首選的CDN服務商。

設定 Cloudflare 的 DNS記錄

先設定 DNS 記錄可減少首次部署時無法通過 Let’s encrypt 申請證書的概率。在 Cloudflare 的 DNS 配置中,添加類型為 A 的記錄指向服務器的 IP 地址即可。

怎么用全站CDN部署Discourse論壇

這里需提醒下,不要將 Proxy status 設置為“Proxied”,這會導致頁面因重定向次數過多而無法訪問。我們將在完成正確的配置后開啟 Proxy status 設置。

配置 Cloudflare SSL/TLS

Full 和 Flexible 是 Cloudflare 上最常用的兩種 SSL 模式,在正確的啟用 CDN 前,需要對其進行設置。首先來到 SSL/TLS 設置面板,選擇 Full 模式,這種方式會確保 CDN 回源時也可以通過 HTTPS 來訪問源站,有效地提高了內容安全性。

怎么用全站CDN部署Discourse論壇

然后進入 Origin Server 標簽,進行創建證書的操作,在私鑰類型中選擇 RSA,BTW,這是最具兼容性的證書類型,ECDSA 則具有更好的性能。

在被證書保護的域名列表中輸入論壇的域名,例如 Nebula Graph 論壇地址為: discuss.nebula-graph.io,證書有效期選擇 1 年即可。點擊 Next 后將會獲取到證書的公鑰和私鑰,分別保存為“ssl.crt”和“ssl.key”將其妥善保存,我們將在后續的步驟中用到他們。

怎么用全站CDN部署Discourse論壇

配置和部署 Discourse

Discourse 有完善的 Docker 鏡像,因此在正確的安裝 Docker 后可以直接運行它。

安裝 Discourse

將 Discourse 官方 Docker 鏡像拉取至 /var/discourse 目錄下。

sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse

/var/discourse 目錄下執行

./discourse-setup

可以看到如下交互式界面,在此界面依次填入域名、管理員郵箱、SMTP 郵件服務器信息以及 Let’s Encrypt 通知郵箱地址即可完成論壇的基礎配置。

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郵件服務器地址]
SMTP port? [587]: [SMTP郵件服務器端口]
SMTP user name? [user@example.com]: [論壇自動發信郵箱賬號]
SMTP password? [pa$$word]: [論壇自動發信郵箱賬號的密碼]
Let's Encrypt account email? (ENTER to skip) [me@example.com]: [自動更新證書的通知郵箱地址]
SSL 注意事項

使用 SSL 需要注意的是,如果 DNS 記錄還未傳播至服務器所使用的 DNS 服務器,將無法使用 Let’s Encrypt 的 SSL 證書自動注冊服務。由于我們將使用上文中已申請的 Cloudflare 證書,因此這里可以跳過 Let’s Encrypt account email 這一項。

論壇啟動

大約等待 10 分鐘后,可通過之前設定的域名: discuss.nebula-graph.io 訪問自己的 Discourse 論壇。如果首次訪問時出現了 502 錯誤,這是由于服務還未完全初始化,通常情況下稍等片刻即可。

怎么用全站CDN部署Discourse論壇

配置 Discourse

Discourse 的配置文件位于 /var/discourse/containers/app.yml

郵件服務設定

郵件服務是整個部署過程中容易出現設定錯誤的部分之一。對于大多數郵件服務而言,正確的配置 SMTP 服務器地址、端口以及發信人的賬戶密碼即可完成設定。SMTP 服務器地址和可用端口通常在郵件服務提供者的幫助頁面上都可以查到,部分個人郵箱可能需要創建應用專用密碼才能使用SMTP服務。

但對于 Office365 以及騰訊這種企業郵箱而言,則需要手動在 app.yml 中指定賬戶驗證方式為 login。參考配置如下:

 DISCOURSE_SMTP_ADDRESS: smtp.office365.com
 DISCOURSE_SMTP_PORT: 587
 DISCOURSE_SMTP_USER_NAME: example@office365.com
 DISCOURSE_SMTP_PASSWORD: **********
 DISCOURSE_SMTP_ENABLE_START_TLS: true
 DISCOURSE_SMTP_AUTHENTICATION: login

這是因為 Discourse 默認的郵箱身份驗證方式是 plain。如果不確定使用何種方式驗證,可通過 swaks 這個郵件服務測試工具來進行監測。參考:

swaks --to [收件郵箱] --from [發件郵箱] --server [SMTP服務器地址] --auth [login/plain] --auth-user [發件郵箱] -tls -p [端口]

在確保能夠通過 Discourse 郵件發送測試的同時,還需注意兩項功能設定才能夠確保用戶能夠收到郵件。

  • 位于論壇 Setting-Required 下的 notification email,這里需要配置為和 SMTP 登錄賬號相同的郵箱地址。

  • disable emails,通常在進行論壇遷移、備份還原后這一項通常會被設置為 non-staff,此時,設置為 no 后將恢復郵件發送。

SSL、CDN服務設定

在 app.yml 文件中,tempates 下引入 templates/cloudflare.template.ymltemplates/web.ssl.template.yml 兩個模板文件。再次登錄 Cloudflare 賬號,將 DNS 記錄從 DNS only 改為 Proxied,等待記錄生效。如果本地的網絡質量不佳,也可引入 templates/web.china.template.yml 模版,它將從國內的 Ruby 鏡像獲取資源。

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/cloudflare.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
    #  - "templates/web.letsencrypt.ssl.template.yml"

/var/discourse/shared/standalone/``ssl 目錄下放入步驟2 中所創建的證書文件。

加入新插件(可選)

為了更好幫助海外用戶閱讀論壇上的中文內容,我們引入了翻譯插件。Discourse 擁有豐富的插件,因此如果有需要,你可以安裝任何你感興趣的插件。

在 app.yml 文件的 hooks 字段下配置可被 git 獲取的鏈接,當 Discourse 的 Docker container 重新創建時新插件既完成安裝。

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-translator.git
完成配置后

在完成以上配置后,在 /var/discourse 目錄錄下運行 ./launcher rebuild app,并再次等待 10 分鐘,即可完成最終的構建。

對于個人站長而言,還需安裝并配置 Fail2ban 來保護 ssh 服務安全。Discourse 每周會自動創建一個備份保存在本機的 /var/discourse/shared/standalone/backups 目錄下,可設置 rsync 將它們備份到本地的服務器上。如果有可用的 Amazon S3 服務,還可在后臺配置 S3 服務的相關信息,Discourse 會在完成備份后自動將備份上傳至對應的 S3 實例。

現在,你擁有了一個具備全站 CDN 加速能力的 Discourse 論壇,得益于全站 CDN 和全鏈路 SSL,論壇可以在全球任何位置被安全的訪問。從你的域名訪問論壇,并根據需要填寫的信息即可初始化論壇并創建管理員賬號,通過郵件中的鏈接確認注冊后即可開啟論壇服務。

關于“怎么用全站CDN部署Discourse論壇”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女