zoukankan      html  css  js  c++  java
  • centos 生产环境部署 asp.net core

    参考:
    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx
    https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites
    https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7
    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer

    发布程序

    dotnet publish --configuration Release
    

    服务器安装 net core runtime

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    sudo yum update -y
    
    #使用2.1
    sudo yum install aspnetcore-runtime-2.1
    #使用3.1
    sudo yum install aspnetcore-runtime-3.1
    #查看版本
    dotnet --info
    

    服务守护

    创建文件/etc/systemd/system/kestrel-helloapp.service

    [Unit]
    Description=Example .NET Web API App running on Ubuntu
    
    [Service]
    WorkingDirectory=/var/www/helloapp
    ExecStart=/usr/bin/dotnet /var/www/helloapp/helloapp.dll #服务运行的命令行
    Restart=always
    RestartSec=10 # 崩溃后10秒重启
    KillSignal=SIGINT
    SyslogIdentifier=dotnet-example
    User=root # 以root身份运行,建议改为其他普通用户
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=ASPNETCORE_URLS=https://+:443;http://+:80;http://+:5000 #通过环境变量设置端口,+也可改为 * 或 0.0.0.0
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    
    [Install]
    WantedBy=multi-user.target
    

    可选:上面kestrel-helloapp.service通过ASPNETCORE_URLS环境变量设置了开放的端口,也可通过UseUrls代码强行指定

    2.x:
    public static IWebHost BuildWebHost(string[] args)
    {
        return WebHost.CreateDefaultBuilder(args)
                .UseUrls("http://+:5000;") //通过UseUrls使用特定端口
                .UseStartup<Startup>()
                .Build();
    }
    
    3.x:
    public static IHostBuilder CreateHostBuilder(string[] args) =>
    	Host.CreateDefaultBuilder(args)
    		.ConfigureWebHostDefaults(webBuilder =>
    		{
    			webBuilder.UseStartup<Startup>()
    			.UseUrls("http://+:5000;");
    		});
    

    服务启动

    systemctl enable kestrel-helloapp.service
    systemctl start kestrel-helloapp.service
    systemctl status kestrel-helloapp.service
    

    配置防火墙端口

    firewall-cmd --permanent --zone=public --add-port=5000/tcp
    firewall-cmd --reload
    

    nginx转发

    修改程序,支持代理转发

    using Microsoft.AspNetCore.HttpOverrides;
    
    services.Configure<ForwardedHeadersOptions>(options =>
    {
        //options.KnownProxies.Add(IPAddress.Parse("192.168.56.10"));
        options.ForwardedHeaders =
                ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    });
    
    app.UseForwardedHeaders();
    

    添加nginx配置

    /etc/nginx/conf.d/xx.conf

    server {
        listen        80;
        server_name   example.com *.example.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 $http_host; #此处官方文档使用的$host缺少端口号
            proxy_cache_bypass $http_upgrade;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
        }
    }
    
  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/wswind/p/centos-aspnetcore-publish.html
Copyright © 2011-2022 走看看