Nginx Docker方式部署ASP.NET Core項目

來源
前述:

凡是基於http請求的的項目,都需要有有一個server以提供對client(UserAgent)的請求做處理並相應。也就是要有個HttpServer,也就是web服務器。(此處的web服務器是指提供處理http請求軟件,非實體主機。web主機亦稱作web服務器,此處服務器只實體主機。不要混淆)

web服務器:在Windows平臺通常都是以IIS作爲擔當,在Linux上則通常是Nginx、Apache、TomCat。

ASP.Net Core項目:asp.net core 內部使用的是Kestrel作爲web服務器,本地項目調試沒有任何問題,但部署到Web服務器上,是無法直接被外部網絡訪問的,因爲如果沒有對Kestrel配置就不提供對外部訪問的支持(待查證)。

部署:

Windows IIS上部署:參考官網步驟 使用 IIS 在 Windows 上託管 ASP.NET Core ,關鍵步驟就是 安裝 .NET Core 託管捆綁包,按步驟,下載並安裝項目引用的netcore版本的runtime,並在IIS新建無託管的應用程序池,併爲網站或虛擬應用程序綁定此池。

Linux Nginx上部署:參考官網 使用 Nginx 在 Linux 上託管 ASP.NET Core ,關鍵點:1,必須在Startup.Configure中配置支持反省代理 2,在/etc/nginx/sites-available/default默認爲新增server節點,配置反向代理(實際就是講Nginx監聽的外部訪問端口映射到 ASP.Net.Core項目的端口:默認5000端口)

 

最後:在Linux上 Nginx Docker方式部署ASP.NET Core項目

參考 如何用一臺服務器,部署多個不同的 WEB 項目 (use nginx in docker)

步驟:

1,下載並安裝對應的Linux版本netcore運行時

2,安裝Docker,官網鏈接

3,安裝Nginx(Docker方式),代替直接在主機上安裝Nginx:條件建立好~/nginx-reverse-proxy文件夾,及www conf logs,用於將本機(host)路徑與Docker中Nginx html、nginx.conf、log關聯,也就是掛載,也就是docker說的卷(Volume),如此如果對其中的文件做了修改 Nginx的Docker容器每次啓動都都會加重最新的。

docker run -d -p 80:80 --name nginx-reverse-proxy -v ~/nginx-reverse-proxy/www:/usr/share/nginx/html -v ~/nginx-reverse-proxy/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx-reverse-proxy/logs:/var/log/nginx nginx

4,步驟3啓動的Nginx,Docker中的80端口映射爲了Host的80端口,如此,效果就同主機上(Host)安裝了Nginx。

5,之後就是修改映射到host上的配置文件修改conf/nginx.conf ,添加反向代理的配置(在Nginx配置文件配置asp.net core項目Kestrel使用的端口map到的主機端口,外部網絡就可以通過此端口進行訪問了)。

下面的命令 就是將host的100端口映射到另一個Nginx容器的80端口。反向代理配置應將項目Kestrel端口映射爲Host的100端口。外部網絡通過主機 ip:100或域名的方式就可以訪問項目了。

docker run -d -p 100:80 --name nginx-cms -v ~/nginx-cms/www:/usr/share/nginx/html -v ~/nginx-cms/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx-cms/logs:/var/log/nginx nginx
 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章