apollo部署
记录一下 apollo 部署过程,以及中间遇到的问题及解决方法,方便日后查看和复用。
apollo简介
to do
依赖版本
- centos7
- java >= 1.8
- mysql >= 5.6.5
把需要依赖的服务先安装好。
下载安装java1.8
官网下载jdk18地址:https://www.oracle.com/java/technologies/downloads/#license-lightbox
官网下载安装
本人是安装到 /usr/local/ 下的,下载的文件为:jdk-18_linux-x64_bin.tar.gz
- 创建Java文件夹:cd /usr/local ,然后创建Java文件夹 mkdir java
- 解压下载的压缩包:tar -zxvf jdk-18_linux-x64_bin.tar.gz 解压后的文件夹名为:jdk-18.0.2.1
- 把解压后的文件夹拷贝:cp jdk-18.0.2.1 /usr/local/java
- 进入安装目录:cd /usr/local/java
- 如果有权限限制,则授权 :chmod +x jdk-18.0.2.1
- 删除安装包:rm -rf jdk-18_linux-x64_bin.tar.gz
这里的jdk-18.0.2.1 是安装的版本号,记得替换,我这个只是例子。
使用vim /etc/profile
命令,修改环境变量,加入以下文本:
export JAVA_HOME=/usr/local/java/jdk-18.0.2.1
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
使环境变量生效,然后使用java -version查看即可。
yum一键安装
直接一条命令:yum install -y java-1.8.0-openjdk.x86_64
安装完后使用 java -version 查看即可。
安装mysql
mysql官网下载地址:https://downloads.mysql.com/archives/community/
在官网选择对应的操作系统和版本,我这边选择的是linux通用版本的5.7.35:
下载了压缩文件后:
-
tar -xzvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
解压文件,得到mysql-5.7.35-linux-glibc2.12-x86_64。 -
执行
mv mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql
,把解压后的文件夹移动到 /usr/local 目录下,并重命名为 mysql 。 -
在/usr/local/mysql目录下创建data目录(一定要在这个目录中创建!!)。
-
创建 mysql 用户组以及用户
groupadd mysql && useradd -g mysql mysql
。 -
修改 mysql 目录的权限
chown -R mysql.mysql /usr/local/mysql && chmod -R 777 /usr/local/mysql
。 -
修改配置文件 vim /etc/my.cnf(没有就新建),修改配置:
[mysqld] bind-address=0.0.0.0 port=3306 user=mysql datadir=/usr/local/mysql/data basedir=/usr/local/mysql socket=/tmp/mysql.sock log-error=/usr/local/mysql/data/mysql.err pid-file=/usr/local/mysql/data/mysql.pid sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 max_connections=400 innodb_file_per_table=1 lower_case_table_names=1 character_set_server=utf8mb4
-
到bin目录下,
cd /usr/local/mysql/bin
,执行./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql --initialize
,没有报错即执行成功。 -
到error.log文件下获取临时密码,
cd /usr/local/mysql/data && cat mysql.err
。 -
启动mysql服务,
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
,如需添加为系统命令,执行ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
,然后执行service mysql start
。 -
如需开启免密登陆,在my.cnf文件中【mysqld】模块下面添加:skip-grant-tables 保存退出。
-
使用上面的临时密码进入mysql,修改root的临时密码为自己的密码
set password for root@localhost = password('123456');
(这里123456改为自己想设置的密码即可)。
mysql依赖
需要分别执行两个sql文件 <apolloportaldb.sql>,<apolloconfigdb.sql> 生成数据库,分别被apollo架构中的portal以及[configservice,adminservice]所依赖。
sql文件下载路径位于github:https://github.com/apolloconfig/apollo/blob/master/scripts/sql/
注:如果已经创建过Apollo数据库,请注意备份数据。默认sql文件会清空Apollo相关的表。或者可以更改sql文件不清空表。
下载安装包
从GitHub Release页面下载预先打好的安装包,Github地址:https://github.com/apolloconfig/apollo/releases
注:如果对Apollo的代码没有定制需求,建议使用这种方式,可以省去本地打包的过程。(本次不涉及定制开发,不采用源码安装方式)
从GitHub Release页面下载最新版本的apollo-configservice-x.x.x-github.zip、apollo-adminservice-x.x.x-github.zip和apollo-portal-x.x.x-github.zip即可。xxx为想要下载的版本号,比如想安装2.0.1则下载apollo-configservice-2.0.1-github.zip。
配置数据库连接信息
1.apollo-configservice的数据库连接信息
- apollo-configservice-x.x.x-github.zip
- 打开config目录下的application-github.properties文件
- 填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格!
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
2.apollo-adminservice的数据库连接信息
- apollo-configservice-x.x.x-github.zip
- 打开config目录下的application-github.properties文件
- 填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格!
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
3.apollo-portal的数据库连接信息
- 解压apollo-portal-x.x.x-github.zip
- 用程序员专用编辑器(如vim,notepad++,sublime等)打开config目录下的application-github.properties文件
- 填写正确的ApolloPortalDB数据库连接串信息,注意用户名和密码后面不要有空格!
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
apollo-portal的meta service信息
Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息;打开apollo-portal-x.x.x-github.zip中config目录下的apollo-env.properties文件。
把local.meta和dev.meta都改成http://localhost:8080:
local.meta=http://localhost:8080
dev.meta=http://localhost:8080
fat.meta=http://fill-in-fat-meta-server:8080
uat.meta=http://fill-in-uat-meta-server:8080
lpt.meta=${lpt_meta}
pro.meta=http://fill-in-pro-meta-server:8080
上传各服务部署
准备工作都完成后,需要将apollo各组件的服务分别启动,完成部署工作。【注意:服务的启动顺序为:configservice -> adminservice -> portal】,因为configService中自带eureka 和 meta服务的包,后面的服务需要依赖。
每个服务执行scripts/startup.sh即可启动服务。如需停止服务,执行scripts/shutdown.sh。
可以专门写两个脚本文件用来分别控制整个apollo服务的启动和停止,文件内容及目录结构如下(我是放在 /root/apollo 目录下,看个人放在哪里,脚本里就写在哪里):
startup.sh
#!/bin/bash
/root/apollo/apollo-configservice-2.0.1-github/scripts/startup.sh
/root/apollo/apollo-adminservice-2.0.1-github/scripts/startup.sh
/root/apollo/apollo-portal-2.0.1-github/scripts/startup.sh
shutdown.sh
#!/bin/bash
/root/apollo/apollo-configservice-2.0.1-github/scripts/shutdown.sh
/root/apollo/apollo-adminservice-2.0.1-github/scripts/shutdown.sh
/root/apollo/apollo-portal-2.0.1-github/scripts/shutdown.sh
文件目录:
注:主要是 startup.sh 和 shutdown.sh 要跟apollo各个服务处于同级目录下。
启动服务
启动上一步创建的 startup.sh 按照顺序启动apollo服务即可。启动成功后,网页上打开 服务器地址:8070 ,打开 portal 可视化页面,默认账号密码: apollo/admin 。
退出服务
启动上一步创建的 shutdown.sh 即可。
遇到的问题
1.just quit unexpectedly
apollo 部署报错:pid - just quit unexpectedly, please check logs under /opt/logs/100003171 and /tmp
原因是数据库密码用了特殊字符,或者账号密码有误,修改后就可以正常安装了。
configServer为8080时,无法访问
当端口为8080时,访问dev环境的configServer服务,报405错误,method not allow,初步断定是8080端口不开放,修改端口为28080。
- 修改 portal/config/apollo-env.properties 文件中的
dev.meta=http://localhost:28080
。 - 修改 configServer/scripts/startup.sh 文件中的启动端口为28080。
- 修改数据库中 apolloConfigDb.serverconfig 中的eureka.service.url 为 http://127.0.0.1:28080/eureka/ 。
- 重启apollo服务。
重启后问题解决。