Loading

.NET项目部署到Linux系统(CentOS)

在Centos上安装.NET环境

安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

安装运行时

sudo yum install aspnetcore-runtime-6.0

作为 ASP.NET Core 运行时的一种替代方法,你可以安装不包含 ASP.NET Core 支持的 .NET 运行时:将上一命令中的 aspnetcore-runtime-6.0 替换为 dotnet-runtime-6.0

sudo yum install dotnet-runtime-6.0

安装SDK(一般服务器上只需安装运行时即可)

sudo yum install dotnet-sdk-6.0

在Windows上用VS发布项目

默认情况下项目采用的是5000端口,我们可以在Program中手动制定一下端口

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseUrls("http://*:9090").UseStartup<Startup>();
                });

使用Xshell等工具连接云服务器

创建web存放目录,参考命令:

mkdir -p /home/www/web

直接将VS发布成功后的文件(.\bin\Release\net5.0\publish)拖到Xshellweb目录下,它会自动上传,当然也可以使用Xftp等工具去上传,或者在VS发布时选择FTP发布

项目运行测试

项目文件上传完毕后,使用dotnet [程序主文件路径]运行程序

dotnet HelloCore.dll

image-20211215223756056

出现这样即表示成功,Kestrel已经开始监听9090端口了

着急的你这时候肯定直接打开Chrom去访问了,然后页面转了半天,结果出现这个

image-20211215224004625

这是因为防火墙阻挡了你访问

查看防火墙状态

systemctl status firewalld

关闭防火墙

systemctl stop firewalld

这还没完,因为云服务器厂商还有一道防火墙策略,登录服务器控制面板配置一下

image-20211215224338283

创建Service管理应用

安装nano(nano是一个文本编辑工具)

yum install nano

创建Service文件

sudo nano /etc/systemd/system/kestrel-hellocore.service
[unit]
Descrition=my web is hellocore

[Service]
WorkingDirectory=/home/www/web
ExecStart=/usr/bin/dotnet /home/www/web/HelloCore.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-hellocore
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

Ctrl+X退出并询问是否保存 Y保存 回车退出编辑界面 nano [文件名]可进入编辑页

创建服务

systemctl enable kestrel-hellocore.service

image-20211215225919233

启动服务

systemctl start kestrel-hellocore.service

查看服务状态

systemctl status kestrel-hellocore.service

如果有错误可以执行

journalctl -xe

根据提示修改Service文件

然后再次启动,会提示执行

systemctl daemon-reload

image-20211215230735036

如此反复操作,根据提示修改直到无报错为止

安装Nginx反向代理

Todo

SSL证书申请

Todo

多网站及证书配置

Todo

启用ForwardedHeaders中间件

Todo

独立部署(SCD)

Todo

在Docker上运行.NET程序

参考https://www.cnblogs.com/chonglu/p/15672478.html

posted @ 2021-12-15 23:10  傲慢与偏见luc  阅读(3634)  评论(0编辑  收藏  举报