Discourse 安裝指南

This is a Simplified Chinese tutorial about Discourse installation.

<small>文章在知識共享 署名-相同方式共享 3.0協(xié)議之條款下提供。原文見此。</small>

EDIT:目前已經(jīng)將幾乎所有官方論壇的指南都翻譯到了一個中文論壇,用來做本地化的支持。比如30 分鐘內(nèi)在 Digital Ocean 上部署 Discourse。
Discourse 已經(jīng)相當(dāng)接近 1.0.0,大部分功能都比較成熟了。這篇文章將主要介紹如何用 Docker 安裝 Discourse,以及其他一些安裝方案。我將持續(xù)更新這篇文章。

介紹

Discourse 是一個為下一個十年的互聯(lián)網(wǎng)準(zhǔn)備的論壇程序。到沙盒試試。

你可以在 GitHub 找到官方的安裝指南。官方將只支持 Docker 安裝方案。

硬件要求

  • 推薦雙核 CPU
  • 最少 1 GB 內(nèi)存(加上交換空間),推薦至少 2 GB;實際上 512 MB 也可以安裝,估計不會好過。

Docker 安裝方案

簡介

官方 Docker 安裝指南請至 GitHub。這里將提供一個在一臺服務(wù)器上安裝所有部件(數(shù)據(jù)庫、Ruby 各種依賴)的指南。

  • Docker 是一個用于打包、部署并運行 Linux 應(yīng)用的一個新項目。容器比傳統(tǒng)的虛擬機方案更輕量和快速。
  • Docker 讓部署和更新 Discourse 論壇變得簡單。
  • 能夠以官方團(tuán)隊推薦的最優(yōu)設(shè)置配置 Discourse。

安裝前準(zhǔn)備:安裝 Docker

  1. 使用 64 位的 Linux 系統(tǒng)。
  2. 升級或者安裝最新版的 Docker。Ubuntu 的 Docker 安裝指南。
  3. 為 Discourse Docker 創(chuàng)建一個目錄。推薦(/var/docker)。運行 install -g docker -m 2775 -d /var/docker
  4. 之后的操作以管理員或者 docker 用戶組的成員進(jìn)行。將用戶賬戶添加到 docker 用戶組的命令為:usermod -a -G docker yourusername,之后請重新登入。

開始安裝

  1. 在服務(wù)器上運行 git clone https://github.com/discourse/discourse_docker.git /var/docker 克隆配置文件。
  2. /var/docker 中復(fù)制獨立模式的配置文件到 containers 目錄下 cp samples/standalone.yml containers/app.yml。這里的 app 可以換成你想要的任何名字,同理在后面操作的時候要用你選擇的名字。
  3. 配置 containers/app.yml。(見后文)
  4. 運行 sudo ./launcher bootstrap app
  5. 啟動 sudo ./launcher start app

目錄結(jié)構(gòu)

/cids

包含了當(dāng)前運行的 Docker 容器的 id。Docker 中的 cid 就相當(dāng)于 pid。每一個容器有一個獨特的哈希。

/containers

這個目錄用于存放不同的 Discourse 容器配置文件。該目錄由你管理,默認(rèn)為空。

/samples

樣例容器配置文件,你可以用來初始化環(huán)境。你可以將其復(fù)制到 containers 目錄里更改。

/shared

用于 Discourse 容器的共享目錄。你可以將部分持久信息存在容器之外。我們將日志文件和上傳文件的目錄放在容器外。這能幫助你更方便重建容器而不會損失重要的信息。讓上傳文件的目錄放在容器外也能讓你在多個 web 實例運行時共享他們。

/templates

用于初始化的模板文件。

/image

用于 samsaffron/discourse_base 和 samsaffron/discourse 的 Dockerfile。

samsaffron/discourse_base 包含了所有與操作系統(tǒng)有關(guān)的依賴,包括 sshd、runit、postgres、nginx 和 ruby。

samsaffron/discourse 構(gòu)建基礎(chǔ)映像并且配置用戶 discourse,將 Discourse 源代碼放于 /var/www/discourse。

Docker 庫中將永遠(yuǎn)包含最新的基礎(chǔ)映像版本,位于:https://index.docker.io/u/samsaffron/discourse/ ,你絕不該自己構(gòu)建基礎(chǔ)映像。

容器配置

templates

templates:
  - "templates/cron.template.yml"
  - "templates/postgres.template.yml"

最終的模板是在這一系列的模板中組合起來的,你可以自己增加他們。

expose

expose:
  - "2222:22"
  - "127.0.0.1:20080:80"

