首先此處不考慮docker,我一直認(rèn)為,當(dāng)我們的項目不是什么比較大的項目時,沒必要為了用docker而用docker,正常的部署足夠我們使用了。然后就是本篇是基于Windows平臺下的部署,雖然說.Net Core+目前已經(jīng)支持跨平臺了。但我個人還是比較喜歡使用Windows,而且某些庫在Linux下使用確實或多或少有問題,坑還得一步步的踩。 開發(fā)環(huán)境:.NET 6 開發(fā)工具:Visual Studio 2022 - 第一種部署方式就是基于IIS,這個作為.Net開發(fā)都知道。如果是之前的MVC項目的話,想必也很簡單,只要把生成(發(fā)布)好的項目放上去正常部署即可,可是如果是前后端分離的項目呢?
- 以.Net6 WebApi+Vue3項目舉例。首先是.Net6 WebApi項目部署,這個跟之前的非Core項目基本一致。只是環(huán)境和程序池不一樣。將項目發(fā)布到文件夾后放到服務(wù)器上,安裝對應(yīng)的.NetCore運(yùn)行時環(huán)境,然后再新建一個應(yīng)用程序池,選擇無托管代碼。最后應(yīng)用到你要發(fā)布的網(wǎng)站或者應(yīng)用程序中即可。
- 后端發(fā)布完成了,那前端的html代碼放哪里呢?可以在我們發(fā)布的后端項目中新建一個文件夾,比如admin,但是為了不容易讓別人猜到,可以起個復(fù)雜點(diǎn)的名字。否則某些心懷不軌的人可以輕而易舉的進(jìn)到后臺的登錄頁面了,如果你的項目的安全措施做的不夠完善的話,進(jìn)入后臺拿到數(shù)據(jù)也不在話下。最后在IIS中找到這個文件夾,并將其轉(zhuǎn)換為應(yīng)用程序即可,這樣就可以通過http://xxxx/admin訪問了。不過這里要控制下你的前端路由,比如首頁是/的話,可能會直接跳到根目錄下,而不是你后臺的跟目錄。
- 這樣部署的方式有兩個好處,一是基于IIS的自動化管理,自動啟動自動回收等,部署完畢之后基本不用去過多處理什么,而且前端訪問的是同一個IP、端口,方便管理,由于其前后端分離的特性,所以既要訪問前端,還要通過前端訪問后端,可能就得需要做兩個開放端口訪問。
- 第二種部署方式是基于.NetCore自帶的Kestrel服務(wù)器,這個就是將.Net6 WebApi項目發(fā)布到文件夾后,會發(fā)現(xiàn)其中有一個可運(yùn)行文件(.exe),有運(yùn)行時環(huán)境的話,直接雙擊運(yùn)行即可,這樣后臺服務(wù)就起來了
- 接下來就要解決前端的發(fā)布了,這個可以放到iis中,也可以選擇Nginx,我這里選擇的是Nginx,因為就是為了解決上面說的多端口問題,需要用到反向代理。安裝Nginx后,將前端代碼丟到Nginx中的html代碼中,然后修改配置文件nginx.conf。這樣配置后,都通過8882端口訪問就可以了,當(dāng)url中含有/api/的時候,就會直接訪問到后端(8883端口)。
server { listen 8882; server_name localhost; location ~ /api/ { proxy_pass http://127.0.0.1:8883; } location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
- 不過使用這個方式的話,你就得自己做自啟動等管理了。
|