本博客讲详细讲解如何在 Windows 搭建携程 Apollo 服务器 (用户个人开发). 开发服务器有多种搭建方式:
(1) docker, 搭建过程非常简单, 推荐有 docker 环境
(2) 部署 Quick start 发行版, 本文采用 Quick start 版部署.

============================
Windows 服务器环境准备
============================
------------------------------
bash 运行环境
------------------------------
Apollo 官方仅提供了一个 bash 脚本启动文件, 所以需要 Windows 下可以执行 bash 脚本, 推荐安装 Git bash 软件包, 官方下载网址为 https://git-for-windows.github.io/, 国内镜像下载网址为 https://github.com/waylau/git-for-win/

------------------------------
Java
------------------------------
Apollo 服务器需要 Jdk8+, Apollo 客户端需要 Jdk7+. 这里安装的是 Jdk8, 如果安装全路径中包括空格, 后面启动 apollo 会有问题, 当然我们也没有必要重新安装, 只需要将安装好的 jdk 文件夹复制一份到没有空格的目录下, 比如复制到 D:\my_program\jdk1.8.0_144\

------------------------------
MySQL
------------------------------
Apollo 后台数据库是 MySQL, 官网要求安装 5.6.5 以上版本, 我装的是 5.7

------------------------------
下载 Quick Start 安装包
------------------------------
下载网址 https://github.com/ctripcorp/apollo/wiki/Quick-Start
并解压到 D:\my_program\apollo-quick-start 目录下.

============================
部署过程
============================
------------------------------
创建数据库
------------------------------
apollo 后台需要两个数据库, 一个是配置服务用的, 另一个是 portal 用的, 手工执行下面的 SQL 监本创建这两个数据库. sql 脚本为:
1. apollo-quick-start\sql\apolloconfigdb.sql
2. apollo-quick-start\sql\apolloportaldb.sql

------------------------------
demo.sh 文件修改数据库配置
------------------------------
Quick start 发行版的数据库配置信息在 demo.sh 文件中, 修改 MySQL 的用户和密码即可.

#apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=用户名
apollo_config_db_password=密码(如果没有密码,留空即可) # apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=用户名
apollo_portal_db_password=密码(如果没有密码,留空即可)

------------------------------
demo.sh 文件的其他补丁
------------------------------
quick-start 版的启动脚本 demo.sh 在 Windows 下运行会有一些问题, 需要修改.
1. 在设置 BASE_JAVA_OPTS 之前, 增加 JAVA_HOME 环境变量的设置.
JAVA_HOME="D://my_program/jdk1.8.0_144"

2. 修改工作目录
原来为 cd "${0%/*}"
修改为 cd D://my_program/apollo-quick-start

3. 注释掉 java 版本检查的 if 语句块:

  #if [[ "$version" < "1.8" ]]; then
# echo "Java version is $version, please make sure java 1.8+ is in the path"
# exit
#fi

4. 减少内存开销, 修改 JAVA_OPTS 内存分配
原来为: BASE_JAVA_OPTS="-Denv=dev"
修改为: BASE_JAVA_OPTS="-Xms256m -Xmx256m -Denv=dev"

------------------------------
启动
------------------------------
cd D:\my_program\apollo-quick-start
d:\my_program\Git\bin\bash.exe demo.sh start

============================
验证和使用
============================
portal_url=http://localhost:8070
config_server_url=http://localhost:8080
admin_server_url=http://localhost:8090

meta server 和 config service 和 eureka_service 是部署在同一个 JVM 进程,所以 meta server 的地址就是 config service 的地址.
eureka_service_url 的路径为: eureka_service_url=$config_server_url/eureka/

http://localhost:8080
输入用户名 apollo,密码 admin 后登录. 该用户是一个超级管理员.

============================
基本配置
============================
1. 添加用户
portal 上有管理用户的界面.

2. 添加超级管理员
需要在 portal DB 中执行下面的 SQL,
select value,t.* from ApolloPortalDB.ServerConfig t
where `key`='superAdmin'
value 字段, 以逗号分割多个 username .

3. 添加部门
需要在 portal DB 中执行下面的 SQL,
select value,t.* from ApolloPortalDB.ServerConfig t
where `key`='organizations'

value 的样式是,
[{"orgId":"TEST1","orgName":"样例部门 1"},{"orgId":"TEST2","orgName":"样例部门 2"}]
apollo 中的部门和用户没有什么直接联系, 部门仅仅是一个显示项而已.

============================
参考
============================

