如何将.NET部署在Linux上

Linux IT敢客 9个月前 (03-07) 9004次浏览 已收录 0个评论 扫描二维码

        先来陈述一波两年前,和朋友一起合买的服务器,咱的框架是 apache+php+mysql,而朋友是个.NET 攻城狮,他要的框架是 IIS+.NET+SQLSERVER,所以无奈之下,就买了一个 Windows Server 2012 的服务器,用了两年之多!
        之前一直跨不去的那道坎是.NET 的东西非要部署在 Windows 上,其实不然,这个.NET 是可以部署在 Linux 平台的,只不过一直没有操作!近来看到云平台有优惠活动,终于可以考虑换一个服务器系统了,果断买了三年的 Centos 服务器。
        从此之后,开始新的迁移网站历程。最重要的是要将.NET 搬到 Linux 平台上。在微软的官方教程上已经有教程如何在 Linux 上安装.NET,微软分别提供了三大平台的支持,包括 Windows,Linux,MAC OS,其中 linux 又包括 Centos,redhat,Ubuntu 等,具体可查看官方介绍。https://www.microsoft.com/net/learn/get-started/linux/centos 
        这里我们讲述一下安装步骤:以下是官方的教程

  1. Install .NET SDK

    To start building .NET apps you just need to download and install the .NET SDK (Software Development Kit).

    Linux Distribution

              CentOS / Oracle      

    Add the dotnet product feed

    To start installing .NET, you’ll need to register the Microsoft signature key and add the Microsoft Product feed. This only needs to be done once per machine.

    Open a command prompt and run the following commands:

     

    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'

     

  2. Install the .NET SDK

    Update the products available for installation, install the components required by .NET, then install the .NET SDK.

    In your command prompt, run the following commands:

sudo yum updatesudo yum install libunwind libicusudo yum install dotnet-sdk-2.1.4sudo yum updatesudo yum install libunwind libicusudo yum install dotnet-sdk-2.1.4
  1. Create your app

    Open a new command prompt and run the following commands.

dotnet new console -o myAppcd myAppdotnet new console -o myAppcd myApp

The dotnet command will create a new application of type console for you. The -o parameter will create a directory named myApp where your app will be stored, and populates it with the required files. The cd myApp command puts you into the newly created app directory.

  1. The main file in the myApp folder is Program.cs. By default, it already contains the necessary code to write “Hello World!” to the Console.

    using System;namespace myApp{
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
            }
        }}
  2. Run your app

    In your command prompt, run the following command:

    dotnet run

    Congratulations, you’ve built and run your first .NET app!

     

        之后如何部署发布:
把发布包拷贝到 Workspace 中。然后使用命令dotnet Works.Core.dll
这样会启动工程,出现如下提示:

warn: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Error -99 EADDRNOTAVAIL address not available'.
Hosting environment: Production
Content root path: /data/www/uimoe.com
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

接下来是可以考虑 Nginx 或者 Apache 代理 5000 端口
Nginx 配置如下:

server {
    listen 80;
     
    server_name www.xxx.com;
 
    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;
    }
}

Apache 的配置如下:

<VirtualHost *:80>
    DocumentRoot /data/www/xxx
    ServerName www.xxx.com
    ProxyPass / http://localhost:5000/  
    ProxyPassReverse / http://localhost:5000/
    ErrorLog "logs/www.xxx.com-error.log"
    CustomLog "logs/www.xxx.com-access.log" common
</VirtualHost>

完成以上,即可正常打开.NET 框架 www.xxx.com 的网站。
效果图如下
如何将.NET 部署在 Linux 上


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何将.NET 部署在 Linux 上
喜欢 (159)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址