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

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

那么我們要做的事情其實就是想辦法 讓用戶訪問到這些文件 ,包含兩個關鍵的問題:
文件存放到哪里?
怎么提供文件訪問能力?
圍繞這兩個問題,常見的部署方式有以下五種。
1. web 服務器
將文件放到遠程服務器上(沒有服務器也可以在自己電腦上部署),然后通過 Nginx、Apache、Tomcat 等 web 服務器提供網(wǎng)頁文件訪問能力。
你可以自行安裝上述 web 服務器,然后修改其配置文件,指定用戶通過 哪個端口 訪問到 哪個目錄(網(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 服務器的,只不過通過使用寶塔 Linux,能夠可視化地安裝和管理 Linux 服務器上的軟件,比如一鍵安裝 Nginx、更方便地管理配置:

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

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

5. 容器托管平臺
如果使用上一步提到的部署方式,我們每次代碼更新后都要手動去執(zhí)行鏡像構建、關閉老容器、啟動新容器,非常麻煩,而且沒法對容器進行統(tǒng)一的管理。所以更方便的方式是使用云服務商提供的容器托管平臺(比如微信云托管),可以實現(xiàn)自動化構建以及發(fā)布版本化等一系列強大的功能。

后端部署
后端項目我就拿 Java 來舉例吧,打包后一般有兩種產(chǎn)物形式:依賴 web 服務器部署的 war 包,以及內(nèi)嵌 web 服務器 & 可直接運行的 jar 包。對應的部署方式也不同,加起來共有 5 種。
1. web 服務器
如果你要部署 war 包,最常見的 web 服務器當屬 tomcat 和 jetty 了,和部署前端項目一樣,先手動安裝 tomcat,然后改幾行配置文件,讓 tomcat 能找到 war 包即可。注意盡量不要暴露 tomcat 提供的應用管理頁面哦!

2. 直接啟動
如果你使用 SpringBoot 框架開發(fā),打包之后得到的是 jar 包,內(nèi)置了 tomcat 等 web 服務器,因此只需要用一行命令啟動 jar 包即可,比如:
java?-jar?app.jar?--spring.profiles.active=prod
如果想在后臺運行 jar 包,那就給命令開頭補充 nohup
,結尾補充 ?&
。
3. 寶塔面板
和前端部署一樣,如果你懶得自己在服務器上安裝 java、maven、tomcat 等環(huán)境,可以直接用寶塔面板來幫你安裝:

4. 容器
使用 Docker 容器技術,理論上可以封裝任何環(huán)境和應用,對于后端 Java 項目來說,把 Java 環(huán)境、Maven 和 jar 包封裝成一個鏡像就好了。
在寫 Dockerfile 時,可以直接使用 maven:3.5-jdk-8-alpine
這種基礎鏡像,自帶了 jdk 和 maven,省去了自己寫安裝腳本的麻煩。
當然,有需要的話,你還可以在 Java 容器前加個 Nginx 負載均衡~

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