大家好,今天我們將會學(xué)習(xí)如何利用Docker平臺安裝Discourse。Discourse是一個完全開源的討論平臺,以未來十年的互聯(lián)網(wǎng)理念設(shè)計,擁有一個郵件列表,一個論壇和一個長篇聊天室。不管從技術(shù)角度還是社會學(xué)角度,如今要體驗一個現(xiàn)代的、勃勃生機(jī)的、完全開源的互聯(lián)網(wǎng)討論平臺,Discourse都是一個不錯的途徑。Discourse是一個簡單、簡明、簡易的討論方式。它確實是一個令人稱贊的平臺,對于互聯(lián)網(wǎng)上各種各樣的論壇來說,提供了一個上手可用的很酷的服務(wù)。
Docker是一個開源的、可以將任何應(yīng)用以輕量級容器的方式打包、傳輸和運(yùn)行的開放平臺。Docker容器技術(shù)使得可以更加方便和容易構(gòu)建Discourse。
所以,下面是一些快速且容易的步驟,用來在一個Docker環(huán)境里面安裝Discourse。
1. 安裝Docker
首先,我們需要確認(rèn)我們的主機(jī)操作系統(tǒng)已經(jīng)安裝了Docker。我們需要在shell或者終端運(yùn)行以下命令安裝Docker。
在Ubuntu上
# apt-get docker
docker安裝包在Ubuntu的倉庫里面是可用的,所以我們將會使用apt管理器安裝,以sudo或者root模式
在CentOS 7上
在CentOS 7的主機(jī)上,我們使用yum管理器安裝docker,因為CentOS的倉庫里同樣有docker安裝包
# yum install docker
2. 設(shè)定交換內(nèi)存
如果你的RAM容量小于1GB,那么確保升級你的系統(tǒng)達(dá)到1GB或者以上,Discourse不能在512MB的RAM下安裝。如果你現(xiàn)在準(zhǔn)備好了安裝Discourse,根據(jù)下面的步驟為你的VPS(Virtual Private Servers)或者服務(wù)器設(shè)定交換內(nèi)存:
運(yùn)行下面的命令,創(chuàng)建一個空的交換文件。
# install -o root -g root -m 0600 /dev/null /swapfile
如果你想你的交換內(nèi)存達(dá)到1GB,那么執(zhí)行下面的步驟,并且跳過接下來的第二步。
# dd if=/dev/zero of=/swapfile bs=1k count=1024k
如果你想達(dá)到2GB,跳過上一步,跟著下面做
# dd if=/dev/zero of=/swapfile bs=1k count=2014k
接著,我們指定交換內(nèi)存為swapfile
# mkswap /swapfile
運(yùn)行下面的命令激活交換內(nèi)存
# swapon /swapfile
現(xiàn)在,我們將其添加到文件系統(tǒng)分區(qū)表里,這樣重啟之后就自動掛載了。
# echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab
設(shè)置swappiness參數(shù)為10,這樣交換內(nèi)存僅作為一個緊急緩沖區(qū)用。
# sudo sysctl -w vm.swappiness=10
# echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
3. 安裝Discourse
在我們的主機(jī)上安裝好Docker后,我們將會安裝Discourse?,F(xiàn)在,我們從官方的Discourse GitHub倉庫克隆一份到/var/discourse目錄下。我們需要運(yùn)行下面的命令完成這一步。
# mkdir /var/discourse/
# cd /var/discourse/
# git clone https://github.com/discourse/discourse_docker.git /var/discourse/
克隆好倉庫后,我們給discourse服務(wù)器復(fù)制配置文件
# cp samples/standalone.yml containers/app.yml
4. 配置Discourse
接下來,我們用自己喜歡的文本編輯器,編輯容器目錄下的discourse配置文件app.yml
# nano containers/app.yml
現(xiàn)在,我們需要將開發(fā)者郵箱地址DISCOURSEDEVELOPEREMAILS修改為自己的,如下。
DISCOURSE_DEVELOPER_EMAILS: 'arun@linoxide.com'
然后,我們設(shè)置主機(jī)名為服務(wù)器的域名。
DISCOURSE_HOSTNAME: 'discourse.linoxide.com'
接著,設(shè)置放在相同的discourse主機(jī)或vps上的SMTP服務(wù)器的認(rèn)證信息。這些SMTP設(shè)置用于你的Discourse發(fā)送郵件。
DISCOURSE_SMTP_ADDRESS: smtp.linoxide.com
DISCOURSE_SMTP_PORT: 587 # (可選)
DISCOURSE_SMTP_USER_NAME: admin@linoxide.com # (可選)
DISCOURSE_SMTP_PASSWORD: test123 # (可選)
如果你在使用一個1GB的Discourse,設(shè)定UNICORNWORKERS為2,dbshared_buffers為128MB,這樣你會有更多的內(nèi)存空間。
運(yùn)行Discourse需要強(qiáng)制性地創(chuàng)建一個郵件服務(wù)器。如果你已經(jīng)有一個服務(wù)器了那就好辦多了,我們可以使用它的認(rèn)證信息。如果你沒有現(xiàn)成的郵件服務(wù)器,或者你不知道那是什么。沒關(guān)系,可以在Mandrill (或Mailgun和 Mailjet)創(chuàng)建一個免費(fèi)的帳號,然后使用其提供的認(rèn)證信息。
5. 啟動Discourse應(yīng)用
配置完discourse的配置文件后,我們當(dāng)然是想啟動Discourse服務(wù)器。首先,在/var/discourse/目錄下運(yùn)行下面的命令,加載discourse引導(dǎo)程序。
# ./launcher bootstrap app
上述命令可能會花去幾分鐘時間,會自動配置我們的Discourse環(huán)境。然后,該進(jìn)程完成后,我們需要運(yùn)行下面的命令啟動Discourse App
# ./launcher start app
如果一切都正常,我們就能使用慣用的瀏覽器來訪問我們新鮮出爐的 Discourse 的 Web 界面了: http://ip-address/ 或 http://discourse.linoxide.com/ 。然后,我們就可以創(chuàng)建一個新賬號并成為管理員。
維護(hù)
這里往下是/var/discourse/目錄里的 launcher 命令的用法,它可以用于我們在Docker 容器里面控制和維護(hù)Disourse。
用法: launcher 命令 配置 [--skip-prereqs]
命令:
start: 啟動/初始化一個容器
stop: 停止一個運(yùn)行的容器
restart: 重啟一個容器
destroy:停止并刪除一個容器
enter: 使用 nsenter 進(jìn)入容器
ssh: 在一個運(yùn)行的容器中啟動一個 bash shell
logs: 容器的 Docker l日志
mailtest: 在容器中測試郵件設(shè)置
bootstrap: 基于配置模版來引導(dǎo)一個容器
rebuild: 重建一個容器(摧毀舊的,初始化,啟動新的)
cleanup: 清理所有停止了24小時以上的容器
選項:
--skip-prereqs 不檢查前置需求
--docker-args 當(dāng)運(yùn)行 docker 時,展開并傳入?yún)?shù)
總結(jié)
哈哈!我們已經(jīng)成功使用Docker技術(shù)安裝了Discourse。Docker技術(shù)使得Discourse十分容易安裝在任何平臺,并且包含所有的要求。我們需要自己的郵件服務(wù)器或者郵件服務(wù)器的證書來啟動它。對于便捷的現(xiàn)代郵件列表,論壇來說,Discourse是一個偉大的平臺。(最后這句有些別扭)