编程 2

解决办法,如何在centos操作系统上发布

首先,在windows 下的VS 2017新建一个asp.net core
web项目,然后我们可以选择两种方法发布网站,一个是使用VS
然后右键发布,一个是使用dotnet
publish命令。我们将生成的文件上传到服务器上:
编程 1

 

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

         location / {
                proxy_pass http://127.0.0.1:5000;
                proxy_set_header Connection "";
                proxy_http_version 1.1;
        }
}

环境:
操作系统: centos 7
.net core: 2.1.101

Microsoft .NET Core Shared Framework Host

  Version  : 1.1.0
  Build    : 928f77c4bc3f49d892459992fb6e1d5542cb5e86

Usage: dotnet [common-options] [[options] path-to-application]

  配置代理: vim /opt/nginx/conf/nginx.conf

怎么解决?那就下载最新版本的dotnet
core呗,我们可以在我们发布成功的文件里面找到**deps.json文件查看我们项目依赖项dll的版本号

2、查看“/opt/dotnet”目录

 

官方网站的示例地址:

分析:

  启动nginx: /opt/nginx/sbin/nginx

但是有一个问题,我的.net core测试项目是在VS 2017下写就的,而vs下的.net
core依赖dll 都是直接使用nuget获取微软官方最新的.net
core版本及其依赖项的。
而我们在centos服务器上安装dotnet core
SDK的时候就有问题了,因为一般这个时候我们都是指定了dotnet
core的版本,而且一般都不是最新版的,因此,这个时候就会有问题了,一旦运行测试就会报错:
编程 2

通过VS2015 update3
创建的项目,默认是NetcoreApp,Version1.0。发布release后,拷贝到linux。cd到程序目录,运行“dotnet 
myapp.dll”,报:

  1. 安装 .net core到centos7

  2. 安装nginx        

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

  重启nginx:/opt/nginx/sbin/nginx -s reload

“cd shared” 目录只有Micorsoft.NETCore.App,版本只有1.1.0

  

编程, 

  

 

  1. 用VS2015新建 .net core WEB项目。并发布。

  2. COPY发布的文件到centos7

  3. dotnet TEST.WEB.dll

  4. 打开连接 localhsot:5000

环境:Centos 7

  停止nginx: /opt/nginx/sbin/nginx -s stop

 

[root@master dotnet]# cd shared
[root@master shared]# ls
Microsoft.NETCore.App
[root@master shared]# cd Microsoft.NETCore.App
[root@master Microsoft.NETCore.App]# ls
1.1.0

 

2、拷贝Micorsoft.NETCore.App目录下的1.0.1目录文件到“/opt/dotnet/shared/Micorsoft.NETCore.App/”

[root@master ~]# cd  PublishOutput
[root@master PublishOutput]# ls
ConsoleApp1.deps.json  ConsoleApp1.pdb
ConsoleApp1.dll        ConsoleApp1.runtimeconfig.json
[root@master PublishOutput]# dotnet ConsoleApp1.dll
hello world
[root@master PublishOutput]# cd /opt/dotnet
[root@master dotnet]# ls
dotnet  host  LICENSE.txt  sdk  shared  ThirdPartyNotices.txt

已经下载安装.NET Core 1.1

下载dotnet.tar.gz
后,解压程序包,并使用“ln”命令把解压文件dotnet连接到目录”/usr/local/bin”,使得在输入“dotnet”命令时,调用”/opt/dotnet/dotnet”

行动:
1、
下载netcore1.0.1,release版本,解压文件。

问题:

输出了“hello world”,问题解决。

思考:在安装dotnet过程中,也只是解压文件,能否通过在Micorsoft.NETCore.App目录下,添加netcore1.0.1的1.0.1目录文件就可以解决呢

[root@master PublishOutput]# dotnet ConsoleApp1.dll
The specified framework 'Microsoft.NETCore.App', version '1.0.1' was not found.
  - Check application dependencies and target a framework version installed at:
      /opt/dotnet/shared/Microsoft.NETCore.App
  - The following versions are installed:
      1.1.0
  - Alternatively, install the framework version '1.0.1'.

1、centos安装dotnet 过程

 

3、cd到应用程序目录,测试”dotnet myapp.dll”,如: