.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
出现这样即表示成功,Kestrel已经开始监听9090端口了
着急的你这时候肯定直接打开Chrom去访问了,然后页面转了半天,结果出现这个
这是因为防火墙阻挡了你访问
查看防火墙状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
这还没完,因为云服务器厂商还有一道防火墙策略,登录服务器控制面板配置一下
创建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
启动服务
systemctl start kestrel-hellocore.service
查看服务状态
systemctl status kestrel-hellocore.service
如果有错误可以执行
journalctl -xe
根据提示修改Service文件
然后再次启动,会提示执行
systemctl daemon-reload
如此反复操作,根据提示修改直到无报错为止
安装Nginx反向代理#
Todo
SSL证书申请#
Todo
多网站及证书配置#
Todo
启用ForwardedHeaders中间件#
Todo
独立部署(SCD)#
Todo
在Docker上运行.NET程序#
参考https://www.cnblogs.com/chonglu/p/15672478.html
作者:傲慢与偏见
出处:https://www.cnblogs.com/chonglu/p/15695922.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
声明:如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!