CentOS+Linux部署.NET Core应用程序
工具:
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应用程序
4.部署应用程序至centos服务器
这里使用winscp工具操作。
将发布程序拖到想的任一文件夹下
5.运行发布程序
进入部署对应的文件下面运行对应dll,就可以正常run起来。
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
若无法访问重启防火墙 systemctl restart firewalld.service
上一篇: 女人要有一点味道
下一篇: 体检前可以喝水吗?体检前可以吃东西吗?
推荐阅读
-
如何利用Jenkins + TFS为.Net Core实现持续集成/部署详解
-
ASP.NET Core 1.0 部署 HTTPS(.NET Core 1.0)
-
win10下ASP.NET Core部署环境搭建步骤
-
ubuntu16.4下用jexus部署ASP.NET Core环境
-
详解.net core webapi 前后端开发分离后的配置和部署
-
docker部署Asp.net core应用的完整步骤
-
ASP.NET Core 1.0 部署 HTTPS(.NET Core 1.0)
-
ASP.NET Core部署前期准备 使用Hyper-V安装Ubuntu Server 16.10
-
win10下ASP.NET Core部署环境搭建步骤
-
ubuntu16.4下用jexus部署ASP.NET Core环境