如何在Ubuntu 14.04上安裝Nginx背後的話語

介紹

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》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章