陳鍾誠

Version 1.0

網站架設

請用 mdServer 範例來測試您的架設是否成功!

架設在本機 localhost

如果你有對外 IP ,只要打入該 IP 就可以看到此網站。

用 ngrok 架設臨時測試用網站

老師的使用範例: 執行以下指令

ngrok http 3000 

完成後會出現下列畫面


ngrok by @inconshreveable                                                                                         (Ctrl+C to quit)
Session Status                online
Session Expires               7 hours, 58 minutes
Update                        update available (version 2.3.34, Ctrl-U to update)
Version                       2.2.8
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://0156480c.ngrok.io -> localhost:3000
Forwarding                    https://0156480c.ngrok.io -> localhost:3000

Connections                   ttl     opn     rt1     rt5     p50     p90     
                              3       0       0.02    0.01    2.06    2.48    

然後檢視 http://0156480c.ngrok.io/README.md 就會看到你個網站呈現 README.md 的結果。

就算你用另一台電腦,或者是手機檢視,一樣可以正常運作!

用 github 架設前端網站

  • 這種方式不能有 server 端程式,只能是《前端》型的網頁 (裏面可以有 CSS+JS 程式)
  • 因為 server 端是 github 的 gh-pages 平台。

用雲端平台 (例如 linode) 架設網站

這種方式可以架 server 端程式,但是需要花點錢。

  1. linode, digital ocean, vultr 都有每個月五美元的方案
    • 我申請的一個 linode 虛擬主機 IP 為 172.104.100.202
  2. 亞馬遜 EC2, Google Cloud Platform (GCP), 微軟 Azure 都有無限量方案,但是按流量付費。
  3. 免費的通常很多問題與限制,不建議使用!
PS D:\ccc\course\ws\code\02-koa\01-hello> ping misavo.com

Ping misavo.com [172.104.100.202] (使用 32 位元組的資料):
回覆自 172.104.100.202: 位元組=32 時間=67ms TTL=50
回覆自 172.104.100.202: 位元組=32 時間=63ms TTL=50

172.104.100.202 的 Ping 統計資料:
    封包: 已傳送 = 2,已收到 = 2, 已遺失 = 0 (0% 遺失),
大約的來回時間 (毫秒):
    最小值 = 63ms,最大值 = 67ms,平均 = 65ms

Domain Name 的申請

  • 我習慣向 gandi.net 申請 domain name
  • 例如我在 gandi 設定將 misavo.com 對應到 172.104.100.202,於是你可以用下列兩個方式存取該網站。

https 與證書

  • http 協定沒有加密過,所以在網路上封包被擷取就會全部曝光 (包含帳號密碼) ,非常不安全
  • 所以需要用 https 進行 SSL 加密,這樣資訊才不容易被竊取!
  • 加密需要有 SSL 證書,證書的取得有幾種方式:
    • 自行產生 : 例如用 openssl 產生 (但是自行產生的證書沒有經過認證機構認證,所以瀏覽器會顯示紅色警告訊息)
    • 購買證書 : 有很多商業網站,像是 gandi, godaddy … 都有販賣證書。
    • 使用免費版: SSLforFree, LetsEncrypt 都有免費的證書可以申請,但是通常三個月就要更新一次。

Node.js server 使用證書

  • Node.js 要使用 https ssl 加密,必須加載證書並使用 https 模組。
    • 這是我認為比較容易使用的方法。
  • 也可以在 Node.js 前面使用 apache 或 nginx ,處理掉認證解碼的工作,這樣 node.js 就不需要寫 https 的功能。
    • 但是 nginx, apache 的設定常常反而更麻煩,我暫時不推薦這個方法。

架設永久性 server

  • 最好使用 pm2 來啟動 server ,這樣萬一 server 當掉, pm2 會自行重新啟動,不會死機!
    • 也可以用 forever 取代 pm2 ,但是 pm2 現在比較多人用。