.net core linux

2018-05-23 17:15:04 canduecho 阅读数 5639

长期以来,使用.NET开发的应用只能运行在Windows平台上面,而目前国内蓬勃发展的互联网公司由于成本的考虑,大量使用免费的Linux平台,这就使得.NET空有一身绝技但无法得到广大的施展空间,.NET平台被认为只适合开发企业内部应用系统。

2016年6月27日,微软正式发布.NET Core 1.0、ASP.NET 1.0和Entity Framework Core 1.0,通吃 Windows、OS X和Linux三大操作系统。.NET Core作为新一代跨平台、开源的.NET平台备受瞩目,有人说,.NET程序员的春天来了。

本文将介绍如何把ASP.NET Core的网站发布到Linux服务器上。

环境准备

本文用到的操作系统和软件版本如下:
Visual Studio 2017企业版
.NET Core 1.1
CentOS 7 X64

创建发布ASP.NET Core网站项目

1.创建项目
打开VS2017,新建项目,选择ASP.NET Core Web应用程序(.NET Core)


选择Web应用程序模板。

直接F5测试网站是否正常。

2.增加Url网址配置文件
项目默认使用http://localhost:5000的Url进行侦听,我们可以增加一个配置文件来随时修改Url地址。
在项目根目录中增加一个hosting.json文件,文件内容如下(8080端口可以改成自己喜欢的):

{
  "server.urls": "http://*:8080"
}

编辑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>()
                .UseApplicationInsights()              
                .Build();

            host.Run();
        }

3.发布项目
右键项目-发布,选择文件夹模式。
把发布的PublishOutput文件夹压缩成zip格式,上传到CentOS服务器。

安装.NET Core

1.下载最新的.NET Core版本
官网下载地址:https://www.microsoft.com/net/download/linux
我使用的版本是dotnet-centos-x64.1.1.1.tar.gz。
2.上传并解压下载的安装文件。

$ # 创建dotnet文件夹
$ mkdir ~/dotnet
$ # 复制dotnet安装文件到dotnet文件夹下
$ cp dotnet-centos-x64.1.1.1.tar.gz ~/dotnet
$ # 解压安装文件
$ tar -xzf ~/dotnet/dotnet-centos-x64.1.1.1.tar.gz
$ # 添加软连接,可以在全局使用
$ ln -s ~/dotnet/dotnet /usr/local/bin
$ # 测试安装是否成功,成功会显示版本号
$ dotnet –version 

启动网站

$ #解压之前上传的网站压缩文件,如果没有安装unzip,运行yum install -y unzip zip安装
$ unzip ~/dotnet/PublishOutput.zip
$ #先关闭防火墙
$ systemctl stop firewalld.service
$ #启动网站
$ cd PublishOutput
$ dotnet  TestAspNetCoreWeb.dll
$ 如果报错Failed to bind to CoreCLR,运行yum install -y libunwind 和 yum install -y icu


启动成功,可以访问http://192.168.57.7:8080打开了(192.168.57.7是虚拟机IP地址,本地访问的话也可以使用localhost)。

