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
- 使用 64 位的 Linux 系統(tǒng)。
- 升級或者安裝最新版的 Docker。Ubuntu 的 Docker 安裝指南。
- 為 Discourse Docker 創(chuàng)建一個目錄。推薦(
/var/docker)。運行install -g docker -m 2775 -d /var/docker。 - 之后的操作以管理員或者 docker 用戶組的成員進(jìn)行。將用戶賬戶添加到 docker 用戶組的命令為:usermod -a -G docker yourusername,之后請重新登入。
開始安裝
- 在服務(wù)器上運行
git clone https://github.com/discourse/discourse_docker.git /var/docker克隆配置文件。 - 在
/var/docker中復(fù)制獨立模式的配置文件到 containers 目錄下cp samples/standalone.yml containers/app.yml。這里的 app 可以換成你想要的任何名字,同理在后面操作的時候要用你選擇的名字。 - 配置
containers/app.yml。(見后文) - 運行
sudo ./launcher bootstrap app - 啟動
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.yml 和 web_only.yml 模板。為了簡化安裝,launcher 將會在映像中注入一個 DISCOURSE_HOST_IP 的環(huán)境變量。
警告:在多站點配置中,確定配置好 iptables 或者其他的防火墻為 postgresql 和 redis 保護(hù)他們使用的端口。在 Ubuntu 上,安裝 ufw 或 iptables-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,看到升級按鈕點了即可。