工具:

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. 1 [program:uiorderapi]
  2. 2 command=dotnet eHi.UI.Order.Api.dll --urls http://*:8082 --environment "Dev" ; the program (relative uses PATH, can take args)
  3. 3 ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  4. 4 ;numprocs=1 ; number of processes copies to start (def 1)
  5. 5 directory=/root/www ; directory to cwd to before exec (def no cwd)
  6. 6 ;umask=022 ; umask for process (default None)
  7. 7 ;priority=999 ; the relative start priority (default 999)
  8. 8 ;autostart=true ; start at supervisord start (default: true)
  9. 9 ;startsecs=1 ; # of secs prog must stay up to be running (def. 1)
  10. 10 ;startretries=3 ; max # of serial start failures when starting (default 3)
  11. 11 ;autorestart=unexpected ; when to restart if exited after running (def: unexpected)
  12. 12 ;exitcodes=0,2 ; 'expected' exit codes used with autorestart (default 0,2)
  13. 13 ;stopsignal=QUIT ; signal used to kill process (default TERM)
  14. 14 ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  15. 15 ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
  16. 16 ;killasgroup=false ; SIGKILL the UNIX process group (def false)
  17. 17 ;user=chrism ; setuid to this UNIX account to run the program
  18. 18 ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
  19. 19 ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  20. 20 ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  21. 21 ;stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
  22. 22 ;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  23. 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. 1 [Unit]
  2. 2 Description=supervisor daemon
  3. 3 After=network.target
  4. 4
  5. 5 [Service]
  6. 6 Type=forking
  7. 7 ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
  8. 8 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
  9. 9 ExecReload=/usr/bin/supervisorctl $OPTIONS reload
  10. 10 KillMode=process
  11. 11 Restart=on-failure
  12. 12 RestartSec=42s
  13. 13
  14. 14 [Install]
  15. 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. MySQL 5.6&5.7 性能优化 TOP10(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/NLOneDay/article/deta ...

  2. AndoridSQLite数据库开发基础教程(6)

    AndoridSQLite数据库开发基础教程(6) 为数据库添加添加空表 如果开发者想要往数据库中添加表和列,操作步骤如下: (1)在打开的数据库中,单击左下方的“+”按钮,弹出Table Edito ...

  3. Access与SQL中的IsNull(),IS NULL的区别

    Access也有IsNull函数,但意义和参数却和T-SQL中的不同. 在T-SQL(也就是SQL Server所支持的SQL语言)中,IsNull的作用是把空值替代成指定的值.然而在Access中, ...

  4. 深入浅出深度学习:原理剖析与python实践_黄安埠(著) pdf

    深入浅出深度学习:原理剖析与python实践 目录: 第1 部分 概要 1 1 绪论 2 1.1 人工智能.机器学习与深度学习的关系 3 1.1.1 人工智能——机器推理 4 1.1.2 机器学习—— ...

  5. LabWindows/CVI入门之第四章:库文件(转)

    按语: 在参考CVI参考书使用CVI生成动态库后,在另一工程中调用DLL ,编译通不过,后参考此文,豁然开朗. http://blog.sina.com.cn/s/blog_6373e9e60101b ...

  6. Spring4.X整合redis

    包和版本的依赖关系很严重 我的配置 spring-data-redis-1.6.6.RELEASE.jar spring-tx-4.2.5.RELEASE.jar redis-2.7.2.jar co ...

  7. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  8. k8s SLUB: Unable to allocate memory on node -1 错误

    Try to Fix Two Linux Kernel Bugs While Testing TiDB Operator in K8sWed, May 1, 2019 Wenbo Zhang Auth ...

  9. 预训练中Word2vec,ELMO,GPT与BERT对比

    预训练 先在某个任务(训练集A或者B)进行预先训练,即先在这个任务(训练集A或者B)学习网络参数,然后存起来以备后用.当我们在面临第三个任务时,网络可以采取相同的结构,在较浅的几层,网络参数可以直接加 ...

  10. 19-js策略模式

    var PriceStrategy = function() { var stragtegy = { return30: function(price) { return +price + parse ...