linux部署.net程序,CentOS+Linux部署.NET Core应用程序

本文档详细介绍了如何在CentOS上安装.NET Core SDK,使用Visual Studio 2019发布Web API应用,然后通过winscp和xshell进行部署。接着,配置supervisor作为守护进程确保程序在后台持续运行,并设置开机启动。最后,调整防火墙设置以允许访问应用程序。
摘要由CSDN通过智能技术生成

工具:

winscp+xshell+vmware

1.安装centos

省略安装过程...

2. 安装.net core sdk

①更新可用的安装包:sudo yum update

②安装.net需要的组件,libunwind和libicu库:sudo yum install libunwind libicu

③安装.net sdk(ps:我的开发环境是2.2.300,cmd:dotnet –version查看):

sudo yun install dotnet-sdk-2.2

④安装完成之后,检测是否安装成功

dotnet --version

3.使用visual studio 2019发布webapi应用程序

a5f0670af13193ab2a9fd4232c151bf5.png

4.部署应用程序至centos服务器

这里使用winscp工具操作。

将发布程序拖到想的任一文件夹下

24e7848da5f1c51cf39adc270a8d6852.png

5.运行发布程序

进入部署对应的文件下面运行对应dll,就可以正常run起来。

4452d56f9dd2aede8fb54bbb91c7f810.png

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

④最下边找到如下文本片段:

235ecb79dc4651125f109d9ec3678f15.png

修改为:

d28a0bb937d15053bf458619b71e8bbe.png

注意:文件存放的目录,最好写明从根目录开始。

该操作的目的是我们创建一个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

f96c35278c86267b990d7a93001ee911.png

②添加端口到防火墙(这里已8082端口为例)sudo firewall-cmd --zone=public --add-port={port}/tcp --permanent

③重启防火墙,使配置生效sudo firewall-cmd --reload

④查看是否已经增加sudo firewall-cmd --list-ports

478ce8de1af6fb5ab1f9baff7a946c9f.png

⑤更新supervisor配置文件,保存并执行sudo supervisorctl update

coredemo 详细x

没有英汉互译结果

4254b4adcbdaf8f4a28c9a04e2118f61.png

若无法访问重启防火墙 systemctl restart firewalld.service

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值