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

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

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

      將ASP.NET Core應用程序部署至生產環境中(CentOS7)

      這段時間在使用Rabbit RPC重構公司的一套系統(微信相關),而最近相關檢驗(邏輯測試、壓力測試)已經完成,接近部署至線上生產環境從而搗鼓了ASP.NET Core應用程序在CentOS上的部署方案,今天就跟大家分享一下如何將ASP.NET Core應用程序以生產的標準部署在CentOS上。

      環境說明

      服務器系統:CentOS 7.2.1511

      相關工具:Xshel、Xftp

      服務器軟件軟件:.netcore、nginx、supervisor、policycoreutils-python

      準備你的ASP.NET Core應用程序

      首先將你的應用程序以便攜的模式進行發布。

      ps:這邊我使用一個空的Web項目來進行演示,因為本篇主要介紹生產環境的部署,與應用無關。

      命令為:dotnet publish –c release

      具體的可以看:擁抱.NET Core,如何開發跨平臺的應用并部署至Ubuntu運行,這篇博文介紹了以便攜與自宿主方式發布web應用。

      image

      確保這份發布應用可以在windows上運行,以減少后續的問題。

      image

      為什么不用自宿主的方式進行部署?

      自宿主的發布方式進行部署會簡單很多,為什么生產環境要使用便攜的方式進行發布呢?

      原因1:性能比便攜式的低(主)。

      原因2:微軟給出的建議(次)。

      口說無憑,有圖有真相。

      image

      image

      參考地址:https://docs.microsoft.com/zh-cn/dotnet/articles/core/app-types

      so,既然是用于生產環境的,當然我們要追求更高的性能。

      安裝CentOS7

      這個就不細說了,網上教程很多,這邊我使用了Hyper-V來虛擬化了CentOS7。

      安裝.NET Core SDK for CentOS7。

      sudo yum install libunwind libicu(安裝libicu依賴)

      image

      curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131(下載sdk壓縮包)

      sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet(解壓縮)

      sudo ln -s /opt/dotnet/dotnet /usr/local/bin(創建鏈接)

      image

      輸入 dotnet –info 來查看是否安裝成功

      image

      如果可以執行則表明.NET Core SDK安裝成功。

      參考資料:https://www.microsoft.com/net/core#centos

      部署ASP.NET Core應用程序

      上傳之前發布的文件夾至/home/wwwroot/。

      這邊我使用了Xftp進行文件的上傳。

      image

      image

      檢查是否能夠運行

      命令:dotnet /home/wwwroot/WebApplication1/WebApplication1.dll

      image

      如果出現這些信息則表示成功運行。

      這時候我們是無法訪問到這個頁面的,這時候我們需要部署一個web容器來進行轉發。

      配置Nginx

      安裝Nginx

      curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

      image

      rpm -ivh nginx.rpm

      yum install nginx

      image

      安裝成功!

      輸入:systemctl start nginx 來啟動nginx。

      輸入:systemctl enable nginx 來設置nginx的開機啟動(linux宕機、重啟會自動運行nginx不需要連上去輸入命令)

      配置防火墻

      命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(開放80端口)

      命令:systemctl restart firewalld(重啟防火墻以使配置即時生效)

      測試nginx是否可以訪問。

      image

      配置nginx對ASP.NET Core應用的轉發

      修改 /etc/nginx/conf.d/default.conf 文件。

      將文件內容替換為

      server {
          listen 80;
          location / {
              proxy_pass
      http://localhost:5000;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection keep-alive;
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
          }
      }

      上傳至CentOS進行覆蓋。

      執行:nginx –s reload 使其即時生效

      運行ASP.NET Core應用程序

      image

      命令:dotnet /home/wwwroot/WebApplication1/WebApplication1.dll

      這時候再次嘗試訪問。

      image

      想哭的心都有。。。經過后續了解,這個問題是由于SELinux保護機制所導致,我們需要將nginx添加至SELinux的白名單。

      接下來我們通過一些命令解決這個問題。。

      yum install policycoreutils-python

      sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

      sudo semodule -i mynginx.pp

      image

      再次嘗試訪問。

      image

      至此基本完成了部署。

      配置守護服務(Supervisor)

      目前存在三個問題

      問題1:ASP.NET Core應用程序運行在shell之中,如果關閉shell則會發現ASP.NET Core應用被關閉,從而導致應用無法訪問,這種情況當然是我們不想遇到的,而且生產環境對這種情況是零容忍的。

      問題2:如果ASP.NET Core進程意外終止那么需要人為連進shell進行再次啟動,往往這種操作都不夠及時。

      問題3:如果服務器宕機或需要重啟我們則還是需要連入shell進行啟動。

      為了解決這個問題,我們需要有一個程序來監聽ASP.NET Core 應用程序的狀況。在應用程序停止運行的時候立即重新啟動。這邊我們用到了Supervisor這個工具,Supervisor使用Python開發的。

      安裝Supervisor

      yum install python-setuptools

      easy_install supervisor

      配置Supervisor

      mkdir /etc/supervisor

      echo_supervisord_conf > /etc/supervisor/supervisord.conf

      修改supervisord.conf文件,將文件尾部的配置

      image

      修改為

      image

      ps:如果服務已啟動,修改配置文件可用“supervisorctl reload”命令來使其生效

      配置對ASP.NET Core應用的守護

      創建一個 WebApplication1.conf文件,內容大致如下

      [program:WebApplication1]
      command=dotnet WebApplication1.dll ; 運行程序的命令
      directory=/home/wwwroot/WebApplication1/ ; 命令執行的目錄
      autorestart=true ; 程序意外退出是否自動重啟
      stderr_logfile=/var/log/WebApplication1.err.log ; 錯誤日志文件
      stdout_logfile=/var/log/WebApplication1.out.log ; 輸出日志文件
      environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量
      user=root ; 進程執行的用戶身份
      stopsignal=INT

      將文件拷貝至:“/etc/supervisor/conf.d/WebApplication1.conf”下

      運行supervisord,查看是否生效

      supervisord -c /etc/supervisor/supervisord.conf

      ps -ef | grep WebApplication1

      image

      如果存在dotnet WebApplication1.dll 進程則代表運行成功,這時候在使用瀏覽器進行訪問。

      image

      至此關于ASP.NET Core應用程序的守護即配置完成。

      配置Supervisor開機啟動

      新建一個“supervisord.service”文件

      # dservice for systemd (CentOS 7.0+)
      # by ET-CS (
      https://github.com/ET-CS)
      [Unit]
      Description=Supervisor daemon

      [Service]
      Type=forking
      ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
      ExecStop=/usr/bin/supervisorctl shutdown
      ExecReload=/usr/bin/supervisorctl reload
      KillMode=process
      Restart=on-failure
      RestartSec=42s

      [Install]
      WantedBy=multi-user.target

      將文件拷貝至:“/usr/lib/systemd/system/supervisord.service”

      執行命令:systemctl enable supervisord

      image

      執行命令:systemctl is-enabled supervisord #來驗證是否為開機啟動

      image

      測試

      GIF

      posted @ 2016-08-03 12:07  KAnts  閱讀(42456)  評論(52)    收藏  舉報
      主站蜘蛛池模板: 四虎影视久久久免费| 亚洲香蕉免费有线视频| 久久69国产精品久久69软件 | 临颍县| 久久99精品久久久久久| 青草热在线观看精品视频| 日夜啪啪一区二区三区| 国产精品久久久久久人妻精品动漫| 婷婷六月天在线| 91精品国产色综合久久| av 日韩 人妻 黑人 综合 无码| 国产一二三五区不在卡| 国产精品人成视频免费国产| 久久综合久久美利坚合众国| 亚洲av无码成人精品区一区| 精品亚洲一区二区三区在线观看| 亚洲欧洲日韩国内高清 | 疯狂做受XXXX高潮国产| 亚洲国产成人精品av区按摩| 国产欧美日韩亚洲一区二区三区| 玩弄放荡人妻少妇系列 | 五月天天天综合精品无码| 丁香五月婷激情综合第九色| 疯狂的欧美乱大交| 搡老女人老妇女老熟妇| 亚洲爆乳WWW无码专区| 秭归县| 国产AV影片麻豆精品传媒| 中文字幕亚洲一区二区三区| 亚洲成人av在线系列| 香蕉久久久久久久av网站| 亚洲AV永久纯肉无码精品动漫| 中文字幕有码日韩精品| 国产成人亚洲日韩欧美| 国产特级毛片aaaaaa毛片| 亚洲V天堂V手机在线 | 噜噜噜噜私人影院| 午夜福利伦伦电影理论片在线观看 | 国产亚洲精品VA片在线播放| 日本高清一区免费中文视频| 亚洲区色欧美另类图片|