ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-12-15 23:34:37  阅读:255  来源: 互联网

标签:web hellocore CentOS 6.0 systemctl Linux dotnet NET


在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

标签:web,hellocore,CentOS,6.0,systemctl,Linux,dotnet,NET
来源: https://www.cnblogs.com/chonglu/p/15695922.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有