CentOS7 .NetCore+Nginx 部署

安装DotNet SDK 官方文档

添加镜像订阅

rpm --import https://packages.microsoft.com/keys/microsoft.asc

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'

安装SDK

sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1.3

查看安装

dotnet --version

上传站点 官方文档

psftp [主机地址]

put D:\website.7z

解压文件,使用的是 p7zip

7za x website.7z

创建服务

vi /etc/systemd/system/website.service
[Unit]
Description=Web API Application running on CentOS

[Service]
WorkingDirectory=/home/website
ExecStart=/usr/bin/dotnet /home/website/website.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=website
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

启动服务

systemctl start website
systemctl enable website

测试站点

curl localhost:8010

安装Nginx

yum install -y nginx

启动,测试

systemctl start nginx

nginx -v

修改配置文件

cd /etc/nginx

vi /etc/nginx/conf.d/vhost_website.conf
server {
    server_name [test.xxx.com];
    location / {
        proxy_pass http://localhost:8010;
    }
}

Https配置[可选]

编辑nginx.conf

vi /etc/nginx/nginx.conf
server {
    listen  443 ssl http2 default_server;
    listen[::]:443  ssl http2 default_server;
    server_name _;
    root    /usr/share/nginx/html;

    ssl on;
    ssl_certificate /etc/pki/nginx/certificate.pem;
    ssl_certificate_key /etc/pki/nginx/certificate.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

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

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

编辑vhost_website.conf

vi /etc/nginx/conf.d/vhost_website.conf
server {
    listen  443 ssl http2;
    listen[::]:443  ssl http2;
    server_name [test.xxx.com];
    location / {
        proxy_pass http://localhost:8010;
    }
}

测试

重新启动nginx

systemctl restart nginx

浏览器打开

http://[test.xxx.com]

其它异常

1.Unable to bind to http://localhost:5000 on the IPv6 loopback interface: ‘Error -99 EADDRNOTAVAIL address not available’.

添加hosting.json

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

修改Program

public static void Main(string[] args)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("hosting.json", optional: true)
        .Build();

    WebHost.CreateDefaultBuilder(args)
        .UseConfiguration(config)
        .UseStartup()
        .Build()
        .Run();
}

你可能感兴趣的:(CentOS7 .NetCore+Nginx 部署)