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 进行部署, ...
随机推荐
- BIN文件对象数据库,直接存储对象做数据库,小型项目用它准没错
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- HCNA配置telnet远程管理
1.拓扑图 说明:通过配置最终能通过R5 用telnet协议登陆到R4上并将R4改名为R44 2.R4配置 <Huawei>sys Enter system view, return us ...
- iOS获取/删除url中的参数
1.获取URL中的某个参数: - (NSString *)getParameter:(NSString *)parameter urlStr:(NSString *)url { NSError *er ...
- mysql全部基本数据类型
MySQL基本数据类型统计http://www.cnblogs.com/xuqiang/archive/2010/10/14/1953464.html 详细介绍http://www.cnblogs.c ...
- 大数据量高并发的数据库优化详解(MSSQL)
转载自:http://www.jb51.net/article/71041.htm 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能. ...
- vue.js 错误提示bash: vue: command not found
在使用 vue init webpack vue-demo 进行demo的下载时,提示vue: command not found,原因是环境变量没有进行配置,所以会出现这个问题,解决办法 找到你安装 ...
- Android(java)学习笔记64:Android权限大全
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permissio ...
- rsync安装配置实时同步
一.简介 1.认识 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远 程两个主 ...
- NestedScrollView和RecyclerView使用,并设置间距
NestedScrollView和RecyclerView使用,并设置间距: 效果图如下: 1.NestedScrollView 和RecyclerView嵌套问题(类似ScrollView 和lis ...
- java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class
package com.swift.kaoshi; import java.io.File; import java.util.List; import java.util.Scanner; impo ...