不就部署個(gè)網(wǎng)站么?還能玩出花來?
大家好,我是魚皮,不知道朋友們有沒有試著部署過自己開發(fā)的網(wǎng)站呢?
其實(shí)部署網(wǎng)站非常簡單,而且有非常多的花樣。這篇文章就給大家分享幾種主流的前端 / 后端項(xiàng)目部署方式吧!

前端部署
對于前端項(xiàng)目,打包之后往往是一個(gè)目錄,目錄中包含 index.html(入口文件)、css、js 等等。

那么我們要做的事情其實(shí)就是想辦法 讓用戶訪問到這些文件 ,包含兩個(gè)關(guān)鍵的問題:
- 文件存放到哪里?
- 怎么提供文件訪問能力?
圍繞這兩個(gè)問題,常見的部署方式有以下五種。
1. web 服務(wù)器
將文件放到遠(yuǎn)程服務(wù)器上(沒有服務(wù)器也可以在自己電腦上部署),然后通過 Nginx、Apache、Tomcat 等 web 服務(wù)器提供網(wǎng)頁文件訪問能力。
你可以自行安裝上述 web 服務(wù)器,然后修改其配置文件,指定用戶通過 哪個(gè)端口 訪問到 哪個(gè)目錄(網(wǎng)頁文件所在目錄),Nginx 示例配置如下:
server {
listen 80; # 監(jiān)聽端口,http 80 https 443
server_name dogyupi.com; # 域名
index index.html; # 主頁文件
root /web/xxx; # 網(wǎng)頁文件所在目錄
}
然后用戶訪問 dogyupi.com 就能訪問到網(wǎng)頁了。
2. 寶塔 Linux
這種方式部署網(wǎng)站也是需要 web 服務(wù)器的,只不過通過使用寶塔 Linux,能夠可視化地安裝和管理 Linux 服務(wù)器上的軟件,比如一鍵安裝 Nginx、更方便地管理配置:

現(xiàn)在我上線訪問量不大的新網(wǎng)站時(shí),一般都會安裝寶塔 Linux,的確非常方便省事兒。
3. 靜態(tài)網(wǎng)站托管
如果我們沒有完整的服務(wù)器,也可以把網(wǎng)頁文件放到靜態(tài)網(wǎng)站托管平臺上,比如 GitHub Pages、Gitee Pages、騰訊云靜態(tài)網(wǎng)站托管等。
下圖是 GitHub Pages 提供的網(wǎng)站訪問能力,把代碼上傳到指定分支、指定代碼文件所在目錄即可:

你甚至可以把網(wǎng)頁文件像圖片文件一樣直接扔到云服務(wù)商提供的對象存儲平臺上(還可以搭配 CDN 加個(gè)速)。但是,這種方式僅限于靜態(tài)頁面(必須每個(gè)頁面路由都有對應(yīng)的 html 文件),否則可能會出現(xiàn)刷新頁面 404 的情況。
4. 容器
通過 Docker 容器技術(shù),我們可以把 web 服務(wù)器以及網(wǎng)頁文件打包成一個(gè)鏡像,然后在服務(wù)器上拉取鏡像并執(zhí)行就好。
大致的步驟就是在網(wǎng)上 copy 一個(gè) Dockerfile 文件,然后執(zhí)行 docker build 命令構(gòu)建鏡像,最后 docker run 命令執(zhí)行。

5. 容器托管平臺
如果使用上一步提到的部署方式,我們每次代碼更新后都要手動去執(zhí)行鏡像構(gòu)建、關(guān)閉老容器、啟動新容器,非常麻煩,而且沒法對容器進(jìn)行統(tǒng)一的管理。所以更方便的方式是使用云服務(wù)商提供的容器托管平臺(比如微信云托管),可以實(shí)現(xiàn)自動化構(gòu)建以及發(fā)布版本化等一系列強(qiáng)大的功能。
微信云托管后端部署
后端項(xiàng)目我就拿 Java 來舉例吧,打包后一般有兩種產(chǎn)物形式:依賴 web 服務(wù)器部署的 war 包,以及內(nèi)嵌 web 服務(wù)器 & 可直接運(yùn)行的 jar 包。對應(yīng)的部署方式也不同,加起來共有 5 種。
1. web 服務(wù)器
如果你要部署 war 包,最常見的 web 服務(wù)器當(dāng)屬 tomcat 和 jetty 了,和部署前端項(xiàng)目一樣,先手動安裝 tomcat,然后改幾行配置文件,讓 tomcat 能找到 war 包即可。注意盡量不要暴露 tomcat 提供的應(yīng)用管理頁面哦!
Tomcat 應(yīng)用管理頁面2. 直接啟動
如果你使用 SpringBoot 框架開發(fā),打包之后得到的是 jar 包,內(nèi)置了 tomcat 等 web 服務(wù)器,因此只需要用一行命令啟動 jar 包即可,比如:
java?-jar?app.jar?--spring.profiles.active=prod
如果想在后臺運(yùn)行 jar 包,那就給命令開頭補(bǔ)充 nohup ,結(jié)尾補(bǔ)充 ?& 。
3. 寶塔面板
和前端部署一樣,如果你懶得自己在服務(wù)器上安裝 java、maven、tomcat 等環(huán)境,可以直接用寶塔面板來幫你安裝:
寶塔面板安裝軟件4. 容器
使用 Docker 容器技術(shù),理論上可以封裝任何環(huán)境和應(yīng)用,對于后端 Java 項(xiàng)目來說,把 Java 環(huán)境、Maven 和 jar 包封裝成一個(gè)鏡像就好了。
在寫 Dockerfile 時(shí),可以直接使用 maven:3.5-jdk-8-alpine 這種基礎(chǔ)鏡像,自帶了 jdk 和 maven,省去了自己寫安裝腳本的麻煩。
當(dāng)然,有需要的話,你還可以在 Java 容器前加個(gè) Nginx 負(fù)載均衡~

5. 容器托管平臺
只要是容器,就可以放到容器托管平臺進(jìn)行管理,對于后端應(yīng)用來說也是如此,不再贅述~
扯了那么多種部署方式,你最喜歡或者最常用的網(wǎng)站部署方式是什么呢?
圖文的方式介紹起來比較麻煩,今天晚上?我會在自己的 編程知識星球 內(nèi)直播帶大家學(xué)習(xí)幾種前后端項(xiàng)目部署的方式,把之前星球內(nèi)全程直播帶大家開發(fā)的用戶中心項(xiàng)目搞上線!
歡迎大家加入星球吧~ 和近 6000 名小伙伴們一起交流學(xué)習(xí),向魚皮等大廠同學(xué) 1 對 1 提問、幫你定制學(xué)習(xí)計(jì)劃不迷茫、跟著魚皮直播做項(xiàng)目提升編程能力(往期直播可回看)、領(lǐng)取海量優(yōu)質(zhì)編程資源等等。
只歡迎想進(jìn)步的同學(xué),掃碼限時(shí)優(yōu)惠加入:
往期推薦
