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

  1. 创建Java文件夹:cd /usr/local ,然后创建Java文件夹 mkdir java
  2. 解压下载的压缩包:tar -zxvf jdk-18_linux-x64_bin.tar.gz 解压后的文件夹名为:jdk-18.0.2.1
  3. 把解压后的文件夹拷贝:cp jdk-18.0.2.1 /usr/local/java
  4. 进入安装目录:cd /usr/local/java
  5. 如果有权限限制,则授权 :chmod +x jdk-18.0.2.1
  6. 删除安装包: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:
在这里插入图片描述

下载了压缩文件后:

  1. tar -xzvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz解压文件,得到mysql-5.7.35-linux-glibc2.12-x86_64。

  2. 执行mv mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql,把解压后的文件夹移动到 /usr/local 目录下,并重命名为 mysql 。

  3. 在/usr/local/mysql目录下创建data目录(一定要在这个目录中创建!!)。

  4. 创建 mysql 用户组以及用户groupadd mysql && useradd -g mysql mysql

  5. 修改 mysql 目录的权限chown -R mysql.mysql /usr/local/mysql && chmod -R 777 /usr/local/mysql

  6. 修改配置文件 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

  7. 到bin目录下,cd /usr/local/mysql/bin,执行./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql --initialize,没有报错即执行成功。

  8. 到error.log文件下获取临时密码,cd /usr/local/mysql/data && cat mysql.err

  9. 启动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

  10. 如需开启免密登陆,在my.cnf文件中【mysqld】模块下面添加:skip-grant-tables 保存退出。

  11. 使用上面的临时密码进入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的数据库连接信息

  1. apollo-configservice-x.x.x-github.zip
  2. 打开config目录下的application-github.properties文件
  3. 填写正确的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的数据库连接信息

  1. apollo-configservice-x.x.x-github.zip
  2. 打开config目录下的application-github.properties文件
  3. 填写正确的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的数据库连接信息

  1. 解压apollo-portal-x.x.x-github.zip
  2. 用程序员专用编辑器(如vim,notepad++,sublime等)打开config目录下的application-github.properties文件
  3. 填写正确的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。

  1. 修改 portal/config/apollo-env.properties 文件中的 dev.meta=http://localhost:28080
  2. 修改 configServer/scripts/startup.sh 文件中的启动端口为28080。
  3. 修改数据库中 apolloConfigDb.serverconfig 中的eureka.service.url 为 http://127.0.0.1:28080/eureka/ 。
  4. 重启apollo服务。

重启后问题解决。

Logo

为开发者提供自动驾驶技术分享交流、实践成长、工具资源等,帮助开发者快速掌握自动驾驶技术。

更多推荐