CentOS+Linux部署.NET Core應用程序

工具:

WinSCP+Xshell+VMware

1.安裝CentOS

省略安裝過程...python

2. 安裝.Net Core Sdk

①更新可用的安裝包:sudo yum updatechrome

②安裝.NET須要的組件,libunwind和libicu庫:sudo yum install libunwind libicushell

③安裝.NET SDK(ps:個人開發環境是2.2.300,cmd:dotnet –version查看):api

sudo yun install dotnet-sdk-2.2服務器

④安裝完成以後,檢測是否安裝成功app

dotnet --versiontcp

3.使用Visual Studio 2019發佈WebApi應用程序

 

4.部署應用程序至CentOS服務器

這裏使用WinSCP工具操做。工具

將發佈程序拖到想的任一文件夾下測試

5.運行發佈程序

進入部署對應的文件下面運行對應dll,就能夠正常run起來。ui

 

6.配置守護進程Supervisor

 上面的操做已經能正常將.NET Core程序發佈到CentOS下來, 可是發佈過程當中咱們也發現了問題, 就是.NET Core不能自動的運行, 一旦咱們的命令行工具關掉, 發佈的程序就不能訪問了;

 Supervisor 是用Python開發的Linux/Unix系統下的一個進程管理工具。它可使進程(相似Windows Service)脫離終端,變爲後臺守護進程(daemon)。能實時監控進程狀態,異常退出時能自動重啓。

6.1.安裝Supervisor

yum install python-setuptools

easy_install supervisor

6.2.配置Supervisor

①運行supervisord 服務的時候,須要指定 Supervisor 配置文件,因此,先經過以下命令建立目錄,以便讓 supervisor 成功加載默認配置:

mkdir /etc/supervisor

②初始化配置文件:

echo_supervisord_conf > /etc/supervisor/supervisord.conf

③修改supervisord.conf配置信息:

vi /etc/supervisor/supervisord.conf

④最下邊找到以下文本片斷:

修改成:

注意:文件存放的目錄,最好寫明從根目錄開始。

該操做的目的是咱們建立一個supervisor 進程配置文件加載目錄。讓supervisor自動加載該目錄下 .ini 後綴的文件做爲服務配置

6.3爲咱們部署的.NET Core添加進程配置文件

①在/etc/supervisor/目錄下建立一個文件夾conf.d: mkdir /etc/supervisor/conf.d

②在此文件加下建立uiorderapi.ini(名稱隨便取)文件

③配置uiorderapi.ini文件

 默認 80端口,我這邊指定8082端口

 1 [program:uiorderapi]
 2 command=dotnet eHi.UI.Order.Api.dll --urls http://*:8082  --environment "Dev"      ; the program (relative uses PATH, can take args)
 3 ;process_name=%(program_name)s ; process_name expr (default %(program_name)s) 4 ;numprocs=1 ; number of processes copies to start (def 1) 5 directory=/root/www ; directory to cwd to before exec (def no cwd) 6 ;umask=022 ; umask for process (default None) 7 ;priority=999 ; the relative start priority (default 999) 8 ;autostart=true ; start at supervisord start (default: true) 9 ;startsecs=1 ; # of secs prog must stay up to be running (def. 1) 10 ;startretries=3 ; max # of serial start failures when starting (default 3) 11 ;autorestart=unexpected ; when to restart if exited after running (def: unexpected) 12 ;exitcodes=0,2 ; 'expected' exit codes used with autorestart (default 0,2) 13 ;stopsignal=QUIT ; signal used to kill process (default TERM) 14 ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) 15 ;stopasgroup=false ; send stop signal to the UNIX process group (default false) 16 ;killasgroup=false ; SIGKILL the UNIX process group (def false) 17 ;user=chrism ; setuid to this UNIX account to run the program 18 ;redirect_stderr=true ; redirect proc stderr to stdout (default false) 19 ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO 20 ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) 21 ;stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10) 22 ;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) 23 ;stdout_events_enabled=false ; emit events on stdout writes (default false)

6.4 啓動 Supervisor 服務

supervisord -c /etc/supervisor/supervisord.conf

這時候已經不須要使用dotnet命令運行程序, 一樣能夠訪問咱們部署的.NET Core程序了

6.5配置Supervisor開機啓動

進入/usr/lib/systemd/system/目錄,並建立supervisord.service文件(或者在本地寫好了再經過WinSCP工具傳輸到指定目錄下)

vi /usr/lib/systemd/system/supervisord.service

 1 [Unit]
 2 Description=supervisor daemon 3 After=network.target 4 5 [Service] 6 Type=forking 7 ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf 8 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown 9 ExecReload=/usr/bin/supervisorctl $OPTIONS reload 10 KillMode=process 11 Restart=on-failure 12 RestartSec=42s 13 14 [Install] 15 WantedBy=multi-user.target

設置開機啓動

systemctl enable supervisord.service

systemctl daemon-reload

重啓,測試是否能夠開機自啓

 

7.Supervisor端口號設置

①查看當前全部開放的端口sudo firewall-cmd --list-ports

 

②添加端口到防火牆(這裏已8082端口爲例)sudo firewall-cmd --zone=public --add-port={port}/tcp --permanent 

③重啓防火牆,使配置生效sudo firewall-cmd --reload

④查看是否已經增長sudo firewall-cmd --list-ports

⑤更新supervisor配置文件,保存並執行sudo supervisorctl update

coredemo 詳細 X
  沒有英漢互譯結果
   請嘗試網頁搜索

 

 若沒法訪問重啓防火牆 systemctl restart firewalld.service 

相關文章
相關標籤/搜索