1. apollo在liunx环境实战(三)

1.1. 准备

  1. 下载apollo源码 https://github.com/ctripcorp/apollo

1.2. 创建数据库

  1. 在自己的liunx环境下的mysql运行它的创库语句

1.3. 配置数据库

  1. 其中环境列表配置,部门配置,请配置数据库

  2. eureka地址配置

1.4. 构建三个服务configservice,adminservice,portal

  1. 它提供了两种方式,一种不用自己定制的直接下载它已经打包好的zip包,地址如下

https://github.com/ctripcorp/apollo/releases

  1. 另一种就是自己打包源码,我采用的自己打包源码,优点就是可以保证代码最新

1.4.1. 打包源码

  1. 打包前

  2. 打包

  3. 我用的git bash模拟liunx运行sh的打包脚本,然后被坑了一把,不知道为什么,打包后对应的数据库url地址就是没有配进去,有知道原因和如何解决的麻烦告知一声,Thanks♪(・ω・)ノ

  4. 我后来是直接手动打开压缩包,把配置文件数据库地址修改了一遍,然后覆盖

1.5. 上传服务器

  1. 把三个服务打包后的zip包上传到服务器

  2. 我编写了一点脚本启动顺手点

[root@izbp1itlw36onyj4m9b4hiz docker-apollo]# ls
adminservice configservice deleteAll.sh portal
[root@izbp1itlw36onyj4m9b4hiz docker-apollo]# cd adminservice/
[root@izbp1itlw36onyj4m9b4hiz adminservice]# ls
apollo-adminservice-1.4.0-SNAPSHOT-github.zip build.sh Dockerfile start.sh
[root@izbp1itlw36onyj4m9b4hiz adminservice]# cat build.sh
#!/bin/bash
docker build -t apollo-adminservice .
[root@izbp1itlw36onyj4m9b4hiz adminservice]# cat start.sh
#!/bin/bash
docker run -p 8090:8090 -d -v /tmp/logs:/opt/logs --name apollo-adminservice apollo-adminservice
[root@izbp1itlw36onyj4m9b4hiz adminservice]# cd ../configservice/
[root@izbp1itlw36onyj4m9b4hiz configservice]# ls
apollo-configservice-1.4.0-SNAPSHOT-github.zip build.sh Dockerfile start.sh
[root@izbp1itlw36onyj4m9b4hiz configservice]# cat build.sh
#!/bin/bash
docker build -t apollo-configservice .
[root@izbp1itlw36onyj4m9b4hiz configservice]# cat start.sh
#!/bin/bash
docker run -p 8080:8080 -d -v /tmp/logs:/opt/logs --name apollo-configservice apollo-configservice
[root@izbp1itlw36onyj4m9b4hiz configservice]# cd ../portal/
[root@izbp1itlw36onyj4m9b4hiz portal]# ls
apollo-portal-1.4.0-SNAPSHOT-github.zip build.sh Dockerfile start.sh
[root@izbp1itlw36onyj4m9b4hiz portal]# cat build.sh
#!/bin/bash
docker build -t apollo-portal .
[root@izbp1itlw36onyj4m9b4hiz portal]# cat start.sh
#!/bin/bash
docker run -p 8070:8070 -d -v /tmp/logs:/opt/logs --name apollo-portal apollo-portal
[root@izbp1itlw36onyj4m9b4hiz portal]# cd ..
[root@izbp1itlw36onyj4m9b4hiz docker-apollo]# cat deleteAll.sh
#!/bin/bash
docker stop `docker ps -a | grep apollo-adminservice | awk '{print $1}'`&docker rm `docker ps -a | grep apollo-adminservice | awk '{print $1}'`&docker rmi `docker images | grep apollo-adminservice | awk '{print $3}'` docker stop `docker ps -a | grep apollo-configservice | awk '{print $1}'`&docker rm `docker ps -a | grep apollo-configservice | awk '{print $1}'`&docker rmi `docker images | grep apollo-configservice | awk '{print $3}'` docker stop `docker ps -a | grep apollo-portal | awk '{print $1}'`&docker rm `docker ps -a | grep apollo-portal | awk '{print $1}'`&docker rmi `docker images | grep apollo-portal | awk '{print $3}'`
  1. 最后的删除脚本没优化过,我用来一键删除部署的三个docker容器的,删除一次失败隔个几秒再删,直到全部镜像删掉

1.6. 构建镜像运行

  1. 基于1.4的脚本,先后运行configservice的build.sh,start.sh,再是adminserivce,portal

1.7. 测试

  1. 访问服务器地址:8080,显示了adminservice和configservice就正确了

  2. 访问服务器地址:8070,显示如下,我已经创建了两个项目

  1. 创建新项目,进去后如下

1.8. 接入客户端

  1. 仍旧以apollo提供的demo为例

