• .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

  • 相关阅读:
    Java lambda 表达式
    c++第五天:默认初始化
    c++第四天
    质量评估面面观--聊一聊软件上线前的质量评估
    用script标签加载
    实现自己的前端模板轻量级框架
    事务消息中心-TMC
    Win10应用设计的那些事儿
    考拉定时任务框架kSchedule
    如何玩转基于风险的测试
  • 原文地址:https://www.cnblogs.com/chonglu/p/15695922.html
Copyright © 2020-2023  润新知