工具:

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

coredemo 详细X
  没有英汉互译结果
  请尝试网页搜索

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

CentOS+Linux部署.NET Core应用程序的更多相关文章

  1. 在CentOS 8 上 部署 .Net Core 应用程序

    在Centos 8 上 部署 .Net Core 应用程序     -- 记录篇 1.更新dnf 源 1 dnf update 2.安装 Asp.Net Core 运行时 1 dnf install ...

  2. Centos7安装.Net Core 2.2环境以及部署.Net Core MVC程序(Apache+Jexus环境)

    原文:Centos7安装.Net Core 2.2环境以及部署.Net Core MVC程序(Apache+Jexus环境) 1.双11抢购***VPS.配置如下: CPU:2 核 内存:2048 M ...

  3. .Net Core 在Linux服务器下部署程序--(3). 部署.net core 后端程序

    确认第二步中的软件已安装完成 lrzsz文件上传下载软件 zip与unzip压缩包软件 net core 相关软件 确认上述软件安装完成之后,开始部署程序 创建部署文件夹 我的习惯是在usr文件夹下新 ...

  4. 生产环境中CentOS7部署NET Core应用程序

    NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. ...

  5. ASP.NET Core学习之四 在CentOS上部署.net core

    一.安装CentOs 以前在大学学过linux,但是对命令行总是有一种深深的排斥感,几年之后,还是又回来了. 1.下载 现在没法FQ,就算是FQ网速也是蜗牛一样慢,我使用阿里云的镜像站进行下载速度还是 ...

  6. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (一) 安装dotnet core

    背景 根据我之前写的文章 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目,我们将公司内部最核心的ORM框架迁移到net core 上面,并在win ...

  7. Linux 部署.Net Core 项目

    前面也有说到,我学习Linux 主要因为要学习一下部署.NET CORE项目到Linux 系统,这里就记录一下部署的详细步骤吧. 主要需要安装以下几个工具 1..NET CORE SDK 2.Jexu ...

  8. linux部署.net Core项目

    首篇笔记,多多关照.方便回忆和给新手指导,大神绕道 首先在Linux系统部署.net Core项目首先准备一个Linux系统的服务器,百度云,阿里云都行. 1.net core 部署在Linux系统上 ...

  9. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目

    部署dotnet Core Web API 上一步的文章,是我们公司最核心的一个ORM组件,在中标麒麟系统完成了一个插入数据的任务,这一步是将正式的从dot net framework 迁移到 dot ...

随机推荐

  1. 004 API约定

    在具体的学习前,我还是决定学一下,REST风格中在ES中的约定. 1.多重索引 先准备数据: 如果不小心,json里的值写错了,修改过来,重新执行即可. PUT index1/_doc/1 { &qu ...

  2. [原]error LNK2005:"XXX已经在 XXX.obj 中定义 使用 /FORCE(强制文件输出)暴力解决

    参考:https://blog.csdn.net/LG1259156776/article/details/80828720 https://blog.csdn.net/cai18381306175/ ...

  3. Typescript中的类 Es5中的类和静态方法和继承(原型链继承、对象冒充继承、原型链+对象冒充组合继承)

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  4. Python3基础 complex real imag __abs__ 取复数的实部 虚部 模

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  5. GWAS: 网页版的基因型填充(genotype imputation)

    在全基因组关联分析中,处理芯片数据时,必须走的一个流程就是基因型数据填充(imputation). 当然,如果你拿到的是全测序的数据,请忽略这一步. 下面直奔主题,怎么在网页版进行基因型填充. 1 进 ...

  6. 【 Linux 】Systemd 使用说明(1)

    1. 前言 在 CentOS 7 中使用 systemd 取代了 init 的启动模式,这样的更新换代有什么好处呢?首先需要对 init 和 systemd 有个概念的认识. 2. init 概述 在 ...

  7. yaml文件实例:nginx+ingress

    [root@lab3 nginx]# cat nginx-test.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: nam ...

  8. Andrew Ng机器学习课程9-补充

    Andrew Ng机器学习课程9-补充 首先要说的还是这个bias-variance trade off,一个hypothesis的generalization error是指的它在样本上的期望误差, ...

  9. 最新 苏州朗动java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.苏州朗动等10家互联网公司的校招Offer,因为某些自身原因最终选择了苏州朗动.6.7月主要是做系统复习.项目复盘.Leet ...

  10. 微信小程序实战,与后台交互

    index.wxml <view class="container"> <text>{{txt}}</text> <input name= ...