1.8.1. 前置准备

  1. 在window中需要配置 C:\opt\settings\server.properties 该文件属性,内容如下,模拟该客户端环境,eureka地址
env=DEV
apollo.meta=http://ip:8080
  1. 修改客户端app.properties中,app.id=你新建项目中配置的appid

1.8.2. 启动客户端

  1. 第一次启动可能有些警告啥的,因为第一次没有本地缓存读不到,忽略它,只要你再界面配置了属性,第一次启动后就会有本地缓存了

  2. 控制台输入属性名回车,后台界面修改属性提交,客户端也能接收到改变,再次获取,属性值改变

Apollo Config Demo. Please input key to get the value. Input quit to exit.
> count
> [apollo-demo][main]2019-03-19 10:49:27,240 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Loading key : count with value: 20
[apollo-demo][Apollo-Config-1]2019-03-19 11:33:50,330 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Changes for namespace application
[apollo-demo][Apollo-Config-1]2019-03-19 11:33:50,334 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Change - key: count, oldValue: 20, newValue: 30, changeType: MODIFIED
count
> [apollo-demo][main]2019-03-19 11:33:54,232 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Loading key : count with value: 30

apollo在liunx环境实战(三)的更多相关文章

  1. Liunx 环境下vsftpd的三种实现方法(超详细参数)

    以下文章介绍Liunx 环境下vsftpd的三种实现方法 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz,目前已经到2.0.3版本.假 ...

  2. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  3. 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)

    用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...

  4. zabbix生产环境案例(三)

    生产环境案例(三) 链接:https://pan.baidu.com/s/1q5YwJMTcZLcS5OQ0iOu44A 提取码:8gdi 复制这段内容后打开百度网盘手机App,操作更方便哦 1. Z ...

  5. miniFTP项目实战三

    项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...

  6. MySQL 系列(五) 多实例、高可用生产环境实战

    MySQL 系列(五) 多实例.高可用生产环境实战   第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 史上最屌.你不知道的数据库操作 第三 ...

  7. coreseek实战(三):全文搜索在php中应用(使用api接口)

    coreseek实战(三):全文搜索在php中应用(使用api接口) 这一篇文章开始学习在php页面中通过api接口,使用coreseek全文搜索. 第一步:综合一下前两篇文章,coreseek实战( ...

  8. 在阿里云 ECS 搭建 nginx https nodejs 环境(三、nodejs)

    在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 第一步 指定版本源 执行 ...

  9. 项目部署到liunx环境下访问接口返回异常

    1.访问接口返回异常 已经连续踩了两次这个坑了.所以记下来了.方便下次搜索! 项目在window下运行正常,无任何异常! 但是部署到liunx环境下的服务器上就有问题 访问静态页面毫无问题,一旦涉及到 ...

随机推荐

  1. 使用Windows Service Wrapper快速创建一个Windows Service 如nginx

    前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...

  2. [转]CDH QuickStart VM基本使用

    https://blog.csdn.net/wiborgite/article/details/78731944 https://www.cnblogs.com/harrychinese/p/big_ ...

  3. 022 包含min函数的栈

    1.题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 2.分析 最初想法是定义一个成员变量min来存放最小元素,但是当最小元素弹出后,min ...

  4. TCP/IP详解 卷一学习笔记(转载)

    https://blog.csdn.net/cpcpcp123/article/details/51259498

  5. Android的自定义View及View的绘制流程

    目标:实现Android中的自定义View,为理清楚Android中的View绘制流程“铺路”. 想法很简单:从一个简单例子着手开始编写自定义View,对ViewGroup.View类中与绘制View ...

  6. Python函数zip-map

    >>> list(zip([1,3,5,7],[2,4,6,8]))[(1, 2), (3, 4), (5, 6), (7, 8)] 把两个列表合成一个 也可以用map函数: > ...

  7. 13-事务&数据库连接池&DBUtiles

    事务&数据库连接池&DBUtils 事务 Transaction  其实指的一组操作,里面包含许多个单一的逻辑.只要有一个逻辑没有执行成功,那么都算失败. 所有的数据都回归到最初的状态 ...

  8. HTML/CSS实现的一个列表页

    又到休息日,白天没事跟朋友去逛逛街,侃大山,晚上了,上网无趣,于是就想起该练练了, 这次是做了一个页面,最上面是一个banner 用到了一个jQuery的逻辑判断当banner初始top值小于wind ...

  9. nodejs编译遇到的问题

    src\node_contextify.cc:631: Assertion 'args[1]->IsString()' failed. node 10 版本会出现这个问题, 安装natives后 ...

  10. 201771010118 马昕璐《面向对象程序设计java》第十周学习总结

    第一部分:理论知识学习部分 泛型:也称参数化类型(parameterized type)就是在定义类.接口和方法时,通过类型参数 指示将要处理的对象类型. 泛型程序设计(Generic program ...