当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net core系列 76 Apollo 快速安装模式下填坑和ASP.NetCore结合使用

asp.net core系列 76 Apollo 快速安装模式下填坑和ASP.NetCore结合使用

2020年03月28日  | 移动技术网IT编程  | 我要评论

南昌保利香槟国际,麦泽利安,陈立穗

前言:由于公司占时没有运维,出于微服务的需要,apollo只能先装在windows 阿里云上跑起来,由于环境及网络等问题,在安装过程中遇到很多坑,算是一个个坑填完后,最终实现。

 

一. java jdk环境

  java jdk 1.8下载地址: 

   建议jdk安装目录不要带有中文、【空格】、特殊符号等,例如:program files 这种会导致使用quick start 里面的./demo.sh start出错,会提示【/c/program: no such file or directory】 就是因为空格的问题

      java jdk官方下载包时需要登录, 我的用户名为:邮箱,密码:hsr123456。安装jdk时选择目录如下:

        

       安装后,配置环境变量,查看版本信息:

二.mysql 环境

  2.1 安装mysql 5.7及以上

  2.2 创建apolloportaldb 数据库

    sql文件在apollo-build-scripts-master包中,该包下载看第三节。

    导入命令如下所示:

    导入成功后,可以通过执行以下sql语句来验证

  2.3 创建apolloconfigdb数据库

     导入命令如下所示:

 

     导入成功后,可以通过执行以下sql语句来验证:

         

   2.4 配置数据库连接信息

     需要编辑修改demo.sh(看第三节),修改apolloportaldb和apolloconfigdb相关的数据库连接串信息。

 

三. 下载快速启动包

    apollo下载地址:    有58m下载有些慢

    配置demo.sh文件内容中的mysql连接设置

# apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/apolloconfigdb?characterencoding=utf8
apollo_config_db_username=root
apollo_config_db_password=123456

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/apolloportaldb?characterencoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=123456

 

 四. quick-start 启动apollo配置中心

    下载git bash, 需要bash环境,下载地址: , 安装后默认路径在c:\users\administrator下,在bush中使用ls查看文件

      将apollo-build-scripts-master目录移到c:\users\administrator下

   启动apolloquick start脚本会在本地启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用。启动功能如下所示:

  

   如果启动失败,查看service/apollo-service.log 或 portal/apollo-portal.log日志进一步分析, 操作系统重启后,需要再打开git bush手动启用demo.sh文件。

   启动成功后访问 输入用户名apollo,密码admin后登录

     配置二个app项目如下所示:

 

 

 五.  asp.net core的客户端使用

    asp.net core系列 73 exceptionless+nlog以及apollo介绍有介绍。几个重要的环节是:

    1.配置appsettings.json  

{
  "logging": {
    "loglevel": {
      "default": "warning"
    }
  },
  "apollo": {
    "appid": "searchservice",
    "metaserver": "http://192.168.2.211:8080/",
    "env": "dev",
    "meta": {
      "dev": "http://192.168.2.211:8080/"
    }
  }
}

    2.添加引用

    install-package microsoft.extensions.configuration -version 2.2.0
    install-package com.ctrip.framework.apollo.configuration -version 2.0.3

    3.program.cs 配置

        public static iwebhostbuilder createwebhostbuilder(string[] args) =>
            webhost.createdefaultbuilder(args)
                   .configureappconfiguration(builder=>builder
                   .addapollo(builder.build().getsection("apollo"))
                   //.addnamespace("")
                   .adddefault())
                .usestartup<startup>();

    4.本地缓存

      apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。

      本地缓存路径位于c:\opt\data\{appid}\config-cache,所以请确保c:\opt\data\目录存在,且应用有读写权限

    5. valuescontroller 使用

        public valuescontroller(iconfiguration configuration)
        {
            _configuration = configuration;
            string mysqlconn = _configuration.getsection("mysql").value;
        }

    6. 添加的项目如下所示:

   7. 动态修改配置参数

     在apollo项目中将mysql的端口修改为3309,点击发布, 在asp.net core 启动项目中刷新页面。获取的配置已动态变化,无需重启asp.net core项目,如下所示:

        [httpget]
        public actionresult<ienumerable<string>> get()
        {
            string mysqlconn = _configuration.getsection("mysql").value;
            return new string[] { mysqlconn};
        }

     

   .net core配置参考:https://github.com/ctripcorp/apollo.net/blob/dotnet-core/apollo.configuration/readme.md

 

六.生产环境遇到的问题

   在windows服务器部署apollo,使用gitbush来启动demo.sh文件时,总是失败,也没有service/apollo-service.log日志文件,这样很难排查问题。验证处理如下:

   1. 在安装的gitbush目标下,打开gitbush的 git-bash.exe文件来启动。我服务器目录是:e:\gitbush\git-bash.exe。

   2. 在demo.sh文件中除了配置mysql,其它都不要修改。

   3. 在环境变量中有另一个java环境,去掉如下:c:\program files (x86)\common files\oracle\java\javapath,增加e:\java\jdk1.8.0_241\bin,在重启打开git-bash.exe文件来启动。 反复测试是这个问题导致

-- 修改部门,
use apolloportaldb;
select * from serverconfig where id=2;
update serverconfig set  `value`='[{"orgid":"test1","orgname":"样例部门1"},{"orgid":"test2","orgname":"yla520"}]'   where id=2
-- 在gitbush中停止服务 再启动
$ /e/apollo-build-scripts-master/demo.sh stop
$ /e/apollo-build-scripts-master/demo.sh start

   4. 最重要一点

    由于服务器在阿里云上,启动apollo后通过访问,会发现eureka 下面的instance info是走的内网ip。这样一来非局域网的.net客户端就无法访问到配置文件。

    目前的一个解决方法是在服务器操作系统上,添加环境变量,变量值为阿里云公开的ip地址,如下所示:

 

     这样apollo关闭再启动后,再次访问,会发现eureka 下面的instance info是走的公网ip

  

   参考:快速启动

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网