ASP.NET Core 程序发布到 Centos

环境 

  • 本地 win7

  • 服务器:Virtual Box 上的Centos

  • ssh 工具: Xshell

  • 文件传输: xftp 

一、在本地创建 asp.net core应用发布

1.1、使用 VS 2017 新建一个ASP.NET Core项目

步骤略(一路 next),当然你也可以用命令行创建。

1.2 、发布项目

在项目路径下执行命令

dotnet publish –c release

 

先本地运行是否有问题,减少因为本地程序造成发布不成功的几率。程序就简单介绍一下,下面部署是管件。

 

二、安装 NET Core SDK

 

2.1、环境准备

 

我这里是在 VirtualBox 上安装的Centos.

 

1、需要首先记录一点,就是虚拟机最小化安装 CentOS 7 默认没有启动网络配置,所以是不能上网的。

 

接下来就通过 vi 命令编辑网卡配置文件 ifcfg-enp0s3(其他版本名称可能略有不同,但路径一致)。具体命令如下

 

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

 

将 ONBOOT=no 改为 ONBOOT=yes,设置随系统开机运行。然后:wq 强制保存并退出编辑文件即可。

 

最后,需要重启一下网络服务。命令如下:

 

service network restart

 

然后 ping www.baidu.com 检查是否可以正常上网了。

 

这时就可以用 xshell 连接服务器。

 

2、最小化安装同样没有 ifconfig 等网络命令,这里为了方便可以安装 net-tools 工具包

 

yum update
yum install net-tools

 

2.2、安装.NET Core SDK

 

2.2.1、安装 libicu 依赖

 

yum install libunwind libicu

 

2.2.2、注册 dotnet 的 repository

 

您需要注册 Microsoft 签名密钥并添加 Microsoft 产品提要

 

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

 

2.2.3、安装

 

sudo yum update
sudo yum install dotnet-sdk-2.2

 

2.2.4、安装完成

 

dotnet --info

 

微软官方参考:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial

参考:https://blog.csdn.net/u012920852/article/details/79404433

 

2.2.5、发布程序测试

 

这里先将刚开始发布的程序通过 xftp 传输到 centos 服务器上,进入程序文件夹。

运行程序

 

dotnet MyApp.dll

 

但是报错了,如下图

 

ASP.NET Core 程序发布到 Centos

 

这里说明一下:因为本地使用的 sdk2.1,所以我没选最高版本,而是 yum search dotnet-sdk,选的是显示的 2.1 的最高版本,也就是 dotnet-skd-2.1.4。

 

ASP.NET Core 程序发布到 Centos

 

以为是服务端的 sdk 版本太,但是通过 dotnet –info 查看本地版本,如下图:

 

ASP.NET Core 程序发布到 Centos

 

服务端如下:

 

ASP.NET Core 程序发布到 Centos

 

显然是服务器端安装的版本太低了。所以重新安装了 2.2 版本,

 

ASP.NET Core 程序发布到 Centos

 

然后再运行

 

显示运行成功。这里耽误了好一会时间。

 

测试

 

curl http://locahost:5000/api/values

 

可以正常获取信息了

 

但是远程浏览器访问,无法访问。这就怪了,为啥呢?

 

服务器上用 ip 地址访问:

 

curl http://10.100.15.17:5000/api/values

 

ASP.NET Core 程序发布到 Centos

也是不通,最后才发现,原来默认是无法通过 ip 访问。(有大神知道原因可以知道一下)

 

然后关闭重新启动,加上 url 参数

 

dotnet MyApp.dll --server.urls="http://*:5000"

 

此时再通过 IP 访问,OK 通过。

 

本地浏览器访问,OK 也通过。

 

好了这里就可以正常使用,当然测试没问题了,生产绝对不能这样搞。下边还要使用 nginx,以及守护程序之类的。


转自:幕三少

cnblogs.com/smiler/p/10149603.html

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...