在日常生活中,玩手機遊戲、看社群網站、逛網購、與家人視訊聊天、使用手機支付、登記預約口罩...等線上服務,幾乎是一般人每天都會做的「例行公事」了,但是我們為什麼透過手機就可以做這麼多事情呢?其實這些都與伺服器息息相關。
上網搜尋「伺服器」三個字的話,會出現一堆機器! (如下圖)
原來我們平常使用的線上服務都是一台機器呀!那我猜第一台是 iThome,第二台是 iT邦幫忙 (大誤!)
圖片引用自:伺服器是什麼?有哪些種類?
根據 維基百科 解釋:
伺服器(英語:server)指:
一個管理資源並為用戶提供服務的電腦軟體,通常分為檔案伺服器(能使用戶在其它電腦存取檔案),資料庫伺服器和應用程式伺服器。
執行以上軟體的電腦,或稱為網路主機(host)。
伺服器通常以網絡作為媒介,既可以通過內部網路對內提供服務,也可以通過網際網路對外提供服務。伺服器的最大特點就是其強大的運算能力,使其能在短時間內完成大量工作,並為大量用戶提供服務。
上述的解釋看起來,又不像是機器了,反而像是我們平時生活所認知的伺服器了!
所以可以發現伺服器
其實定義很廣,也有很多種型態,不管是硬體的伺服器、檔案伺服器、APP伺服器...等。
換句話說,我們應該可以想成:客人(client)可以向電腦(server)請求做特定事項
,都可視為伺服器
的一種。
在這邊舉幾個例子:
透過上述例子,我們可以知道生活中其實隨處可見伺服器,讓我們可以去做很多大家早已習慣的事情。
至於伺服器到底是什麼做的呢?就讓身為一位小小工程師的我,簡單示範怎麼建立伺服器吧!
不過這邊的伺服器是指網頁伺服器。
以下範例的程式碼可以在這邊下載
這邊採用Go
程式語言,做簡單的示範。
Go語言在這邊就不贅述了,網路上資源很豐富,歡迎大家上網查詢。
當然不是只有Go,使用Node.js、Python...大眾語言都可以建立Web Server,只是小弟我個人蠻喜歡這門語言,語法簡易又有方便維護的內建功能!
也歡迎大家使用自己喜好的程式語言去建立Server。
/
|--- /public/ # <--- 用來呈現在網頁上的資料夾目錄
| |
| |-- hello.txt
| |-- world.txt
|
|
|-- main.go
main.go
內容如下package main
import (
"log"
"net/http"
)
func main() {
router := http.NewServeMux()
router.Handle("/", http.FileServer(http.Dir("./public")))
log.Println("開始建立伺服器")
log.Fatal(http.ListenAndServe(":8080", router))
}
$ go run main.go
2020/09/02 20:32:34 開始建立伺服器
用瀏覽器開啟http://localhost:8000
,可以看到public/
裡有存在的檔案。(如下圖)
點擊hello.txt
,可以看見hello.txt
的內容。 (如下圖)
如果我們再新增一個index.html
檔案在public/
,就可以產生一個網頁了!
這也是一般常見網頁伺服器的運作方式。
這次透過範例想讓大家知道,其實伺服器可以用來讓外面使用者透過網路,連線進來電腦取得檔案、看見檔案內容、顯示頁面。伺服器有百百種,而這次的範例當然也只是其中一種。
不過大部分伺服器都會有一個共同的動作,就是向外暴露伺服器本身可以連得到的方式
、以及取得伺服器的各種回應
。
明天在與大家示範另一種伺服器,API伺服器。
明天見