.net core linux
2018-01-19 14:07:00 weixin_33946020 阅读数 12

.NET Core跨平台:.NET Core项目部署到linux(Centos7)

 

1.开篇说明

  a 上篇博客简单的说明了一下 使用.NET Core开发的一个总结,地址是:(http://www.cnblogs.com/hanyinglong/p/6442148.html),那么这篇博客我们就在上一篇博客的基础上对其代码进行部署,将其部署在Linux Centos7下。
  b 这周周二,也就是3月7号,微软发布了最新的开发工具(Visual Studio 2017),简单看了一下,带来了更好的开发体验,也推动了跨平台开发的一大步,未来.NET的跨平台将更加的成熟。
  c 下面我们将一个.NET Core项目利用Jexus部署到linux下,那么如果我们要将一个.NET Core项目部署到linux服务器下,需要准备下面的几个东西(Linux服务器,Jexus,安装数据库的服务器,其它(Redis)等)。
  d 下面我们开始大致演示一下如何将.NET Core项目部署到linux服务器下,测试地址:http://www.chuxinm.com/

2.Jexus简单说明

  a 官网地址:http://www.jexus.org/
  b 关于Jexus的安装,我以前也写过一篇文章,地址是(http://www.cnblogs.com/hanyinglong/p/5456757.html),我写的这篇文章是基于Mono安装的,什么意思呢,也就是说要安装Jexus,就要安装Mono,但是现在Jexus提供了免Mono安装的方案,非常方便,大家可以体验一下,如果安装遇到什么问题,大家可以在官网或者其他地方进行查询解决。
  c Jexus快捷安装((一对命令将会安装成功Jexus))

    1.安装:sudo curl jexus.org/release/install | sh

    2.更新:sudo curl jexus.org/release/upgrade | sh

    说明:使用这种命令的安装方法将会吧Jexus安装到/usr/jexus 位置。

3.Visual Studio 2015本地发布并且测试

  a 在本地系统开发完成之后,首先我们需要在本地发布进行测试一下,如果不报错,则上传到服务器
  b 本地项目结构如下图所示:我们就基于本项目进行发布部署到Linux下。
    
    b.1 首先打开cmd,切换到项目所在盘符下,将项目切换到src根目录下(../src/项目名称下),运行命令dotnet publish,运行不报错则本地发布成功,如图所示执行成功之后也展示了将项目发布到什么地方的路径。
    
    b.2 如上图所示,我们跳转到发布的路径下(项目根目录下/bin/Debug/netcoreapp1.0/publish下/),运行命令:dotnet ProgrammersLiveShow.dll ,根据提示访问地址,可本地测试吗,如图所示:
    
  c 如上图所示,我们按照访问路径(http://localhost:5000/),如果访问成功,则证明本地发布没有任何问题,如下图所示:如有操作登录的功能,则进行系统登录测试,确认没有任何问题在进行发布。 
     

4.配置Jexus并且部署.NET Core说明

  a 上述步骤中我们简单说明了一下系统的一些功能以及本地发布,现在我们来简单说明一下如何配置Jexus,因为以前安装过jexus,我们直接在Linux下找到安装的路径,如图所示:
    
  b 如上图所示,我们看到了jexus的安装目录,Jexus的配置其实也很简单,首先我们打开网站配置文件夹siteconf,然后打开默认的default文件,看到如下图所示的配置,配置上简单的说明如下:
            
  c 如上图所示,我们将其项目部署到系统(/var/www/default/publish)下
    
  d 首先我们将本地发布的文件上传到服务器上,直接将本地的publish文件夹上传到/var/www/default下,如下图所示
    
  e 因为我现在系统本身已经发布,所以需要将现在后台运行的线程关闭(执行下面两条命令之后,则已经上线的系统会不能访问),如果是首次发布,则不需要进行这一步,命令如下,如图所示:
    (1):ps -ef | grep ProgrammersLiveShow.dll  
    (2):kill -9 PID
    
  f 上传完成之后,系统跳转到publish下,执行dotnet ProgrammersLiveShow.dll,运行成功并且可以访问,则说明发布才成功,但是这样有一个弊端,就是发布之后不能关闭Xshell,如果关闭则默认程序会推出,所以,我们可以使用下面的命令直接将其设置为在后台运行
        命令如下:nohup dotnet ProgrammersLiveShow.dll &
    
  g 上述步骤全部执行完成之后使用服务器域名加80端口号既可以进行访问,这里可能存在配置80端口号对外访问的权限,在下面会简单说明

5.其它知识点总结

    a 在系统频繁的更新中,做好备份是很关键的一件事情,在每次的上线替换系统之前都要执行如下命令进行备份:
        tar zcvf /var/www/default/remark/(日期)publish.tar.gz /var/www/default/publish/
    b Centos7开放端口,Centos7和7以前开放端口的实现不一致.
        b.1 Centos升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos 7使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口
        b.2 开启端口: firewall-cmd --zone=public --add-port=80/tcp --permanent   --zone #作用域  --add-port=80/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效 
        b.3 重启防火墙 firewall-cmd --reload 
        b.4 开启防火墙: systemctl start firewalld
 
  一个学习.NET Core权限配置的源码购买地址:http://www.chuxinm.com/Shop/Detail/Detail?id=8c2e2aff9290446ababf9c5905fa2609
2017-01-11 18:31:01 lk5423968 阅读数 358

Installing .NET Core on Linux

By Zlatko Knezevic

These instructions will lead you through acquiring the .NET Core DNX SDK via the .NET Version Manager (DNVM) and running a “Hello World” demo on Linux.

.NET Core NuGet packages and the .NET Core DNX SDKs are available on the ASP.NET ‘vnext’ myget feed, which you can more easily view on gallery for the feed.

Setting up the environment

These instructions have been written and tested on Ubuntu 14.04 LTS, since that is the main Linux distribution the .NET Core team uses. These instructions may succeed on other distributions as well. We are always accepting new pull requests on our GitHub repo that address running on other Linux distributions. The only requirement is that they do not break the ability to use Ubuntu 14.04 LTS.

Installing the required packages

Install the libunwind8, libssl-dev and unzip packages:

sudo apt-get install libunwind8 libssl-dev unzip

Certificates

You need to import trusted root certificates in order to restore NuGet packages. You can do that with the mozroots tool.

mozroots --import --sync

Installing DNVM

You need DNVM as a starting point. DNVM enables you to acquire one or multiple .NET Execution Environments (DNX). DNVM is a shell script and does not require .NET. You can use the below command to install it.

curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh

Installing the .NET Core DNX

You first need to acquire the CoreCLR DNX.

dnvm install latest -r coreclr -u

You can see the currently installed DNX versions with dnvm list.

dnvm list

Active Version              Runtime Arch Location             Alias
------ -------              ------- ---- --------             -----
  *    1.0.0-beta5-11649    coreclr x64  ~/.dnx/runtimes

Using a specific runtime

You can choose which of the installed DNXs you want to use with dnvm use, specifying arguments that are similar to the ones used when installing a runtime.

dnvm use -r coreclr -arch x86 1.0.0-beta5-11649
Adding ~/.dnx/runtimes/dnx-coreclr-win-x86.1.0.0-beta5-11649/bin
to process PATH

dnvm list

Active Version              Runtime Arch Location             Alias
------ -------              ------- ---- --------             -----
  *    1.0.0-beta5-11649    coreclr x64  ~/.dnx/runtimes

See the asterisk in the listing above? It’s purpose is to tell you which runtime is now active. “Active” here means that all of the interaction with your projects and .NET Core will use this runtime.

That’s it! You now have the .NET Core runtime installed on your machine and it is time to take it for a spin.

Write your App

his being an introduction-level document, it seems fitting to start with a “Hello World” app. Here’s a very simple one you can copy and paste into a CS file in a directory.

using System;

public class Program
{
    public static void Main (string[] args)
    {
        Console.WriteLine("Hello, Linux");
        Console.WriteLine("Love from CoreCLR.");
    }
}

A more ambitious example is available on the corefxlab repo that will print out a pretty picture based on the argument you provide at runtime. If you wish to use this example, simply save the C# file to a directory somewhere on your machine.

The next thing you will need is a project.json file that will outline the dependencies of an app, so you can actually run it. Use the contents below, it will work for both examples above. Save this file in a directory next to the CS file that contains your code.

{
    "version": "1.0.0-*",
    "dependencies": {
    },
    "frameworks" : {
        "dnx451" : { },
        "dnxcore50" : {
            "dependencies": {
                "System.Console": "4.0.0-beta-*"
            }
        }
    }
}

Run your App

You need to restore packages for your app, based on your project.json, with dnu restore.

dnu restore -s https://www.myget.org/F/aspnetvnext/
dnx run

Hello, Linux
Love from CoreCLR.

遇到问题:

No command 'dnx' found

 
解决方案: dnvm upgrade  

Building .NET Core from source

.NET Core is an open source project that is hosted on GitHub. This means that you can, at any given time, clone the repository and build .NET Core from source. This is a more advanced scenario that is usually used when you want to add features to the .NET runtime or the BCL or if you are a contributor to these projects. The detailed instruction on how to build .NET Core windows can be found in theBuild CoreCLR on Linux on GitHub.

 

 

http://docs.asp.net/en/latest/getting-started/installing-on-linux.html

asp.net docker

https://github.com/aspnet/aspnet-docker/blob/master/1.0.0-rc1-update1-coreclr/Dockerfile

 

//设置文件夹权限

you can also use chmod in this way:
who:

u=user (owner) g=group o=other a=all

action:

+=add -=subtract ==set

permission:

r=read w=write x=execute X=special execute (skip files without existing execute permissions) s=setuid/setgid t=sticky

for instance, set execute for files with at least one execute bit set plus read/write for all files in /path/to/set for the owner and his group and set execute for files with at least one execute bit set plus read for others:

Code:
chmod -R ug=rwX,o=rX /path/to/set/
2019-04-22 16:14:51 u014518337 阅读数 40512
  1. 安装环境依赖包

     输入命令 yum install libunwind libicu

2.下载.NET SDK

     输入命令 sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

3.更新系统软件包

    输入命令 sudo yum update

4.安装.NET Core SDK

    输入命令 sudo yum install dotnet-sdk-2.1

 回车输入 ”Y”

回车输入 ”Y”

5.创建应用程序

    输入命令 dotnet new console -o myAppDemo

6.进入该文件目录

输入命令 cd myAppDemo/

7.检验是否安装成功

              输入命令  dotnet run

显示以上信息,证明.NET Core SDK 环境安装成功

 

2017-03-12 21:05:00 weixin_33970449 阅读数 18

1.开篇说明

  a 上篇博客简单的说明了一下 使用.NET Core开发的一个总结,地址是:(http://www.cnblogs.com/hanyinglong/p/6442148.html),那么这篇博客我们就在上一篇博客的基础上对其代码进行部署,将其部署在Linux Centos7下。
  b 这周周二,也就是3月7号,微软发布了最新的开发工具(Visual Studio 2017),简单看了一下,带来了更好的开发体验,也推动了跨平台开发的一大步,未来.NET的跨平台将更加的成熟。
  c 下面我们将一个.NET Core项目利用Jexus部署到linux下,那么如果我们要将一个.NET Core项目部署到linux服务器下,需要准备下面的几个东西(Linux服务器,Jexus,安装数据库的服务器,其它(Redis)等)。
  d 下面我们开始大致演示一下如何将.NET Core项目部署到linux服务器下,测试地址:http://www.chuxinm.com/

2.Jexus简单说明

  a 官网地址:http://www.jexus.org/
  b 关于Jexus的安装,我以前也写过一篇文章,地址是(http://www.cnblogs.com/hanyinglong/p/5456757.html),我写的这篇文章是基于Mono安装的,什么意思呢,也就是说要安装Jexus,就要安装Mono,但是现在Jexus提供了免Mono安装的方案,非常方便,大家可以体验一下,如果安装遇到什么问题,大家可以在官网或者其他地方进行查询解决。
  c Jexus快捷安装((一对命令将会安装成功Jexus))

    1.安装:sudo curl jexus.org/release/install | sh

    2.更新:sudo curl jexus.org/release/upgrade | sh

    说明:使用这种命令的安装方法将会吧Jexus安装到/usr/jexus 位置。

3.Visual Studio 2015本地发布并且测试

  a 在本地系统开发完成之后,首先我们需要在本地发布进行测试一下,如果不报错,则上传到服务器
  b 本地项目结构如下图所示:我们就基于本项目进行发布部署到Linux下。
    
    b.1 首先打开cmd,切换到项目所在盘符下,将项目切换到src根目录下(../src/项目名称下),运行命令dotnet publish,运行不报错则本地发布成功,如图所示执行成功之后也展示了将项目发布到什么地方的路径。
    
    b.2 如上图所示,我们跳转到发布的路径下(项目根目录下/bin/Debug/netcoreapp1.0/publish下/),运行命令:dotnet ProgrammersLiveShow.dll ,根据提示访问地址,可本地测试吗,如图所示:
    
  c 如上图所示,我们按照访问路径(http://localhost:5000/),如果访问成功,则证明本地发布没有任何问题,如下图所示:如有操作登录的功能,则进行系统登录测试,确认没有任何问题在进行发布。 
     

4.配置Jexus并且部署.NET Core说明

  a 上述步骤中我们简单说明了一下系统的一些功能以及本地发布,现在我们来简单说明一下如何配置Jexus,因为以前安装过jexus,我们直接在Linux下找到安装的路径,如图所示:
    
  b 如上图所示,我们看到了jexus的安装目录,Jexus的配置其实也很简单,首先我们打开网站配置文件夹siteconf,然后打开默认的default文件,看到如下图所示的配置,配置上简单的说明如下:
            
  c 如上图所示,我们将其项目部署到系统(/var/www/default/publish)下
    
  d 首先我们将本地发布的文件上传到服务器上,直接将本地的publish文件夹上传到/var/www/default下,如下图所示
    
  e 因为我现在系统本身已经发布,所以需要将现在后台运行的线程关闭(执行下面两条命令之后,则已经上线的系统会不能访问),如果是首次发布,则不需要进行这一步,命令如下,如图所示:
    (1):ps -ef | grep ProgrammersLiveShow.dll  
    (2):kill -9 PID
    
  f 上传完成之后,系统跳转到publish下,执行dotnet ProgrammersLiveShow.dll,运行成功并且可以访问,则说明发布才成功,但是这样有一个弊端,就是发布之后不能关闭Xshell,如果关闭则默认程序会推出,所以,我们可以使用下面的命令直接将其设置为在后台运行
        命令如下:nohup dotnet ProgrammersLiveShow.dll &
    
  g 上述步骤全部执行完成之后使用服务器域名加80端口号既可以进行访问,这里可能存在配置80端口号对外访问的权限,在下面会简单说明

5.其它知识点总结

    a 在系统频繁的更新中,做好备份是很关键的一件事情,在每次的上线替换系统之前都要执行如下命令进行备份:
        tar zcvf /var/www/default/remark/(日期)publish.tar.gz /var/www/default/publish/
    b Centos7开放端口,Centos7和7以前开放端口的实现不一致.
        b.1 Centos升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos 7使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口
        b.2 开启端口: firewall-cmd --zone=public --add-port=80/tcp --permanent   --zone #作用域  --add-port=80/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效 
        b.3 重启防火墙 firewall-cmd --reload 
        b.4 开启防火墙: systemctl start firewalld
 
  一个学习.NET Core权限配置的源码购买地址:http://www.chuxinm.com/Shop/Detail/Detail?id=8c2e2aff9290446ababf9c5905fa2609

        每天一点点都是进步

             如果文章哪里存在问题,欢迎大家指出来,我会在第一时间修改。

2018-08-31 15:34:50 xp0735 阅读数 214

 

当前小菜的环境:Window 7,vs2017

 

1,.netCore Demo项目

暂且使用默认模板,这个和平常webForm,winForm一样创建,这里就略过了。

 

2,创建好默认工程后,直接iis Express运行,查看效果

2.1,可以发布后,使用CLI运行

 

 

3,发布工程

3.1,当前工程配置文件appsetting.json

 

对dependencies属性的"type": "platform"进行注释

对prepublish属性值进行替换,替换如下"prepublish": [ "bower install", "dotnet bundle" ]

添加以下对象

"runtimes": {
    "centos.7-x64": {}

}

 

 

3.2,在当前工程目录下,打开CLI

 

3.3,执行以下命令行

dotnet publish -r centos.7-x64

 

3.4,对发布后的代码进行压缩包,方便服务器上传

目录是~\bin\Debug\netcoreapp2.0\centos.7-x64\publish

 

4,服务器和域名准备

百度云购买BCC,系统: CentOS Linux 7.5.1804 (Core)

linux系统买好后,直接安装了宝塔,搭建了LNMP环境,所以这个篇博客就略过nginx安装了。

4.1,linux环境安装.netCore

参考官网

https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-current

 

dotnet xxx.dll

提示aspnetcore不存在时执行以下代码

sudo yum install aspnetcore-store-2.0.7

 

5,服务

安装配置守护进程(Supervisor)

使用Supervisor对ASP.NET Core网站应用进行监控,使网站可以持续运行,不然退出Shell后网站就停止了。

$ # 安装Supervisor

$ yum install python-setuptools

$ easy_install supervisor

$ #配置Supervisor

$ mkdir /etc/supervisor

$ echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改supervisord.conf文件,将文件最后的内容修改如下:

创建目录conf.d,在目录下创建文件TestAspNetCoreWeb.conf

文件内容如下:

[program:TestDotNetCoreWeb]

command=dotnet TestAspNetCoreWeb.dll

directory=~/dotnet/PublishOutput

autorestart=true

stderr_logfile=/var/log/TestDotNetCoreWeb.err.log

stdout_logfile=/var/log/TestDotNetCoreWeb.out.log

environment=ASPNETCORE_ENVIRONMENT=Production

user=root

stopsignal=INT

运行supervisord并查看进程是否生效。

$ supervisord -c /etc/supervisor/supervisord.conf

$ ps -ef | grep TestDotNetCoreWeb

配置文件如有修改,使用命令supervisorctl reload重新加载。

以上步骤是小菜亲自测试的结果

没有更多推荐了,返回首页