.Net Core - 使用Supervisor进行托管部署
环境
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进行托管部署的更多相关文章
- Asp.NetCore轻松学-使用Supervisor进行托管部署
前言 上一篇文章 Asp.NetCore轻松学-部署到 Linux 进行托管 介绍了如何在 Centos 上部署自托管的 .NET Core 应用程序,接下来的内容就是介绍如何使用第三方任务管理程序来 ...
- Linux部署.NetCore站点 使用Supervisor进行托管部署
前言 之前终于在Linux上部署好了.NetCore站点,但是这个站点非常“脆弱”.当我的ssh连接关闭或者我想在当前连接执行其他命令时候就必须关闭dotnet站点的执行程序.这显然不是我想要达到的效 ...
- 使用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 ...
- [07]ASP.NET Core 进程外(out-of-process)托管
ASP.NET Core 进程外(out-of-process)托管 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从 ...
- ASP.NET Core 进程外(out-of-process)托管
ASP.NET Core 进程外(out-of-process)托管 在本节中,我们将讨论 ASP.NET Core 中的Out Of Process Hosting. ASP.NET Core 进程 ...
- ASP.NET Core 进程内(InProcess)托管
ASP.NET Core 进程内(InProcess)托管 在 ASP.NET Core 中的进程内(InProcess)托管模型 什么是 Kestrel 服务器 当一个 ASP.NET Core 应 ...
- 快速搞懂.NET 5/.NET Core应用程序的发布部署
.NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...
- IIS在ASP.NET Core下的两种部署模式
KestrelServer最大的优势体现在它的跨平台的能力,如果ASP.NET CORE应用只需要部署在Windows环境下,IIS也是不错的选择.ASP.NET CORE应用针对IIS具有两种部署模 ...
- .Net Core 之 Ubuntu 14.04 部署过程
No.1 准备应用程序 1. 创建.Net Core Web项目 2. 使用VS2015发布 No.2 安装.Net Core for Ubuntu Ubuntu的安装就不介绍了,百度搜索一大堆.本人 ...
随机推荐
- VueJS简明教程(一)之基本使用方法
简介:这是一篇超级简单的入门文章 如果说是JQuery是手工作坊,那么Vue.js就像是一座工厂,虽然Vue.js做的任何事情JQuery都可以做,但无论是代码量还是流程规范性都是前者较优. Vue. ...
- 对JavaScript 引擎基础:原型优化的研究 -----------------------引用
一.优化层级与执行效率的取舍 介绍了现代 JavaScript 引擎通用的工作流程: 我们也指出,尽管从高级抽象层面来看,引擎之间的处理流程都很相似,但他们在优化流程上通常都存在差异.为什么呢?为什么 ...
- 原生js数组排序(封装方法)
//两值互换 function Sort(arr, index){ //参数arr代表数组,index代表数组元素下标 arr[index] += arr[index + 1]; //a+=b; a ...
- keras学习笔记-bili莫烦
一.keras的backend设置 有两种方式: 1.修改JSON配置文件 修改~/.keras/keras.json文件内容为: { "iamge_dim_ordering":& ...
- 判断字符串a是否以字符串b开头或结尾
使用字符串的 str.startwith() 和 str.endswith()方法 import os , stat for name in os.listdir('.') if name.endsw ...
- Cloud Computing——Everything as a Service
service 分类 有Iaas, Paas, SaaS HDFS 总结☞: HDFS应付不了的场景 无法低时延 小文件存储存在空间利用率问题 文件不可修改 三副本有什么作用 防止单机故障,提高可用性 ...
- Python实现用户注册到文件
import getpass #引入getpass模块,主要用来输入密码关闭回显 f=open('d:/user','a+') #定义文件对象并以追加方式打开,不存在就创建 f.seek(0) #文件 ...
- DVWA--upload
文件上传漏洞 0x01了解文件上传漏洞的用处是用来干什么的 什么是文件上传漏洞? 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执 ...
- 实验报告(一)&第三周总结
Java实验报告 实验一 Java开发环境与简单Java程序 一. 实验目的 (1) 熟悉JDK开发环境 (2) 熟练掌握结构化程序设计方法 二. 实验内容 1. 打印输 ...
- VC程序禁用提示框
程序需要24小时不中断 如果错误提示了的话 runtime error 监控程序就不能重启 下面是网上找的 方便以后用到 http://blog.csdn.net/yuzhiyuxia/article ...