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
CentOS+Linux部署.NET Core应用程序的更多相关文章
- 在CentOS 8 上 部署 .Net Core 应用程序
在Centos 8 上 部署 .Net Core 应用程序 -- 记录篇 1.更新dnf 源 1 dnf update 2.安装 Asp.Net Core 运行时 1 dnf install ...
- 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 ...
- .Net Core 在Linux服务器下部署程序--(3). 部署.net core 后端程序
确认第二步中的软件已安装完成 lrzsz文件上传下载软件 zip与unzip压缩包软件 net core 相关软件 确认上述软件安装完成之后,开始部署程序 创建部署文件夹 我的习惯是在usr文件夹下新 ...
- 生产环境中CentOS7部署NET Core应用程序
NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. ...
- ASP.NET Core学习之四 在CentOS上部署.net core
一.安装CentOs 以前在大学学过linux,但是对命令行总是有一种深深的排斥感,几年之后,还是又回来了. 1.下载 现在没法FQ,就算是FQ网速也是蜗牛一样慢,我使用阿里云的镜像站进行下载速度还是 ...
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (一) 安装dotnet core
背景 根据我之前写的文章 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目,我们将公司内部最核心的ORM框架迁移到net core 上面,并在win ...
- Linux 部署.Net Core 项目
前面也有说到,我学习Linux 主要因为要学习一下部署.NET CORE项目到Linux 系统,这里就记录一下部署的详细步骤吧. 主要需要安装以下几个工具 1..NET CORE SDK 2.Jexu ...
- linux部署.net Core项目
首篇笔记,多多关照.方便回忆和给新手指导,大神绕道 首先在Linux系统部署.net Core项目首先准备一个Linux系统的服务器,百度云,阿里云都行. 1.net core 部署在Linux系统上 ...
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目
部署dotnet Core Web API 上一步的文章,是我们公司最核心的一个ORM组件,在中标麒麟系统完成了一个插入数据的任务,这一步是将正式的从dot net framework 迁移到 dot ...
随机推荐
- MySQL 5.6&5.7 性能优化 TOP10(转)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/NLOneDay/article/deta ...
- AndoridSQLite数据库开发基础教程(6)
AndoridSQLite数据库开发基础教程(6) 为数据库添加添加空表 如果开发者想要往数据库中添加表和列,操作步骤如下: (1)在打开的数据库中,单击左下方的“+”按钮,弹出Table Edito ...
- Access与SQL中的IsNull(),IS NULL的区别
Access也有IsNull函数,但意义和参数却和T-SQL中的不同. 在T-SQL(也就是SQL Server所支持的SQL语言)中,IsNull的作用是把空值替代成指定的值.然而在Access中, ...
- 深入浅出深度学习:原理剖析与python实践_黄安埠(著) pdf
深入浅出深度学习:原理剖析与python实践 目录: 第1 部分 概要 1 1 绪论 2 1.1 人工智能.机器学习与深度学习的关系 3 1.1.1 人工智能——机器推理 4 1.1.2 机器学习—— ...
- LabWindows/CVI入门之第四章:库文件(转)
按语: 在参考CVI参考书使用CVI生成动态库后,在另一工程中调用DLL ,编译通不过,后参考此文,豁然开朗. http://blog.sina.com.cn/s/blog_6373e9e60101b ...
- Spring4.X整合redis
包和版本的依赖关系很严重 我的配置 spring-data-redis-1.6.6.RELEASE.jar spring-tx-4.2.5.RELEASE.jar redis-2.7.2.jar co ...
- Docker:学习笔记(1)——基础概念
Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...
- 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 ...
- 预训练中Word2vec,ELMO,GPT与BERT对比
预训练 先在某个任务(训练集A或者B)进行预先训练,即先在这个任务(训练集A或者B)学习网络参数,然后存起来以备后用.当我们在面临第三个任务时,网络可以采取相同的结构,在较浅的几层,网络参数可以直接加 ...
- 19-js策略模式
var PriceStrategy = function() { var stragtegy = { return30: function(price) { return +price + parse ...