自架網站 – 網域、虛擬主機、雲端應用平台、數據庫都是什麼?

自架網站是易學難精的事,我從來沒有正式學過專業編程,最多只會架一個簡簡單單的網站,然後已經很有成就感了!最近我剛在 Udemy 上,學了一點關於建造網絡應用( web app )的課程,後端使用的語言是 node.js ,數據庫則是 MongoDB(之前也寫過一篇介紹 MongoDB 的文章:MongoDB | 數據庫簡介),前端使用的就是 html 、 css 和 javascript 。

之後我發現原來架網有不同的方法,我不知道行業內有沒有專業名稱,在這姑且稱他們為傳統和新型的架網方法。無論是哪個方法,都需要一個網域,那就先說網域吧!

網域(domain)

不想花錢的朋友可以考慮免費的網域,一般一些規模比較大的多用戶網站,都會提供免費網域的申請,比如其中一個國外部落格常用到的就是 WordPress.com 的免費部落格服務。(有人記得不知道多少年前的 Yahoo 和 Sina 的部落格嗎?還有若干年前, Google 提供的子網域?那時候 css 還沒有從 html 被分拆出來。)

既然是免費的,如果網域供應商作出任何決定,用戶都得承受,比如網域供應商突然決定不再提供免費網域服務,好多年前 Yahoo 就做過這個決定。而且免費網域的限制是自己的網址永遠都會有網域供應商的名字,我們最多只能客製子域名稱:

http://(子域名稱).(網域供應商名稱).com

或者是

http://(網域供應商名稱).com/(子域名稱)

如果是開來玩一下當然無所謂,但是如果用來做商業或專業用途的話,我還是建議付費的網域。付費網域一年大概 $10 美金左右,是可負擔的價格,可以考慮一下。像 GoDaddy 這種提供虛擬主機空間服務的大公司,一般都會提供網域註冊服務,當你是新客戶,購買一年或以上的虛擬主機空間服務的時候,通常第一年的網域註冊費用就會給你免掉。

傳統架網方法 – 利用虛擬主機空間

除了網域以外,還需要一個虛擬主機空間( website hosting ),讓你的網站可以有空間來存放檔案。這些檔案包括讓網站正常運作的代碼檔案,一般就是前端的語言( html 、 css 和 javascript ),另外還可以存放需要用到的多媒體檔案和 PDF 檔之類的。網站設置好之後,把你寫的東西上傳到你網站的空間上就好了。如果供應商沒有提供友善的後台,用戶便需要自己使用 FTP 軟件上載檔案。

虛擬空間(website hosting)

爲什麽傳統的架網方法要用到虛擬主機,而不是用自己家裡的主機呢?主要離不開下面幾個原因:

  • 省電
  • 避免家裡停電造成自己網站上不了
  • 自己架網已經要花時間了,還要多花時間在架設自家主機麼?

就以上的原因就足夠說服我們使用虛擬主機了。虛擬主機也有免費的,但還是那句,供應商做的任何決定,用戶都必須自己承受,好一點的供應商會提早通知你服務的變更,但最壞的打算是所有資料可以一下子喪失。而付費的虛擬主機一般是不到 $10 美金一個月,在溫哥華吃頓飯都沒了,爲了架自己的網站,每個月就少吃一頓飯吧!

VanTopics 一開始用的是 GoDaddy 提供的網域和虛擬空間服務,因為趕上它的情人節推廣:

  • 虛擬主機自身減價到 $3.xx 美金一個月(這是一次購買一年服務的價錢,如果多買一點會更便宜)
  • 網域的首年註冊費免掉

我覺得還挺划算的就註冊了,但第二年虛擬主機就恢復原價了,網域也要自己開始付註冊費。當初掛在 GoDaddy ,主要是因為使用比較傳統的架網方式,在 GoDaddy 的後台又可以一鍵安裝 WordPress ,就覺得很方便。

後來因為使用的是 WordPress ,而使用 WordPress 系統最出名的其實是 Bluehost ,除了自動安裝 WordPress 系統外,速度和空間都會比傳統的 GoDaddy 優勝,還更便宜。

新型架網方法 – 利用遠端雲端運算

近年來很多網站轉成以 web app 的形式運作,好處是輕便快捷、適合不同大小的屏幕瀏覽、方便多用戶同時登入使用;壞處是架設起來會比傳統的複雜。

要運行 web app 的話,就需要用到雲端應用平台( cloud application platform ),而不是虛擬主機的空間那麼簡單直接。除此之外,還需要一個數據庫,因為通常會考慮使用 web app 的時候,就是網站需要顯示動態網頁( dynamic webpage )的時候。如果整個網站都是靜態網頁( static webpage )的話,用傳統的方法會更省資源。

Web app 的例子其實有很多,幾乎我們現在使用的很多都離不開 web app 了:

  • 所有的社交網絡平台,如 Facebook :典型的多用戶同時使用的 web app 。
  • WordPress :用的是 php 語言和 mySQL 數據庫,我們把所需的檔案上傳,在 wp-config.php 好數據庫登入資料就好了。所以感覺上,我們只是上傳了檔案到虛擬主機的空間,但實際上,這種內容管理系統就是一種 app。

雲端應用平台(cloud application platform)

除了網域以外, web app 使用的通常是雲端應用平台,價格也都很合理,而且大都可以根據使用量來付費,方便日後擴展。

目前我使用的是 Heroku 的平台服務,至於網域還是由 GoDaddy 提供,因為 Heroku 自身並沒有網域註冊服務。 Heroku 有一個好處,如果你的 web app 還處於測試階段,你可以先用它的免費版,功能幾乎跟付費的一樣,比較大的區別就是適當的時候它會讓你的 web app 待機。當然,在正式使用的時候,你的網站不能有待機狀態,所以當你完成測試你的 web app 的時候,你就可以選擇付費服務(每月 $7 美金起),讓你的網站 24 小時運作。

其他比較高大上的雲端平台就有著名的 Amazon 的 AWS 、Google 的 Google Cloud Platform 和 Microsoft 的 Azure 。目前 AWS 是比較受歡迎的平台,我認為 Google 的也很有前途。這些高端的雲端平台比 Heroku 複雜很多,是規模非常大的網站才需要使用,這些平台甚至需要修讀它們的課程,才能對平台的運作明白透徹,加上市場上缺少管理雲端平台的人才,所以只要考試拿到這類文憑的人,很容易就能找到高薪的工作。

數據庫( Database )

動態網頁都是靠讀取數據庫資料而出現的,所以我們還需要一個數據庫。

Heroku 本身提供的數據庫服務是 mySQL ,但我想要用 MongoDB ,所以就得使用第三方的數據庫。目前使用的是 mlab 的免費服務,因為內容還不算多,當內容快超過免費上限( 500mb )的時候,購買 mlab 服務大概需要每月幾塊美金左右。

小結

我學了 web app 以後得到的其中一個結論,便是如果網站純粹是靜態網頁的話,使用傳統的架網方法便可,基本上就是前端開發而已;如果網站將會有動態網頁的話,最好使用雲端應用平台和數據庫,方便日後擴展和維護。

以一個簡單的部落格來說,兩種方法的金錢成本是差不多的。傳統方法在前期開發期間,不需要太多時間,不過日後頁面比較多的時候,維護起來比較麻煩費時;相反的,使用雲端平台的方法,雖然前期投入時間要長很多,但後期維護是非常方便的。

雲端平台和數據庫還有一個好處,就是有方便開發者測試 web app 的免費服務,付費服務也是用多少付多少,比較靈活。