.net5 部署到 centos 7

1 在项目中添加 hosting.json 文件用来配置端口,内容如下

{ "urls": "http://*:12306" }

修改启动项目 Program.cs 文件 Main 方法如下

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseConfiguration(
                        new ConfigurationBuilder()
                        .SetBasePath(Directory.GetCurrentDirectory())
                        .AddJsonFile(path:"hosting.json", optional: true,reloadOnChange:true)
                        .Build()
                     )
                    .UseStartup<Startup>()
                    ;
                });
    }

 

这样发布端口就设置为 12306

2 使用vs发布功能生成发布包,项目框架为 .net core 5.0 

3 在linux服务器上安装对应版本的运行时

安装 .net 6 sdk

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

sudo yum install dotnet-sdk-6.0

安装 .net 5 sdk

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

sudo yum install dotnet-sdk-5.0

参考链接:

https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

4 把发布包复制到 linux 的某个目录下 如 /publish/publish.test

  在 linux 终端上,进入到该路径下(即 /publish/publish.test),然后使用 dotnet publish.test.dll 命令就可以启动 asp.net core 应用了

 

 这时可以直接访问网站了,url 格式  linux服务器ip:12306

 

 

注:如果在 linux 启动报错 Failed to bind to address http://[::]:12306: address already in use.

解决方法:找到该项目占用的端口 ,然后 kill 掉该端口,如下参考 项目 WebApiPublishDemo

 

 5 在linux服务器上安装 supervisor 守护进程

之前的启动方式,一旦我们推出了bash,网站也停止了,所以我们在linux安装 supervisor 来托管我们的网站,

5.1 依次执行如下命令安装并配置supervisor

yum install supervisor

mkdir /etc/supervisor

进入 etc/supervisor 目录下执行下面命令生成配置文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

5.2  添加本网站配置文件

在/etc/supervisor目录下创建目录conf.d( 直接在/etc/supervisor目录下执行命令 mkdir  conf.d ),在conf.d目录下创建网站配置文件 publishTest.conf,文件内容如下

[program:publishTest]
command=dotnet publish.test.dll
directory=/publish/publish.test
autorestart=true
stderr_logfile=/var/log/publishTest.err.log
stdout_logfile=/var/log/publishTest.out.log 
environment=ASPNETCORE_ENVIRONMENT=Production 
user=root
stopsignal=INT

修改supervisord.conf文件读取网站配置,将文件最后的 include 内容修改如下(即要删除注释符号“;”启用并添加相关功能):

[include]
files=/etc/supervisor/conf.d/*.conf   ;files = relative/directory/*.ini

6 修改 supervisord.conf 文件中inet_http_server配置节,启用web页面管理

修改后的内容如下

7 启动 supervisor

启动命令如下

supervisord -c /etc/supervisor/supervisord.conf 

在启动时如果报错 Another program is already listenling on a port that .......

解决方法
ps -ef | grep supervisord
然后 kill -9 线程

 

 打开浏览器,输入地址 服务器ip:22222 访问supervisor管理端,用户名 为 user 密码为123

8 修改配置后重新启动supervisor命令

supervisorctl reload

9 修改原代码,打包发到linux,使用 supervisor重启后,访问程序12306端口就能看到最新的功能了

posted @ 2021-07-18 17:30  温故纳新  阅读(381)  评论(0编辑  收藏  举报