环境

CentOS 7 x64,详见 安装CentOS7虚拟机

.Net Core 2.1.801 详见 CentOS 7 下安装.NET Core SDK 2.1

ftp  详见  CentOS7 FTP安装与配置

辅助工具

Xftp上传文件到CentOS

PuTTY工具连接CentOS, 安装包下载

一、安装配置supervisor 

如果需要卸载supervisor 执行:

yum remove supervisor

查看是否已卸载(查看supervisor版本)

supervisord -v

1.执行下列命令安装supervisor

wget https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-.noarch.rpm
yum install supervisor -y

如报“-bash: wget: 未找到命令”,则先安装一下 yum 命令,再执行上面的命令

yum -y install wget

2.查看版本,检验是否安装成功

supervisord -v

3.配置

修改supervisor配置文件

vim /etc/supervisord.conf

修改以下几行

#启用访问web控制界面,inet_http_server区段修改为
[inet_http_server]
port=*: #设置账户和密码
username=user
password= #include区段
[include]
files = supervisord.d/*.ini

4.启动supervisord服务

开机自动启动

sudo systemctl enable supervisord

启动

sudo systemctl start supervisord

其他命令:

如果修改了supervisor.service文件,可以通过reload命令来重新加载配置文件

systemctl reload supervisord

5.防火墙设置

开放端口

firewall-cmd --zone=public --add-port=/tcp --permanent

重启防火墙

firewall-cmd --reload

6.输入 http://ip:9001,提示需要输入密码,用户名为user,密码123

二、部署.net core 2.1项目

1.准备好.net core项目

添加host.json文件,设置端口号(可以改成其他端口号)

{
"url": "http://*:2222"
}

修改Program.cs

 public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
var configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("host.json")
.Build();
var url = configuration["url"];
return WebHost.CreateDefaultBuilder(args).UseUrls(url).UseStartup<Startup>();
}

确保你的项目运行正常

2.发布

发布前,先修改“HelloWeb.csproj.user”文件,加上如下内容(你也可以不用加,发布过一次才看得到这个文件):

<MvcRazorCompileOnPublish>False</MvcRazorCompileOnPublish>

右键项目->发布

不加“<MvcRazorCompileOnPublish>False</MvcRazorCompileOnPublish>”的发布效果

加“<MvcRazorCompileOnPublish>False</MvcRazorCompileOnPublish>”的发布效果

本文发布方式使用了加“<MvcRazorCompileOnPublish>False</MvcRazorCompileOnPublish>”

3.使用ftp工具上传到CentOS服务器,这里使用Xftp工具上传

新建文件夹“helloweb”

复制已发布的文件到helloweb

4.检测文件是否可正常运行

cd /home/vsftpd/admin/helloweb
ls

用dotnet命令运行项目

dotnet HelloWeb.dll

如出现上面提示则表示可以正常运行

按Ctrl+C退出来

5.创建 supervisor 托管的 .NET Core 的服务配置文件

切换到supervisor的统一配置目录,注意这里的supervisord多了个“d”

cd /etc/supervisord.d

创建配置文件helloweb.ini (注意后缀为.ini,与上面配置supervisor的第3点的include区段的文件后缀设置一致)

vim helloweb.ini
[program:helloweb]
command=/usr/bin/dotnet HelloWeb.dll ; 输入执行命令,这里表示 dotnet HelloWeb.dll
directory=/home/vsftpd/admin/helloweb ; 应用程序根目录
autostart=true ; 是否自动启动,当 supervisor 加载该配置文件的时候立即启动它
autorestart=true ; 是否自动重启,当执行 dotnet Deploy.Linux.dll 启动失败时,会重复的自动重启
logfile_maxbytes=50MB ; 该配置文件输出单个日志文件的大小
logfile_backups= ; 日志备份个数
loglevel=info ; 记录日志级别
stderr_logfile=/home/vsftpd/admin/helloweb/helloweb.err.log ; 指定标准错误输出日志文件,前面的目录可改成其他的,但要确保该目录已存在
stdout_logfile=/home/vsftpd/admin/helloweb/helloweb.out.log ; 指定标准输出日志文件 ,前面的目录可改成其他的,但要确保该目录已存在
environment=ASPNETCORE_ENVIRONMENT=Production ; 可配置环境变量,该环境变量将通过执行 dotnet HelloWeb.dll 命令的时候传入到 .NET Core 应用程序中
user=root ;启动服务的用户
stopsignal=INT
redirect_stderr=true

重启supervisord服务,重新加载配置

sudo systemctl restart supervisord

6.防火墙设置

开放端口:

firewall-cmd --zone=public --add-port=/tcp --permanent

重启防火墙:

firewall-cmd --reload

7.重新访问Supervisor,输入 http://ip:9001

出现绿色的“running”表示成功,名称“helloweb”就是刚刚的helloweb.ini配置中的[program:helloweb] 的program:后面定义的名称

访问helloweb的站点网址:http://ip:2222

8.更新部署

如果需更新 dll文件,复制dll覆盖原dll后,点一下“Restart”即可

.Net Core - 使用Supervisor进行托管部署的更多相关文章

  1. Asp.NetCore轻松学-使用Supervisor进行托管部署

    前言 上一篇文章 Asp.NetCore轻松学-部署到 Linux 进行托管 介绍了如何在 Centos 上部署自托管的 .NET Core 应用程序,接下来的内容就是介绍如何使用第三方任务管理程序来 ...

  2. Linux部署.NetCore站点 使用Supervisor进行托管部署

    前言 之前终于在Linux上部署好了.NetCore站点,但是这个站点非常“脆弱”.当我的ssh连接关闭或者我想在当前连接执行其他命令时候就必须关闭dotnet站点的执行程序.这显然不是我想要达到的效 ...

  3. 使用Linux、Nginx和Github Actions托管部署ASP.NET Core 6.0应用

    使用Linux.Nginx和Github Actions托管部署ASP.NET Core 6.0应用 前言 本文主要参考微软这篇文档而来 Host ASP.NET Core on Linux with ...

  4. [07]ASP.NET Core 进程外(out-of-process)托管

    ASP.NET Core 进程外(out-of-process)托管 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从 ...

  5. ASP.NET Core 进程外(out-of-process)托管

    ASP.NET Core 进程外(out-of-process)托管 在本节中,我们将讨论 ASP.NET Core 中的Out Of Process Hosting. ASP.NET Core 进程 ...

  6. ASP.NET Core 进程内(InProcess)托管

    ASP.NET Core 进程内(InProcess)托管 在 ASP.NET Core 中的进程内(InProcess)托管模型 什么是 Kestrel 服务器 当一个 ASP.NET Core 应 ...

  7. 快速搞懂.NET 5/.NET Core应用程序的发布部署

    .NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...

  8. IIS在ASP.NET Core下的两种部署模式

    KestrelServer最大的优势体现在它的跨平台的能力,如果ASP.NET CORE应用只需要部署在Windows环境下,IIS也是不错的选择.ASP.NET CORE应用针对IIS具有两种部署模 ...

  9. .Net Core 之 Ubuntu 14.04 部署过程

    No.1 准备应用程序 1. 创建.Net Core Web项目 2. 使用VS2015发布 No.2 安装.Net Core for Ubuntu Ubuntu的安装就不介绍了,百度搜索一大堆.本人 ...

随机推荐

  1. encode()和decode()两个函数

    编码可以将抽象字符以二进制数据的形式表示,有很多编码方法,如utf-8.gbk等,可以使用encode()函数对字符串进行编码,转换成二进制字节数据,也可用decode()函数将字节解码成字符串:用d ...

  2. linux lazarus 连接mssqlserver

    1 . 从https://www.freetds.org/ 下载驱动源文件 2. 参照 https://www.freetds.org/userguide/config.htm 内容编译 3. 启动l ...

  3. php+大文件上传

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...

  4. matlab中句柄@的用法

    @是Matlab中的句柄函数的标志符,即间接的函数调用方法. 1 句柄函数 主要有两种语法: handle = @functionname handle = @(arglist)anonymous_f ...

  5. JMS学习九(ActiveMQ的消息持久化到Mysql数据库)

    1.将连接Mysql数据库的jar文件,放到ActiveMQ的lib目录下 2.修改ActiveMQ的conf目录下的active.xml文件,修改数据持久化的方式 2.1  修改原来的kshadb的 ...

  6. 基于AdminLTE的jquery头像更新

    最近在写实验室管理系统中的个人信息模块,上边要求实现更改头像功能.百度了一大堆,无实用的.(要么各种币) 本文介绍的只是实现了简单功能(毕竟现在初学阶段) 需要引用文件,顺序也不能错. <scr ...

  7. 2.Python环境搭建Window、mac、linux

    1.Windows安装Python详解 使用任何高级编程语言都需要有一个自己的编程环境,Python 也不例外.只要使用 Python,就必须要配置 Python 的开发和运行环境. Python 本 ...

  8. [CSP-S模拟测试]:格式化(贪心)

    题目传送门(内部题105) 输入格式 每组数据第一行一个正整数$n$,表示硬盘块数,接下来$n$行,每行两个正整数,第一个正整数为硬盘格式化前的容量,第二个正整数为格式化之后的容量. 输出格式 对每组 ...

  9. 二分类算法的评价指标:准确率、精准率、召回率、混淆矩阵、AUC

    评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同而给出这个算法或者参数好坏的定量指标. 以下为了方便讲解,都以二分类问题为前提进行介绍,其实多分类问题下这些概念都可以得到推广. ...

  10. 从头开始学习Vuex

    一.前言 当我们的应用遇到多个组件共享状态时,会需要多个组件依赖于同一状态抑或是来自不同视图的行为需要变更同一状态.以前的解决办法: a.将数据以及操作数据的行为都定义在父组件; b.将数据以及操作数 ...