安装配置守护进程(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=/root/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重新加载。
没效果可以看log文件是否有报错。

安装配置Nginx

访问 http://dl.fedoraproject.org/pub/
下载合适版本的epel,并上传到服务器。
如:http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

$ #安装epel
$ rpm -ivh epel-release-7-9.noarch.rpm
$ #安装nginx
$ yum install nginx
$ #启动nginx
$ systemctl start nginx
$ #将nginx添加至SELinux的白名单,否则会报502错误。
$ yum install policycoreutils-python
$ cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
$ semodule -i mynginx.pp
$ #测试nginx是否正常
$ curl http://127.0.0.1

修改配置文件/etc/nginx/nginx.conf中server部分为以下内容,配置Nginx侦听之前的网站。

server {
        listen  80 ;
        location / {
             proxy_pass http://192.168.57.7:8080;
        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;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
$ #修改完后重新加载配置文件
$ nginx -s reload
$#设置开机启动
$ systemctl enable nginx.service

配置完成后即可使用http://192.168.57.7访问网站。

2019-07-09 14:28:00 weixin_30393907 阅读数 169

1.安装 .net Core

参考官方网站

https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install

2.发布应用程序服务

3.将包放到 Linux上面并解压:文件夹自己定义 如 : /var/www/WetTest

注意:1.linux系统上的 .net Core 版本要高于发布的web版本

   2.文件位置不要随便放

4.到相应的目录下面:启动网站

 5.配置外网可以访问 添加以下代码:

因为此时 .Net Core 监听的是:Now listening on: http://localhost:5000

这样就能监听到本机以外的5000端口了,外部也能访问了。

 

转载于:https://www.cnblogs.com/leolzi/p/11157119.html

2018-07-17 11:48:42 wuyu0920 阅读数 10315

       最近一个asp.net 的mvc在给客户进行演示的时候,客户问道这个BS系统是否可在linux上运行,我们是一脸的懵逼。回来上网一查,原来还真可以。.NET Core   是微软推出的最新的开源的,跨平台的框架,用它可以创建的应用可以运行在MAC,Linux上 。

    网上相关基于.net core 项目部署到linux也是一大推,在这里只做一个简单的总结和归纳吧。

    1、安装linux:

      我在虚拟机安装的是linux(centOS7.2),安装linux系统网上很多,也很简单。

   2、window下发布项目

     .net core比.net framwork 方便了很多,可以在命令窗口输入命令发布,真的很快很省时间。

     进入你所在的项目目录下,在此目录中按住Shift键,同时点击鼠标左键,在此目录打开命令窗口,然后输入:dotnet publish 回车,即可。

    

十几秒不到,发布成功后,可以看到最后发布成功后项目所在的目录,也就是你mvc项目目录下bin\Debug\netcoreapp2.1\publish

ps:后面我们会把这个publish目录里面的内容放到我们linux系统上

3、linux系统安装.Net Core SDK 

  (最开始我虚拟中装的不是centOS,是红帽系统,但是在安装.net core sdk中步骤比较繁琐,一直注册不成功,后来索性用了centOS)

  打开微软官网给出的步骤:

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

打开微软安装.net core sdk网站,运行一下命令(以root权限进行)

三个命令语句即可完成,实在很简单。

 

安装成功后 输入 dotnet --version 查看是否有版本号,看是否安装成功。(后面要通过dotnet 命令来启动项目服务)

 

4、把发布好的项目publish文件放到linux系统中

    在这里我推荐的工具是SecureCRT+SecureFX。和我们ftp差不多的东西。这里建议放在 var/www/目录下

5、启动项目

   根据第4步,进入linux系统中publish文件夹下,打开终端窗口,输入命令:dotnet 你项目的名称

如果看到localhost:5000 说明项目已经成功启动了。在linux系统中运行可以看到你的项目

 

2019-09-08 19:40:23 qq_36535245 阅读数 481

准备一个Linux服务器,Windows系统安装ssh连接工具,我是用的FinalShell

FinalShell官网下载 

下载安装成功,点击左上角新增一个连接就可以连接上Linux服务器了

要开始安装 .NET,您需要注册 Microsoft 签名密钥并添加 Microsoft 产品提要。运行以下命令:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

安装 .NET 所需的组件,然后安装 .NET SDK。运行以下命令:

sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1  #根据项目版本安装

因为上传到服务器很多时候都是压缩文件,安装解压缩软件unzip

yum install -y unzip zip

Visual Studio给core项目发布文件系统,给文件压缩后传到服务器解压

dotnet /home/wwwroot/WebApplication1.dll    #WebApplication1.dll是项目dll

项目启动成功会如下显示 

Hosting environment: Production
Content root path: /root/.dotnet/dotnet-apps/demo1/CoreDemo1
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

由于这是本地启动的只能在本地访问,所以使用了nginx配置代理

1:添加 Nginx 存储库
sudo yum install epel-release
2:安装 Nginx
sudo yum install nginx
3. 启动 Nginx
sudo systemctl start nginx


其他命令:
systemctl enable nginx  #设置开机启动
systemctl disable nginx   #禁止开机启动
systemctl status nginx     #查看运行状态
systemctl restart nginx    #重启服务

安装启动后,可以在当前服务器地址访问到nginx页面,接下来就是配置nginx代理了

首先拿到Nginx默认配置文件/etc/nginx/nginx.conf把默认80端口转发配置server节点用#符注释掉。

第一行user  nginx改为user  root(由于权限不足访问静态文件,所以改为root)

然后,我们新建一个配置文件netcore.conf,内容如下:

server {
    listen 80;

     #静态文件访问路径
	location ~.*(js|css|png|gif|jpg)$ {
        root /root/.dotnet/dotnet-apps/demo1/CoreDemo1/wwwroot/;
    }
    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;
    }
}

保存并上传到 Nginx 的配置加载目录/etc/nginx/conf.d,最后执行命令nginx -s reload重载 Nginx 配置,使其生效。

就可以在外网用服务器地址访问网站了,但是现在是用ssh工具启动的,断开网站就断开了

所以安装Supervisor     supervisord官网

联网状态下,官方推荐首选安装方法是使用easy_install,它是setuptools(Python 包管理工具)的一个功能。所以先执行如下命令安装 setuptools:
yum install python-setuptools

执行如下命令安装 Supervisor:

easy_install supervisor

新增配置文件夹和文件
mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

 修改supervisord.conf文件,将文件尾部的配置为

    [include]
    files = /etc/supervisor/conf.d/*.conf     新增这个conf.d文件夹(这个路径下的文件就是你要启动的项目,可以多个)

本地新增编辑好一个conf文件,上传到/etc/supervisor/conf.d/目录下

[program:WebApplication1]                        ;自定义进程名称
command=dotnet WebApplication1.dll               ;程序启动命令
directory=/home/wwwroot                         ;命令执行的目录
autostart=true                                  ;在Supervisord启动时,程序是否启动
autorestart=true                                ;程序退出后自动重启
startretries=5                                  ;启动失败自动重试次数,默认是3
startsecs=1                                     ;自动重启间隔
user=root                                       ;设置启动进程的用户,默认是root
priority=999                                    ;进程启动优先级,默认999,值小的优先启动
stderr_logfile=/var/log/WebApplication1.err.log  ;标准错误日志
stdout_logfile=/var/log/WebApplication1.out.log  ;标准输出日志
environment=ASPNETCORE_ENVIRONMENT=Production   ;进程环境变量
stopsignal=INT                                  ;请求停止时用来杀死程序的信号
supervisord -c /etc/supervisor/supervisord.conf    #启动supervisord


ps -ef | grep WebApplication1            #查看supervisord下运行的进程

 

2019-06-12 09:25:39 slwsss 阅读数 306

mkdir /home/admin/dotnet
wget -O /home/admin/dotnet/temp https://............sdk.gz
tar zxf /home/admin/dotnet/temp -C /home/admin/dotnet
rm /home/admin/dotnet/temp
sudo ln -s /home/admin/dotnet/dotnet /usr/local/bin

.Net Core Linux部署

阅读数 475