Asp.net Core发布到CentOS7
第一步、安装CentOS
官网https://www.centos.org/下载CentOS,下载地址https://www.centos.org/download/,我选的“DVD ISO”,然后虚拟机VMware Workstation Pro上安装的。
第二步、配置.NET Core开发项目
a、配置Url网址
默认使用http://localhost:5000的Url监听,可通过在项目根目录中添加hosting.json(名字随意)来修改Url和端口号。
{
"server.urls": "http://localhost:5000"
}
b、修改Program.cs,新增配置参数
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.Build(); var host = new WebHostBuilder()
.UseKestrel()
.UseConfiguration(config)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build(); host.Run();
}
c、发布项目
右键项目->发布(B)...->发布方法(M):选文件系统,目标位置(T):默认也行,或者自己指定的PublishOutput文件夹,下一页(X)>,下一页(X)>,发布(P)
把发布成功的项目文件上传到CentOS文件夹下(这里我放在/home/wwwroot/下)
第三步、安装.NET Core环境
a、安装.NET Core SDK
sudo yum install libunwind libicu
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
详见官方说明:https://www.microsoft.com/net/core#linuxcentos
b、验证是否安装成功
dotnet --info
dotnet --version
第四步、配置Nginx
a、从官方地址(http://nginx.org/)下载,解压,配置,编译,安装
b、或者通过curl下载,具体步骤如下:
curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx.rpm
yum install nginx
c、修改Nginx配置文件/etc/nginx/nginx.conf
server {
listen ;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
d、启动Nginx
systemctl start nginx
e、设置开机启动Nginx
systemctl enable nginx
f、防火墙设置
1)添加站点端口(80、5000)
firewall-cmd --zone=public --add-port=/tcp --permanent
firewall-cmd --zone=public --add-port=/tcp --permanent
其中,80端口是给Nginx用,5000端口是给.NET Core用(见第二步配置)
2)重启防火墙
firewall-cmd –-reload
注:重置CentOS7的root密码请参阅这篇文章。关键代码:
找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh
按下 Control+x ,使用单用户模式启动
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot
第五步、设置守护进程Supervisor
a、安装Supervisor
一般情况下,我们在网站发布PublishOutput文件夹下运行
dotnet 项目.dll
可以检查是否正常运行,但是,退出Shell后网站就得停止。所以需要有个程序一直值守并监控着,使网站可以持续运行,所以安装->Supervisor
yum install python-setuptools
easy_install supervisor
b、配置Supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改supervisord.conf文件,将文件尾部配置修改为
[include]
files = conf.d/*.conf
注:表示读取的守护配置文件路径和类型
c、重启
supervisorctl reload
d、配置对.NET Core的守护文件
步骤b中的“files = conf.d/*.conf”,即在/etc/supervisor/conf.d/文件夹下,新建一个名为“项目名.conf”的守护文件,内容如下:
[program:应用程序dll的名称]
command=dotnet 应用程序dll的名称.dll ; 运行程序的命令
directory=/home/wwwroot/应用程序dll的名称/ ; 命令执行的目录
autostart=true ; 自启动
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/应用程序dll的名称.err.log ; 错误日志文件
stdout_logfile=/var/log/应用程序dll的名称.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
运行Supervisord并查看进程是否生效。
supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep 应用程序dll的名字
设置开机自启动
创建/lib/systemd/system/supervisord.service文件,并修改为以下内容
# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon [Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target
启动服务:systemctl enable supervisord
验证一下是否为开机启动:systemctl is-enabled supervisord
Asp.net Core发布到CentOS7的更多相关文章
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core ...
- asp.net core 发布到 docker 容器时文件体积过大及服务端口的配置疑问
在 asp.net core 发布时,本人先后产生了3个疑问. 1.发布的程序为什么不能在docker容器中运行 当时在window开发环境中发布后,dotnet xxx.dll可以正常运行:但放入d ...
- ASP.NET Core 发布
ASP.NET Core 发布,asp.netcore发布 第一步:运行 dotnet restore 命令,以还原项目中指定的依赖项 dotnet restore 第二步:使用 dotnet bui ...
- ASP.NET Core 2.0 MVC 发布部署--------- ASP.NET Core 发布的具体操作
ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...
- 使用 Visual Studio 部署 .NET Core 应用 ——ASP.NET Core 发布的具体操作
ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...
- ASP.NET Core 发布 centos7 配置守护进程
ASP.NET Core应用程序发布linux在shell中运行是正常的.可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 ...
- ASP.NET Core部署到CentOS7,使用Nginx代理
ASP.NET Core 的运行环境由新开发的 Kestrel Server 负责,IIS 退回到 HTTP 的侦听器的角色,微软也特别为了这个需求开发了 IIS Platform Handler,以 ...
- Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署. 有关如何在 Jexus 中进行部署,请 ...
- Asp.Net Core 发布和部署(Linux + Jexus )
前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在 asp.net core 中对我们的已经完成的程序进行发布和部署. 有关如何使用 Nginx 进行部署, ...
随机推荐
- 关于Java虚拟机内存原型的基本知识
Java虚拟机内存原型的六个部分: 1.寄存器:我们在程序中无法控制 2.栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 3.堆:存放用new产生的数据 4.静态域:存放在 ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) I】咆咆咆哮(三分+贪心)
点此看题面 大致题意: 有\(n\)张卡牌,每张卡牌有两种用法:使场上增加一个伤害为\(a_i\)的生物,或使场上所有生物伤害增加\(b_i\).求最大总伤害. 三分 我们可以三分使用\(a_i\)的 ...
- poj 3485 区间选点
题目链接:http://poj.org/problem?id=3485 题意:X轴上公路从0到L,X轴上下有一些点给出坐标代表村庄,问在公路上最少建几个出口才能使每个村庄到出口的距离不超过D. 以村庄 ...
- 2017.10.16 java中getAttribute和getParameter的区别
(1)getAttribute:表示得到 域中的对象 返回的是OBJ类型; getParameter:表示 得到 传递的参数 返回的是String类型; 也就是getAttribute获得的值需要进 ...
- 2017.10.1 JDBC数据库访问技术
4.1 JDBC技术简介 4.1.1 定义 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的 java API,由一组类与接口组成,通过 ...
- paper-list
1.yolo-v1,yolo-v2,yolo-v3 2.ssd,focal loss,dssd 3.fast-rcnn,faster-rcnn,r-fcn,Light-Head R-CNN,R-FCN ...
- which,whereis,locate,find
which 查看可执行文件的位置 [root@redhat ~]# which passwd /usr/bin/passwd which是通过 PATH 环境变量到该路径内查找可执行文件,所 ...
- 剑指offer25 二叉树中和为某一直的路径
先序遍历 class Solution { public: vector<vector<int> > FindPath(TreeNode* root,int expectNum ...
- SpringBoot学习8:springboot整合freemarker
1.创建maven项目,添加pom依赖 <!--springboot项目依赖的父项目--> <parent> <groupId>org.springframewor ...
- 1189: [HNOI2007]紧急疏散evacuate
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3831 Solved: 1119[Submit][Status][Discuss] Descript ...