abp.io(vNext)部署备忘

Posted 上将军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abp.io(vNext)部署备忘相关的知识,希望对你有一定的参考价值。

  1. 编译镜像

编译使用的Dockerfile文件是vs自动创建的,存在以下几个问题:

  • 编译使用的aspnet包是3.1-buster-slim,sdk包是3.1-buster,编译后在centOS 8上跑不了,把两个包都换成3.1,也就是没有-buster-slim-buster,就没有问题了。
  • 要在解决方案路径进行编译,不要在项目路径编译,不然会发生复制文件错误。编译的具体语句如下:
docker build -t <MyTag> . -f <项目路径>\\Dockerfile
  1. mysql的表名
    在windows的MySql,表名是不区分大小写的,而在Linux上默认是区分大小写的,如果直接使用windows下的脚本在Linux上创建数据库,哪应用程序就会因大小写问题而找不到表。要解决这个问题,一是在部署机器上运行迁移程序直接生成数据库,一是在本地使用虚拟机,先在虚拟机上的MySq执行迁移,再导出脚本。

  2. docker部署
    由于部署不是all in one的方式,要使应用程序能连接上MySQL,目前测试到的方案只有将应用程序部署到host网络。使用桥接方式(bridge),连redis是没有问题,但就是连不上MySQL,具体什么原因,还没找到相关答案。具体的部署命令如下(假设应用程序的名称为hello):

sudo docker run -itd --name hello --privileged=true --network=host -v /usr/local/docker/hello/log/:/app/Logs -v /usr/local/docker/hello/appsettings.Production.json:/app/appsettings.Production.json -d hello

以上命令中,已将应用程序的日志映射到本地文件/usr/local/docker/hello/log/,这里一定要注意文件夹的大小写,在容器内部的文件夹名称是/app/Logs,如果写成小写/app/logs,就映射不了了。同样,把配置文件也映射到本地文件夹以方便配置。

由于应用程序部署到了host网络,因而在配置文件中,可以直接使用127.0.0.1来连接redis和MySQL,不需要特别的配置,非常的方便。

如果将应用程序部署到host网络,哪又会产生新的问题,应用程序就会使用本地80口作为监听端口,这时候要修改应用程序的kestrel配置,具体代码如下:

            Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                
                    webBuilder.ConfigureKestrel(kestrelBuilder =>
                    
                        kestrelBuilder.Listen(IPAddress.Loopback, 5000);
                        kestrelBuilder.Listen(IPAddress.Loopback, 5001);
                    );
                        webBuilder.UseStartup<Startup>();
                )
                .UseAutofac()
                .UseSerilog();

以上代码监听了两个端口,一个是基于http的,一个是基于https,参考微软文档,监听https的端口还要进行证书配置,具体怎么配置还没仔细研究,先把应用程序跑起来再说。

  1. nginx配置

由于应用程序部署到了host网络,这使用Nginx的配置也变得简单了,直接转发到http://127.0.0.1:5000就可以了,具体的serve配置如下:

    server 
        listen 80;
        server_name 具体域名;

        location / 
              proxy_pass http://127.0.0.1:5000/;
               proxy_redirect default;
	     
	

以上是关于abp.io(vNext)部署备忘的主要内容,如果未能解决你的问题,请参考以下文章

Abp.Io(vNext)开发体会

Abp.Io(vNext)开发体会

Abp.io(vNext)开发日志:单页面应用与外部/社交登录

Abp.io(vNext)开发日志:单页面应用与外部/社交登录

ABP vNext微服务架构详细教程——分布式权限框架(上)

ABP Vnext 4.4:统一Ef Core的DbContext/移除EF Core Migrations项目