工具:

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. git只提交修改部分的代码

    思路: 先用git status 查找出哪些文件被修改过了,然后 只git commit odin/code/pom.xml 1. $ git status (查看当前更改的代码) On branch ...

  2. MySQL 正则(Regular Expression) 邮箱(Email)

    MySQL 正则表达式 | 菜鸟教程https://www.runoob.com/mysql/mysql-regexp.html (1条消息)常用正则表达式—邮箱(Email) - Samuel - ...

  3. 使用.whl文件安装torch和pytorch的方法

    当使用pip install torch torchvision命令下载感觉很慢时 可以先到下面的网页将.whl文件下载下来,然后再运行安装即可: torchvision也是 下载好了以后,运行: p ...

  4. QTableView加载数据

    void VCAdmin::searchAllUser() { strID_Index = ""; if (NULL == vcManageDatabaseObj) { vc_ad ...

  5. Qt编写气体安全管理系统1-项目框架

    一.前言 说到项目框架,也叫代码框架,其实是非常重要的,随着编程经验的增加,相信每个程序员都会有一个自己的习惯的项目框架,这个东西跟建房子一样,先把架子搭好,然后挨个往里边填充内容,据说牛逼的架构师都 ...

  6. 解决no module named setuptools

    To install setuptools on Debian: sudo apt-get install python-setuptools For Python 3.x: sudo apt-get ...

  7. 【NER】对命名实体识别(槽位填充)的一些认识

    命名实体识别 1. 问题定义 广义的命名实体识别是指识别出待处理文本中三大类(实体类.时间类和数字类).七小类(人名.机构名.地名.日期.货币和百分比)命名实体.但实际应用中不只是识别上述所说的实体类 ...

  8. 重磅!滴滴跨端框架Chameleon 1.0正式发布

    滴滴在 GitHub 上开源的跨端解决方案 Chameleon(简写 CML)正式发布 1.0 版本,中文名卡梅龙:中文意思变色龙,意味着就像变色龙一样能适应不同环境的企业级跨端整体解决方案,具有易用 ...

  9. uinxSocket 与 tcpSocket

    $tpc = stream_socket_client('unix:///tmp/php-cgi.sock');nginx配置中可以用uninx:/tmp/php-.....这种格式,也可用直接uin ...

  10. 【Luogu P3258】[JLOI2014]松鼠的新家

    Luogu P3258 题意就是对于一棵树,要求按照给出的顺序对每一个节点进行访问,记录每一个节点被经过的次数:特别地,我们认为只有从一个节点往外走才能被认为是经过一次.(最后一句话非常重要,仔细理解 ...