暴露容器內(nèi)的 22 端口至所有本地主機接口的 2222 端口。若想綁定至一個接口,你可以按照 [([<host_interface>:[host_port]])|(<host_port>):]<container_port>[/udp] 的格式定義規(guī)則,詳情查看 Docker 端口綁定的文檔。

volumes

volumes:
  - volume:
      host: /var/docker/shared
      guest: /shared

將容器內(nèi)的目錄暴露至主機。

env

## List of comma delimited emails that will be made admin on signup
DISCOURSE_DEVELOPER_EMAILS: 'my-email-address@example.com'

在這里輸入用逗號分隔的郵件地址,注冊后這些用戶將擁有管理員權(quán)限。

## The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: 'discourse.example.com'

設(shè)置 Discourse 的域名

## The mailserver this Discourse instance will use
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (mandatory)
# DISCOURSE_SMTP_PORT: 587 # (optional)
# DISCOURSE_SMTP_USER_NAME: user@example.com # (optional)
# DISCOURSE_SMTP_PASSWORD: p@ssword # (optional)

郵件通知是 Discourse 的一個主要功能,你需要配置他們。你可以選擇安裝 postfix 并且自己配置他們,但是會比較麻煩。

推薦使用 Mandrill,需要翻墻。注冊后創(chuàng)建一個 API,再按照 Mandrill 里的信息來填寫。Mandrill 中可以查看到發(fā)送錯誤的日志,出問題可以去查看一下。

DISCOURSE_SMTP_ADDRESS: smtp.mandrillapp.com
DISCOURSE_SMTP_PORT: 587 # 使用 SSL 的話,閱讀一下 Mandrill 的幫助
DISCOURSE_SMTP_USER_NAME:
DISCOURSE_SMTP_PASSWORD:

locale

目前還沒支持,所以默認(rèn)裝的是英文版。管理員登入后在后臺改成簡體中文即可,但是自動生成的幾個主題將會是英文的。

單容器 vs 多容器

samples 目錄包含了一個 standalone 模板用于單容器安裝。其中包含了在單一容器中安裝 Discourse 的所有文檔。優(yōu)點是比較簡單。

多容器配置更靈活、強大,但也更難配置。多容器能讓你:

  • 升級新版本 Discourse 時降低下線時間。你可以在更新后初始化新的 web 進(jìn)程,再切換過去。
  • 使用多個服務(wù)器均衡負(fù)載。
  • 增加服務(wù)器冗余。
  • 將某些服務(wù)(如數(shù)據(jù)庫)運行在特定硬件上。

如果你想要使用多容器安裝,看一看 sample 目錄的 data.ymlweb_only.yml 模板。為了簡化安裝,launcher 將會在映像中注入一個 DISCOURSE_HOST_IP 的環(huán)境變量。
警告:在多站點配置中,確定配置好 iptables 或者其他的防火墻為 postgresql 和 redis 保護(hù)他們使用的端口。在 Ubuntu 上,安裝 ufwiptables-persistent 包來管理防火墻規(guī)則。

多容器配置請參考這個主題

SSL

請參考這個主題。

排錯

可以 SSH 登入至容器:./launcher ssh my_container。初始化容器時將自動配置 ssh 登入信息。

其他方案

Digital Ocean

對照上文的安裝方案,整體流程是一樣的。GitHub 上的教程。

托管方案

Discourse 有托管服務(wù)。國內(nèi)目前還沒有。

安裝后配置

默認(rèn)的主題標(biāo)題和內(nèi)容字符限制應(yīng)該是第一個要更改的東西,根據(jù)需要調(diào)整一下。

升級

訪問 /admin/docker,看到升級按鈕點了即可。

已知問題

  • 前幾周把簡體中文的翻譯都做完了。有什么不對的、不合適的可以聯(lián)系我,或在 Transifex 上更改,或在 Meta 上指出。
  • 繁體中文可以從簡體中文轉(zhuǎn)換一下,應(yīng)該能節(jié)省不少時間了。
  • 搜索功能與 postgresql 的 locale 設(shè)置有關(guān),沒有設(shè)置成指定語言就沒法工作,考慮用 ElasticSearch,不知道 1.0.0 前能否完成。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,764評論 0 120
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,285評論 6 342
  • 五、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的。此外,除了...
    R_X閱讀 1,971評論 0 7
  • 我從去年開始就接觸了手賬,但直到今年年初才決心買一本手賬本,因為手賬本真的很貴啊,花了幾百塊人民幣買完本子之后,我...
    探微成長筆記閱讀 2,824評論 16 118

友情鏈接更多精彩內(nèi)容