如何搭建一個(gè)自己的網(wǎng)站-項(xiàng)目篇
咪哥雜談

本篇閱讀時(shí)間約為 3 分鐘。
1
前言
簡單的來介紹,我們訪問整個(gè)網(wǎng)頁的流程是什么,從訪問網(wǎng)頁,背后經(jīng)歷了什么,以及我用到的技術(shù)棧。
2
訪問網(wǎng)頁的背后
在 2019 的時(shí)候,當(dāng)初在寫 Python 的 Flask 框架時(shí),寫到過一篇文章:訪問網(wǎng)頁的背后,究竟發(fā)生了什么?
當(dāng)時(shí)的流程圖是這樣的:

但這次的網(wǎng)站服務(wù)有變動(dòng),如下:

這次后端服務(wù)選用的是 Java 來開發(fā)后臺(tái)應(yīng)用。
按照流程來簡單的說下:
當(dāng)通過瀏覽器訪問域名時(shí),會(huì)被 DNS 服務(wù)器解析成 ip,請求到相應(yīng)的阿里云服務(wù)器,第一層走到的是 Nginx 軟件。
Nginx 是一個(gè)負(fù)載均衡的軟件,可以簡單的理解為它可以將上層調(diào)用過來的請求轉(zhuǎn)發(fā)給下層服務(wù)。
選擇 Nginx 的目的沒啥,就是為了單純的玩玩,以目標(biāo)來驅(qū)動(dòng)學(xué)習(xí),在之前的公司中并沒有接觸過 Nginx,都是別人配好的。
通過這次實(shí)戰(zhàn),對 Nginx 的配置了解了不少。
Nginx 目錄下有個(gè)配置文件叫 nginx.conf,默認(rèn)改它就好:

具體配置就不放了,知道它的主要作用是請求轉(zhuǎn)發(fā)即可。
在后面,調(diào)用的是 jar 包提供的 web 服務(wù)。具體也不介紹,大家也不會(huì)感興趣,大部分關(guān)注本號(hào)的都是學(xué) Python 的。
整個(gè) jar 包是用 docker 虛擬化來發(fā)布的。用 docker 也是為了玩技術(shù)?,F(xiàn)在的一線互聯(lián)網(wǎng)公司,大部分項(xiàng)目都會(huì)使用 docker 來虛擬化自己的微服務(wù)。
docker有 5 個(gè)好處:
持續(xù)集成、版本控制、可移植性、隔離性、安全性個(gè)人項(xiàng)目其實(shí)完全沒必要使用 docker 來部署,但如果你想讓別人使用你的項(xiàng)目,可以利用 docker 打成鏡像服務(wù)提供給別人。
別人想使用的話,只需要安裝 docker 即可,到時(shí)候把你的鏡像拉下來啟動(dòng) docker 就能完成服務(wù)的遷移。非常的友好和便利。
最后,關(guān)于部署,如果是傳統(tǒng)公司的運(yùn)維同學(xué),一定經(jīng)歷過自己寫 shell 腳本的痛苦。
上家公司,我經(jīng)歷過自己用 Linux 腳本來人肉停止,更新,部署,啟動(dòng)項(xiàng)目的整個(gè)流程。不僅消耗精力,而且還浪費(fèi)時(shí)間。
程序員,懶惰是第一生產(chǎn)力,那有能把流程自動(dòng)化的工具,為什么不用呢?能把這一套流程自動(dòng)化的工具,叫 Jenkins 。

可以通過配置,寫好流程,當(dāng)每次項(xiàng)目的代碼有所變更,它會(huì)自動(dòng)從 git 上拉取服務(wù),然后按照腳本中寫好的流程,自動(dòng)停止服務(wù),更新服務(wù),啟動(dòng)服務(wù)。
配置:

以上,就是本項(xiàng)目涉及的東西,感興趣的小伙伴可以自行參考下。不感興趣的忽略本篇內(nèi)容即可。
3
總結(jié)
本篇簡單的介紹了我在這次建站中用到的一些技術(shù)和軟件的選型。
簡單的總結(jié)下涉及到的技術(shù)關(guān)鍵詞:
java
Nginx
docker
Jenkins
有許多主流技術(shù)都是為了學(xué)習(xí)而選用的,其實(shí)像現(xiàn)在這種小服務(wù),完全沒必要搞這么復(fù)雜。
但是有目的地學(xué)習(xí),有的時(shí)候?qū)W到的東西效果出奇的好,沒有實(shí)踐,理論上的東西永遠(yuǎn)記不住,編程就是這樣。。。
多動(dòng)手,多實(shí)踐,多踩坑,才能對新東西快速的了解與熟悉。
那,本篇到這里就結(jié)束了,如果你有什么想溝通交流的,歡迎留言區(qū)評(píng)論探討!
