介紹
Discourse是一個爲現代網絡構建的開源社區討論平臺。
本教程將引導您完成配置Discourse的步驟,使用Nginx將其移至反向代理後面。在備用代理後面移動話語爲您提供了在Droplet上運行其他網站的靈活性。
課程準備
在我們開始之前,請確保您擁有以下內容:
- Ubuntu 14.04 騰訊CVM(1 GB或更大),沒有服務器的同學可以在這裏購買,不過我個人更推薦您使用免費的騰訊雲開發者實驗室進行試驗,學會安裝後再購買服務器。
- 具有sudo權限的非root用戶
- 完全註冊的域名。如果你沒有域名,建議您先去這裏註冊一個域名,您需要將域名解析到您的服務器,您可以使用騰訊云云解析進行快速設置。
- 確保您的域名配置爲指向您的騰訊CVM。
本教程中的所有命令都應以非root用戶身份運行。如果命令需要root訪問權限,則前面會有sudo
。
第1步 - 配置話語
現在你已經安裝了Discourse,我們需要將它配置爲在Nginx後面工作。
警告:在我們配置Nginx之前,這將導致您的Discourse論壇停機。確保這是全新安裝的Discourse或備份服務器,直到配置完成。
我們只需要將一個設置更改爲Discourse,這樣我們就可以將它移到Nginx之後。切換到包含配置文件的目錄:
cd /var/discourse
然後,打開我們需要更改的配置文件:
sudo nano containers/app.yml
使用箭頭鍵向下滾動到該expose
部分(它應該在頂部附近)並更改此行上的第一個端口號:
... ## which TCP/IP ports should this container expose? expose: - "25654:80" # fwd host port 80 to container port 80 (http) ...
此號碼可以是隨機的,不應與他人共享。如果您願意,您可以在您的服務器上啓用防火牆,如果您使用的是騰訊雲的CVM服務器,您可以直接在騰訊雲控制檯中的安全組進行設置。
現在保存並退出文本編輯器。
通過運行啓用配置更改:
sudo ./launcher rebuild app
此步驟可能需要一段時間,請耐心等待。
您可以訪問您的網站驗證一切正常。Discourse(例如http://discourse.example.com
)的域名將不再在Web瀏覽器中加載界面,但如果您使用剛爲Discourse配置的端口,例如http:///discourse.example.com:25654
(將discourse.example.com替換爲您的域名,並將25654替換爲您剛剛在此步驟中使用的端口)。
第2步 - 安裝和配置Nginx
現在Discourse已安裝並配置爲在Nginx後面工作,現在是安裝Nginx的時候了。
要在Ubuntu上安裝Nginx,只需輸入此命令即可開始安裝:
sudo apt-get install nginx
瀏覽到您的舊話語網址的URLhttp://discourse.example.com
將顯示默認的Nginx網頁:
這可以。我們現在將此更改爲您的論壇。首先,讓我們停止Nginx:
sudo service nginx stop
然後,刪除此默認網頁配置 - 我們不需要它:
sudo rm /etc/nginx/sites-enabled/default
接下來,我們將爲我們的Discourse服務器創建一個新的配置文件,我們將其命名discourse
。
sudo nano /etc/nginx/sites-enabled/discourse
複製並粘貼以下配置。用您的域名來替換discourse.example.com
以及用您在上一步中使用的端口來替換25654
:
server { listen 80; server_name discourse.example.com; return 301 https://discourse.example.com$request_uri; } server { listen 443 ssl spdy; server_name discourse.example.com; ssl_certificate /etc/letsencrypt/live/discourse.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/discourse.example.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_prefer_server_ciphers on; location / { proxy_pass http://discourse.example.com:25654/; proxy_read_timeout 90; proxy_redirect http://discourse.example.com:25654/ https://discourse.example.com; } }
這是配置的作用:
- 第一個服務器塊正在端口80上偵聽域
discourse.example.com
,並在端口443上將所有請求重定向到SSL。這是可選的,但它會強制所有用戶在您的網站上使用SSL。 - 第二個服務器塊在端口443上,並將請求傳遞給在端口上運行的Web服務器
25654
(在本例中爲Discourse)。這主要使用反向代理將Discourse頁面發送給您的用戶並通過SSL進行回傳。
您可能已經注意到我們正在/etc/letsencrypt
上引用一些證書。在下一步中,我們將在重新啓動Nginx之前生成這些。
第3步 - 重新啓動Nginx
最後,我們的配置應該是完整的。運行此命令重新啓動Nginx:
sudo service nginx restart
現在,如果您瀏覽https://discourse.example.com/
,您的網站應該在線並使用Let's Encrypt進行保護,在大多數瀏覽器中顯示爲綠色鎖。
結論
而已!您現在在Nginx後面設置了一個Discourse論壇。
更多Ubuntu教程請前往騰訊雲+社區學習更多知識。
參考文獻:《 How To Install Discourse Behind Nginx on Ubuntu 14.04》