准备工作
https://github.com/nobodyiam/apollo-build-scripts
apollo官网参考
https://github.com/ctripcorp/apollo
Apollo服务端:1.8+
Apollo客户端:1.7+
由于Quick Start会在本地同时启动服务端和客户端,所以需要在本地安装Java 1.8+。
在配置好后,可以通过如下命令检查:
java -version
样例输出:
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
Windows用户请确保JAVA_HOME环境变量已经设置。
MySQL
版本要求:5.6.5+
Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。
连接上MySQL后,可以通过如下命令检查:
SHOW VARIABLES WHERE Variable_name = 'version';
Variable_name Value
version 5.7.11
创建目录
mkdir -p /data/app/ /data/3306/data /data/3306/binlog
创建MySQL相关用户、组
useradd mysql
chown -R mysql.mysql /data
系统残留清空
yum remove mariadb-libs -y
获取路径
http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.7/
软件上传和解压
cd /data/app
tar zxf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
做软连接
ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql
chown -R mysql. /data
环境变量配置
vim /etc/profile
添加如下
export PATH=/data/app/mysql/bin:$PATH
使环境变量生效
source /etc/profile
cat /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3306/data
server_id=6
socket=/tmp/mysql.sock
[client]
EOF
mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data
准备启动脚本
cp /data/app/mysql/support-files/mysql.server /etc/init.d/mysqld
启动数据库
service mysqld start
或者
/etc/init.d/mysqld restart
启动方式2: Centos7 管理方式 systemd
[root@db01 ~] chkconfig --add mysqld
[root@db01 ~] systemctl stop mysqld
[root@db01 ~] systemctl start mysqld
[root@db01 ~] systemctl restart mysqld
登录至数据库查看版本
mysql
SHOW VARIABLES WHERE Variable_name = 'version';
创建ApolloConfigDB
通过各种MySQL客户端导入sql/apolloconfigdb.sql即可。
下面以MySQL原生客户端为例
source /root/apollo/apollo-build-scripts-master/sql/apolloconfigdb.sql;
创建ApolloPortalDB
通过各种MySQL客户端导入sql/apolloportaldb.sql即可。
下面以MySQL原生客户端为例
source /root/apollo/apollo-build-scripts-master/sql/apolloportaldb.sql
授权权限
grant select,insert,update,delete on ApolloConfigDB .* to gx@'%' identified by '123';
grant select,insert,update,delete on ApolloPortalDB .* to gx@'%' identified by '123';
刷新权限
flush privileges;
导入成功后,可以通过执行以下sql语句来验证
select `Id`, `AppId`, `Name` from ApolloPortalDB.App;
导入成功后,可以通过执行以下sql语句来验证:
select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;
vim /root/apollo/apollo-build-scripts-master/demo.sh
./demo.sh start
查看阿波罗日志详情
tailf ./portal/apollo-portal.log
当看到如下输出后,就说明启动成功了!
==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!
异常排查
如果启动遇到了异常,可以分别查看service和portal目录下的log文件排查问题。
注:在启动apollo-configservice的过程中会在日志中输出eureka注册失败的信息,如com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused。需要注意的是,这个是预期的情况,因为apollo-configservice需要向Meta Server(它自己)注册服务,但是因为在启动过程中,自己还没起来,所以会报这个错。后面会进行重试的动作,所以等自己服务起来后就会注册正常了。
使用Apollo配置中心
打开http://localhost:8080
打开http://localhost:8090
打开http://localhost:8070
输入用户名apollo,密码admin后登录
运行客户端程序
./demo.sh client
运行./demo.sh client启动Demo客户端,忽略前面的调试信息,可以看到如下提示
在配置界面点击timeout这一项的编辑按钮
点击发布按钮,并填写发布信息
客户端查看修改后的值
使用新的项目
应用接入Apollo
这部分可以参考Java应用接入指南
运行客户端程序
由于使用了新的项目,所以客户端需要修改appId信息。
编辑client/META-INF/app.properties,修改app.id为你新创建的app id。
app.id=你的appId
运行./demo.sh client启动Demo客户端即可。