asp.net core 部署到linux,如何将Asp.net Core站点部署到CentOS

我们要想在linux系统中运行asp.net core程序,有两种方式:

直接部署在linux系统中

通过docker镜像部署在linux系统中

今天就来看下,如何直接把asp.net core应用站点部署到CentOS中!

安装.NET Core SDK

添加微软包地址到rpm(安装升级RPM包)

#其中i表示安装,v表示显示安装过程,h表示显示进度,U是表示升级包

rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

ed67c87a660364a8c2e3e83c264b66ed.png

更新rpm包

rpm update

检查net core版本

更新完以后,默认会安装最新版的NET Core SDK,可以通过以下命令查看版本

dotnet --info

安装成功的话,就会出现以下提示:

1244704450f9ba6d2292768d40d153be.png

手动安装.net core sdk

如果觉得版本不是自己想要的,也可以手动安装,如:

yum install dotnet-sdk-3.1

说明:rpm和yum都是包管理器,rpm只能管理rpm的包,不能解决依赖问题;yum是可以把依赖的包一并安装

发布asp.net core到linux系统

asp.net core程序发布到本地文件夹

通过visual studio 发布菜单,将asp.net core应用程序发布到本地应用程序文件夹。

选择linux x64环境,前面已经安装了SDK,建议直接框架依赖。

f264f9df2d20151580ff052fa063f9e7.png

默认是保存到Release下的publish目录里面,发布后可以直接点击链接导航到目标文件夹。

上传到linux系统

通过XShell,将文件上传到CentOS中的/data/sites/yourapp目录下,其中yourapp可以自己随便命名和创建。

//递归创建目录 -p 表示递归创建

mkdir -p /data/sites/yourapp

在XShell上点击新建传输,直接将windows文件夹中的文件拖动到linux文件夹中即可,如下图所示

7a2185d4698c768cb9ae04ead2af5a14.png

下面会显示传输进度。

如果上传不成功,需要给文件夹设置权限

sudo mkdir -p /data/sites/yourapp

// 修改权限为当前登录用户,否则无法上传

sudo chown -R 用户:用户组 /data

启动应用程序

文件上传上去后,我们进入的Linux系统中,先切换目录到/data/sites/yourapp,再通过dotnet yourapp.dll命令来启动应用程序。

# cd /data/sites/yourapp

//如果当前用户权限不足,在前面加 sudu 提权

# dotnet yourapp.dll

如果我们执行命名后,提示如下界面,表示服务启动成功

// 主机环境:Production

Hosting environment: Production

// 根目录

Content root path: /data/sites/yourapp

// 侦听地址和端口

Now listening on: http://0.0.0.0:5100

// 提示关闭技巧,Ctrl+C 可以关闭此主机

Application started. Press Ctrl+C to shut down.

yourapp 可自行重命名成自己的应用程序启动文件名

将应用程序修改成常驻服务

前面通过命名启用站点的方式,很容易被关闭,只要控制台被关闭,服务就会被关闭。而且运行在控制台模式下,无法执行其它操作。

接下来我们把它修改成常驻服务:

定位到文件夹 /etc/systemd/system,输入命令

//创建dotnet寄宿服务配置文件kestrel-dotnet.service,并进入编辑状态

sudo vi kestrel-dotnet.service

// 按 i 将编辑器转换为输入模式

// 将以下内容 copy 到当前编辑器中

[Unit]

Description=Example .NET Web Site running on Centos

[Service]

WorkingDirectory=/data/sites/yourapp

ExecStart=/usr/bin/dotnet yourapp.dll

Restart=always

# Restart service after 10 seconds if the dotnet service crashes:

RestartSec=10

KillSignal=SIGINT

SyslogIdentifier=dotnet-example

User=root

Environment=ASPNETCORE_ENVIRONMENT=Production

Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]

WantedBy=multi-user.target

// 按 esc 键推出编辑模式,输入命令 :wq! 保存并退出

执行以上命令后,我们还需要注册和启动服务

// 注册服务

sudo systemctl enable kestrel-dotnet.service

// 启动服务

sudo systemctl start kestrel-dotnet.service

以上命令执行完成后,我们就完成了常驻服务了。

这个时候,我们可以用浏览器打开我们刚部署的站点,如:http://192.168.1.110:5100。

如果可以正常访问就表示部署完成了。如果不能正常访问,我们可以通过以下几种方式来判断服务是否正常。

外部浏览器无法访问服务排查方法

查看服务是否正在运行

//服务未启动,外部肯定无法访问服务器,需要查看服务是否在线

//通过以下命令,查看`kestrel-dotnet.service`是否存在,如果不存在则重启服务

//查看`kestrel-dotnet.service`是否存在

# systemctl | grep running

//如果不存在,启动服务

# systemctl start kestrel-dotnet.service

查看端口是否正在监听

//如果服务存在,但是应用程序监听错误,也会导致外部无法访问

//查看本机的监听端口是否正常开启,如果没有正常开启,检查站点服务是否启动异常

# netstat -nao

查看本地是否可访问

//先排查本机服务是否能正常访问,如果本机能正常访问,表示本地服务正常。那就需要从其它因素考虑原因。

//尝试请求服务,如果有响应,表示服务正常

# curl http://192.168.1.110:5100

查看端口是否添加到防火墙白名单

//如果端口没有对外暴露,外部应用程序是无法访问的。这种情况,就是本机能正常访问,而外部无法访问很常见的因素

//检查防火墙对外暴露端口,是否包含自己部署的应用程序端口号

# firewall-cmd --zone=public --list-ports

//添加端口到白名单

# firewall-cmd --add-port=5100/tcp

//添加成功后,再重新访问,查看请求是否正常

以上就是将asp.net core部署到linux系统中的过程,我们终于可以真正体验跨平台的乐趣了。

下一篇我们再来看看,如果将asp.net core站点,通过docker部署到linux系统中。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Centos7发布说明 环境说明: 服务器系统:CentOS 7.2.1511 相关工具:Xshel、Xftp 服务器软件软件:.netcore、nginx、supervisor 准备好发布的程序 安装.NET Core SDK for CentOS7 打开网址:https://www.microsoft.com/net/core#linuxcentos 复制如下命令,单步执行: sudo yum install libunwind libicu curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=835019 sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/local/bin 输入 dotnet –info 来查看是否安装成功 配置Nginx 下载安装Nginx,单步执行如下命令: 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 systemctl start nginx 来启动nginx systemctl enable nginx 来设置nginx的开机启动(linux宕机、重启会自动运行nginx不需要连上去输入命令)。 配置防火墙 命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(开放80端口) 命令:systemctl restart firewalld(重启防火墙以使配置即时生效) 测试nginx是否可以访问。 配置nginx对ASP.NET Core应用的转发 修改 /etc/nginx/conf.d/default.conf 文件,将文件内容替换为: server { listen 80; 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; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值