<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .NET Core部署到linux(CentOS)最全解決方案,高階篇(Docker+Nginx 或 Jexus)

      在前兩篇:

      .NET Core部署到linux(CentOS)最全解決方案,常規(guī)篇

      .NET Core部署到linux(CentOS)最全解決方案,進階篇(Supervisor+Nginx)

      我們對.netcore部署到linux有了一個充分的了解,已經(jīng)可以滿足應用要求了,這篇文章我們繼續(xù)深入帶你了解使用Doker+jexus或Nginx來部署.net core應用。

      1、使用Jexus作為web服務器

      Jexus是一款Linux平臺上的高性能WEB服務器和負載均衡網(wǎng)關(guān)服務器,以支持ASP.NET、ASP.NET CORE、PHP為特色,同時具備反向代理、入侵檢測等重要功能。可以這樣說,Jexus是.NET、.NET CORE跨平臺的最優(yōu)秀的宿主服務器,如果我們認為它是Linux平臺的IIS,這并不為過,因為,Jexus不但非常快,而且擁有IIS和其它Web服務器所不具備的高度的安全性。同時,Jexus Web Server 是完全由中國人自主開發(fā)的的國產(chǎn)軟件,真正做到了“安全、可靠、可控”, 具備我國黨政機關(guān)和重要企事業(yè)單位信息化建設(shè)所需要的關(guān)鍵品質(zhì)。

      jexus官網(wǎng):https://www.jexus.org/

      1.1、Jexus的安裝

      jexus的安裝非常簡單,執(zhí)行如下命令:

      curl https://jexus.org/release/x64/install.sh|sudo sh
      

      Jexus的安裝

      注:運行安裝命令,需要操作者有root權(quán)限。

      1.2、Jexus的配置與使用

      安裝完成后,切換到/usr/jexus目錄,修改/usr/jexus/siteconf目錄下的default,內(nèi)容如下所示:

      注:因為在前面的章節(jié)用了nginx,使用了80端口,因此這兒我使用8099端口。

      port=8099 #端口
      hosts=*    #域名
      AppHost={cmd=dotnet Core50Test.dll; root=/root/app_data/core50test/publish; port=5000}
      

      Jexus的配置

      接下來,我們重啟jexus,執(zhí)行如下命令:

      /usr/jexus/jws restart
      

      提示Ok后,我們的應用就表示啟動起來了。

      可以通過執(zhí)行如下命令,看下執(zhí)行的結(jié)果:

      ps -aux
      

      可以看到我們的應用已經(jīng)啟動起來了,到瀏覽器使用8099端口瀏覽看下效果。

      關(guān)于jexus更詳細的使用說明,請參考官方文檔。

      1.3、Jexus的操作命令

      Jexus包括如下操作命令(首先 cd /usr/jexus):
      啟動:sudo ./jws start
      停止:sudo ./jws stop
      重啟:sudo ./jws restart

      2、Docker+Nginx或Jexus部署

      在前面的文章介紹中,不管是supervisor+nginx還是jexus,都需要在服務器安裝 .NET Core的SDK或者運行時,假如咱們多個應用程序,各應用程序所用.net core版本不一樣,上面的做法就需要咱們分別安裝對應的SDK或者運行時,對于維護還是比較麻煩的。Docker的出現(xiàn),可以完美解決上述問題。

      2.1、Docker是什么?

      • docker是一個開源的軟件部署解決方案;
      • docker也是輕量級的應用容器框架;
      • docker可以打包、發(fā)布、運行任何的應用。

      Docker有如下優(yōu)點:

      1、快速,一致地交付您的應用程序

      Docker 允許開發(fā)人員使用您提供的應用程序或服務的本地容器在標準化環(huán)境中工作,從而簡化了開發(fā)的生命周期。

      容器非常適合持續(xù)集成和持續(xù)交付(CI / CD)工作流程,請考慮以下示例方案:

      • 您的開發(fā)人員在本地編寫代碼,并使用 Docker 容器與同事共享他們的工作。
      • 他們使用 Docker 將其應用程序推送到測試環(huán)境中,并執(zhí)行自動或手動測試。
      • 當開發(fā)人員發(fā)現(xiàn)錯誤時,他們可以在開發(fā)環(huán)境中對其進行修復,然后將其重新部署到測試環(huán)境中,以進行測試和驗證。
      • 測試完成后,將修補程序推送給生產(chǎn)環(huán)境,就像將更新的鏡像推送到生產(chǎn)環(huán)境一樣簡單。

      2、響應式部署和擴展

      Docker 是基于容器的平臺,允許高度可移植的工作負載。Docker 容器可以在開發(fā)人員的本機上,數(shù)據(jù)中心的物理或虛擬機上,云服務上或混合環(huán)境中運行。

      Docker 的可移植性和輕量級的特性,還可以使您輕松地完成動態(tài)管理的工作負擔,并根據(jù)業(yè)務需求指示,實時擴展或拆除應用程序和服務。

      3、在同一硬件上運行更多工作負載

      Docker 輕巧快速。它為基于虛擬機管理程序的虛擬機提供了可行、經(jīng)濟、高效的替代方案,因此您可以利用更多的計算能力來實現(xiàn)業(yè)務目標。Docker 非常適合于高密度環(huán)境以及中小型部署,而您可以用更少的資源做更多的事情。

      2.2、docker安裝

      執(zhí)行如下命令:

      sudo yum install docker
      

      PS:

      遇報錯 Another app is currentlty holding the yum lock ,waiting for it to exit..

      解決方法: rm –r /var/run/yum.pid 這個命令 解鎖即可


      安裝完成后,執(zhí)行如下命令設(shè)置docker開機啟動:

      systemctl enable docker
      

      執(zhí)行如下命令啟動docker:

      systemctl start docker
      

      查看docker啟動狀態(tài):

      查看docker啟動狀態(tài)

      ps:安裝過程有問題的話,可能直接運行如命令安裝。

      yum install docker-ce-cli

      查看docker版本命令:

      2.3、.net core docker支持

      安裝docker之后,我們需要在代碼里增加dockerfile文件。

      通過Visual Studio可以幫我們自動生成,在解決方案中,右擊項目名稱,依次選擇【添加】->【Docker支持】,如下圖所示:

      net core docker支持

      生成的dockerfile文件如下所示:

      #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
      
      FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
      WORKDIR /app
      EXPOSE 80
      
      FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
      WORKDIR /src
      COPY ["Core50Test.csproj", ""]
      RUN dotnet restore "./Core50Test.csproj"
      COPY . .
      WORKDIR "/src/."
      RUN dotnet build "Core50Test.csproj" -c Release -o /app/build
      
      FROM build AS publish
      RUN dotnet publish "Core50Test.csproj" -c Release -o /app/publish
      
      FROM base AS final
      WORKDIR /app
      COPY --from=publish /app/publish .
      ENTRYPOINT ["dotnet", "Core50Test.dll"]
      

      將代碼推送到git倉庫,然后再linux服務器中拉取最新代碼。

      切換到/root/app_data/source/core50test目錄,執(zhí)行如下命令,拉取最新代碼:

      git pull
      

      然后執(zhí)行如下命令,將代碼打包為鏡像:

       docker build -f Dockerfile -t core50test .
      

      首次打包鏡像涉及到拉取.NET Core的官方鏡像,拉取速度可能較慢,請耐心等待。


      打包完成后,執(zhí)行如下命令,可查看當前服務器已存在的鏡像:

      docker images
      

      查看當前服務器已存在的鏡像

      鏡像打包完成后,我們就可以執(zhí)行docker run命令啟用我們的應用了:

      docker run -p 81:80 -dit --restart=always --name core50test core50test
      

      執(zhí)行結(jié)果如下:

      docker run命令啟用我們的應用

      通過瀏覽器訪問:http://ip:81。如無意外,我們可以看到應用已經(jīng)成功運行。

      docker run :創(chuàng)建一個新的容器并運行一個命令

      語法

      docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
      

      OPTIONS說明:

      • -a stdin: 指定標準輸入輸出內(nèi)容類型,可選 STDIN/STDOUT/STDERR 三項;
      • -d: 后臺運行容器,并返回容器ID;
      • -i: 以交互模式運行容器,通常與 -t 同時使用;
      • -P: 隨機端口映射,容器內(nèi)部端口隨機映射到主機的端口
      • -p: 指定端口映射,格式為:主機(宿主)端口:容器端口
      • -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
      • --name="nginx-lb": 為容器指定一個名稱;
      • --dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致;
      • --dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致;
      • -h "mars": 指定容器的hostname;
      • -e username="ritchie": 設(shè)置環(huán)境變量;
      • --env-file=[]: 從指定文件讀入環(huán)境變量;
      • --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
      • -m :設(shè)置容器使用內(nèi)存最大值;
      • --net="bridge": 指定容器的網(wǎng)絡(luò)連接類型,支持 bridge/host/none/container: 四種類型;
      • --link=[]: 添加鏈接到另一個容器;
      • --expose=[]: 開放一個端口或一組端口;
      • --volume , -v: 綁定一個卷

      2.4、通過shell腳本實現(xiàn)docker一鍵更新應用

      可以通過編寫shell腳本,實現(xiàn)一鍵更新應用。在/root目錄中,創(chuàng)建dockerbuild.sh文件,文件內(nèi)容如下:

      # !/bin/bash
      
      cd /root/app_data/source/core50test
      git pull
      imtag=$(uuidgen |sed 's/-//g')
      docker build -f Dockerfile -t core50test:${imtag} .
      docker stop core50test
      docker rm core50test
      docker run -dit --restart=always --name core50test -p 81:80  core50test:${imtag}
      

      給dockerbuild.sh文件設(shè)置執(zhí)行權(quán)限,命令如下:

      chmod 777 dockerbuild.sh
      

      當有新代碼推送到git倉庫時,進入服務器,執(zhí)行dockerbuild.sh即可快速更新應用程序。

      ./dockerbuild.sh

      至此,.net core使用docker方式部署介紹完成。

      2.5、docker常用命令

      Docker常用命令,總的來說分為以下幾種:

      • Docker環(huán)境信息 — docker [info|version]
      • 容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
      • 容器操作運維 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]
      • 容器rootfs命令 — docker [commit|cp|diff]
      • 鏡像倉庫 — docker [login|pull|push|search]
      • 本地鏡像管理 — docker [build|images|rmi|tag|save|import|load]
      • 容器資源管理 — docker [volume|network]
      • 系統(tǒng)日志信息 — docker [events|history|logs]

      從docker命令使用出發(fā),梳理出如下命令結(jié)構(gòu)圖:

      要查看更詳細的命令,可以查看官網(wǎng)或者命令幫助

      docker --help
      

      3、總結(jié)

      通過前面三篇文章的介紹,我們已經(jīng)對.net core多方案部署到linux下有了非常全面的認識,小型團隊已經(jīng)足夠使用。留心的同學會注意到,雖然目前的方案可以實現(xiàn)一鍵部署更新,但是還是需要登陸到linux服務器去執(zhí)行相應的命令。

      顯示,這不是最優(yōu)的方案,那么還有沒有更好的方案呢?比如:當我們提交給git倉庫后,自動出發(fā)部署命令是不是就更方便了呢?

      答案是肯定的,我們可以借助jenkins來實現(xiàn)。如有興趣,可以自行研究,或者敬請期待后面的講解。以及在大型項目中基于k8s實現(xiàn)的devops。其實k8s實現(xiàn)devops的原理以上面的介紹差不多,基于就是借助gitlab的runner或者jenkins,監(jiān)聽git倉庫的狀態(tài),當發(fā)現(xiàn)指定的分支發(fā)生變化后,打包鏡像,然后通過替換k8s的deployment的鏡像來實現(xiàn)自動更新。同時,k8s實現(xiàn)了彈性伸縮、滾動更新等功能。


      一路走來數(shù)個年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過下面的地址了解詳情。

      RDIFramework.NET官方網(wǎng)站:http://www.rdiframework.net/

      RDIFramework.NET官方博客:http://blog.rdiframework.net/

      特別說明,框架相關(guān)的技術(shù)文章請以官方網(wǎng)站為準,歡迎大家收藏!

      RDIFramework.NET框架由海南國思軟件科技有限公司專業(yè)團隊長期打造、一直在更新、一直在升級,請放心使用!

      歡迎關(guān)注RDIFramework.NET框架官方微信公眾號(微信號:guosisoft),及時了解最新動態(tài)。

      使用微信掃描二維碼立即關(guān)注

      微信號:**guosisoft**

      posted @ 2021-01-26 11:37  .NET快速開發(fā)框架  閱讀(1976)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 久久99亚洲网美利坚合众国| 成人午夜免费无码视频在线观看| 精品无码老熟妇magnet| 风骚少妇久久精品在线观看 | 开心五月激情综合久久爱| 久女女热精品视频在线观看 | 18无码粉嫩小泬无套在线观看| 国产成人高清亚洲综合| 亚洲av专区一区| 久久精品国产再热青青青| 亚洲欧美日韩综合久久| 色窝窝免费播放视频在线| 国产午夜精品久久一二区| 色吊丝二区三区中文字幕| 在线观看亚洲欧美日本| 成人欧美日韩一区二区三区| 日韩精品一区二区高清视频| 欧美一区二区三区欧美日韩亚洲| 亚洲AV无码东方伊甸园| 精品人妻一区二区三区蜜臀 | 人妻少妇偷人无码视频| 在线观看中文字幕国产码| 亚洲理论在线A中文字幕| 国产精品久久久国产盗摄| 国产一级区二级区三级区| 日韩精品国产中文字幕| 丝袜老师办公室里做好紧好爽| 国产午夜亚洲精品国产成人| 中文字幕在线日韩| 无码人妻人妻经典| 欧美疯狂xxxxxbbbbb| 国产精品成人无码久久久| 亚洲第一极品精品无码久久| 久久国产乱子伦免费精品| 亚洲精品乱码久久久久久中文字幕 | 精品久久久久久国产| 亚洲欧洲日产国无高清码图片| 特级做a爰片毛片免费看无码| 成人精品一区日本无码网| 久久99热只有频精品6狠狠| 四虎永久播放地址免费|