官方Quick start 文档
https://github.com/ctripcorp/apollo/wiki/Quick-Start
如何编排和部署容器化的Apollo服务
http://ghoulich.xninja.org/2018/04/25/how-to-build-and-deploy-containerized-apollo-service/
如何编译安装Apollo服务器(单机版)
http://ghoulich.xninja.org/2018/04/24/how-to-build-and-install-apollo-in-standalone-mode/

==========================================
Apollo 总体架构和官方文档
==========================================
https://www.infoq.cn/article/open-source-configuration-center-apollo
http://www.infoq.com/cn/articles/ctrip-apollo-configuration-center-architecture
https://nobodyiam.com/2018/07/29/configuration-center-makes-microservices-smart/
https://github.com/ctripcorp/apollo/wiki

携程apollo系列-个人开发环境搭建的更多相关文章

  1. 携程apollo系列-客户端集成

    本文讲解如何在 Java 程序中集成 Apollo 配置, 主要涉及到一些基础用法. 对于一些高级用法, 比如如何加密/解密配置项 (可用于数据库密码配置), 如何动态切换数据源地址,如何动态切换日志 ...

  2. 携程Apollo统一配置中心的搭建和使用

    原文链接:https://blog.csdn.net/luhong327/article/details/81453001 一.Apollo配置中心介绍 1.What is Apollo 1.1 Ap ...

  3. 史上最全系列Android开发环境搭建

    一.安装JDK1.JDK下载打开网站http://www.oracle.com/technetwor ... nloads-1880260.html,选择相应的操作系统下载JDK 2.安装JDK本机是 ...

  4. [开发工具] 史上最全系列之开发环境搭建之DDMS

    原文链接:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=275774 一.简介 DDMS 的全称是DalvikDebug Mon ...

  5. 跨平台移动开发phonegap/cordova 3.3全系列教程-开发环境搭建

    操作系统:windwos xp 1.   安装JDK 打开如下网站下载JDK http://www.oracle.com/technetwork/java/javase/downloads/index ...

  6. 【JAVA零基础入门系列】Day1 开发环境搭建

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  7. SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——1.安装系统ubuntu_mate_16.04

    摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识.接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发.本章将从树莓派3的开发环境搭建入手,为后续ros开 ...

  8. Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串

    一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系 ...

  9. 【OpenStack】OpenStack系列1之OpenStack本地开发环境搭建&&向社区贡献代码

    加入OpenStack社区 https://launchpad.net/,注册用户(597092663@qq.com/Admin@123) 修改个人信息,配置SSH keys.OpenPGP keys ...

随机推荐

  1. phoenix API服务发布

    概述 Elixir 的 Phoenix 框架对于开发 Web 应用非常方便,不仅有 RoR 的便利,还有 Erlang 的性能和高并发优势. 但是应用的发布涉及到 Erlang 和 Elixir 环境 ...

  2. RabbitMQ消费者消息权重,

    有的消费者处理速度快,有的消费者处理速度慢,我们想给处理快的多发消息,处理慢的少发消息, 怎么办呢?按照之前的轮询模式,肯定不行的,这里可以检测消息数量,如果消费者正在处理就不给他发 .... def ...

  3. DRF项目创建流程(1)

    一 web应用模式 前后端不分离 前后端分离 二 RESTFUL API规范 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态 ...

  4. HBase实践案例:知乎 AI 用户模型服务性能优化实践

    用户模型简介 知乎 AI 用户模型服务于知乎两亿多用户,主要为首页.推荐.广告.知识服务.想法.关注页等业务场景提供数据和服务, 例如首页个性化 Feed 的召回和排序.相关回答等用到的用户长期兴趣特 ...

  5. 外部访问docker中的MySQL

    注:192.168.1.203机器上装有docker,容器在该机器上 mysql> use mysql; mysql> update user set authentication_str ...

  6. 动态生成的dom元素如何绑定事件

    两种类型1.$('li').bind('click',function(){}); 当你用js动态添加li的时候,你添加的li不具有你绑定的事件.这种写法与$('li').click(function ...

  7. 4月11日java多线程4

    继昨天学习了线程池之后,今天学习了多线程内的锁Lock. 定义方法: ReentrantLock queueLock = new ReentrantLock(); //可重入锁 ReentrantRe ...

  8. java从Swagger Api接口获取数据工具类

  9. springmvc解决中文乱码问题

    1 第一种情况(get接收参数): 最近在用solr做一个搜索服务,发布给手机和pc等客户端调用,调用方式为:   http://www.ganbo.search/search?q="手机& ...

  10. 15.service认证机制

    kubernetes的安全机制,不仅仅再客户端和apisever之间的交互,各pod之间后者跨namespace之间也要以此为基准配合 RBAC来进行.提到另一个账户关系serviceaccount简 ...