在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