部署環境
OS:CentOS7
.NET Core SDK:2.2.402
- 安裝.NET Core SDK
1.1 安裝依賴yum install libunwind libicu
dotnet 的repo,需註冊Microsoft簽名密鑰並添加Microsoft產品密鑰
rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
1.2 安裝dotnet SDK
yum update yum install dotnet-sdk-2.2
1.3 驗證查看
#dotnet --info.NET Core SDK (reflecting any global.json): Version: 2.2.402 Commit: c7f2f96116 Runtime Environment: OS Name: centos OS Version: 7 OS Platform: Linux RID: centos.7-x64 Base Path: /usr/share/dotnet/sdk/2.2.402/ Host (useful for support): Version: 2.2.8 Commit: b9aa1abc51 .NET Core SDKs installed: 2.2.402 [/usr/share/dotnet/sdk] .NET Core runtimes installed: Microsoft.AspNetCore.All 2.2.8 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All] Microsoft.AspNetCore.App 2.2.8 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 2.2.8 [/usr/share/dotnet/shared/Microsoft.NETCore.App] To install additional .NET Core runtimes or SDKs: https://aka.ms/dotnet-download
1.4 爲dotnet命令創建軟鏈接:
/usr/bin/dotnet -> /usr/share/dotnet/dotnet
1.5 部署啓動.NET Core項目應用
進入到項目應用:
cd /usr/soft/package/Web
啓動dotnet應用dotnet /usr/soft/package/Web/HiCore.PreventFraudAPI.Web.dll
這裏存在一問題,以上方式啓動的應用非後臺啓動,如果Ctrl+Z就退出了應用,所以這裏需要一個Daemon守護進程,讓應用獨立的運行,這裏引入Supervisor。
- Nginx配置應用虛擬主機
這裏Nginx安裝略,主要將Nginx配置的虛擬主機配置文件說明下。默認proxy_pass反代的端口爲5000,可根據實際項目修改。這裏.NET Core的應用項目配置的端口在項目中的hosting.json文件裏配置,如:hosting.json { "server.urls": "http://*:8001" }
Nginx配置的該虛擬主機文件配置如:
server { listen 80; location / { proxy_pass http://localhost:8001; 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; } }
文件保存後,執行命令nginx -s reload重啓Nginx即可訪問。
- Supervisor配置守護進程
Supervisor是用Python開發的Linux/Unix系統下的一個進程管理工具。可以使進程脫離終端,成爲後臺Daemon守護進程。實時監控進程狀態,異常退出時能自動重啓。
3.1 安裝Supervisor
官方推薦首選安裝方法是使用easy_install,它是setuptools(Python包管理工具)的一個功能。yum install python-setuptools
安裝
easy_install supervisor
版本
supervisord --version
3.2 初始化supervisor配置
mkdir /etc/supervisor
mkdir -p /etc/supervisor/conf.decho_supervisord_conf > /etc/supervisor/supervisord.conf
打開supervisord.conf文件,修改默認[include]配置項,改爲如下:
[include] files = conf.d/*.conf
Supervisor會自動加載 /etc/supervisor/conf.d目錄下.conf後綴的文件作爲共同服務配置。Supervisor管理的每個進程單獨寫一個配置文件放在該目錄下,/etc/supervisor/supervisord.conf配置文件中保留公共配置。
3.3 編寫.NET Core項目應用配置
vim /etc/supervisor/conf.d/netcoreAPI.conf[program:PreventFraudAPI.Web] command=dotnet Web.dll #啓動命令 directory=/usr/soft/package/FraudAPI.Web #啓動應用目錄 autostart=true #Supervisord啓動時,程序是否啓動 autorestart=true #程序退出後自動啓動 startretries=5 #啓動失敗自動重試次數,默認是3 startsecs=1 #自動重啓間隔 user=root #啓動進程用戶,默認root priority=999 #默認999,值小優先啓動 stderr_logfile=/var/log//PreventFraudAPI.err.log #error_log stdout_logfile=/var/log//PreventFraudAPI.out.log #out_log environment=ASPNETCORE_ENVIRONMENT=Production #進程環境變量 stopsignal=INT #請求停止時用來殺死程序的信號
啓動Supervisor服務命令,這裏可不啓動,後面設置Supervisor開機啓動。
supervisord -c /etc/supervisor/supervisord.conf
3.4 設置Supervisor開機啓動
創建Supervisor啓動服務腳本supervisor.service,目錄/usr/lib/systemd/system/。
supervisor.service腳本內容:[Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown ExecReload=/usr/bin/supervisorctl $OPTIONS reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
設置開機啓動
systemctl enable supervisor
3.5 Supervisorctl管理進程
Supervisor服務啓動後,受其管理的進程會在後臺運行。可以通過supervisorctl命令管理客戶端進程。
#supervisorctlPreventFraudAPI.Web RUNNING pid 15921, uptime 0:22:51 supervisor> supervisor> help default commands (type help <topic>): ===================================== add exit open reload restart start tail avail fg pid remove shutdown status update clear maintail quit reread signal stop version