• 携程apollo linux服务器安装部署及问题记录


    环境

    jdk1.8、mysql5.7* 、系统可用内存2G+

    下载Quick Start安装包

    github地址:GitHub - apolloconfig/apollo-quick-start: Apollo Quick Startg​​​​​​​g

    百度网盘地址:通过[网盘链接](https://pan.baidu.com/s/1Ieelw6y3adECgktO0ea0Gg)下载,提取码: 9wwe

    apollo 安装

    1、创建数据库并执行sql

    下载文件后解压,在./sql目录下有两个sql文件,先创建两个mysql数据库ApolloPortalDBApolloConfigDB),并分别执行目录中的sql文件。

    2、修改./demo.sh文件,包括数据库连接信息及服务器端口地址信息

    1. #apollo config db info
    2. apollo_config_db_url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8
    3. apollo_config_db_username=用户名
    4. apollo_config_db_password=密码(如果没有密码,留空即可)
    5. # apollo portal db info
    6. apollo_portal_db_url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8
    7. apollo_portal_db_username=用户名
    8. apollo_portal_db_password=密码(如果没有密码,留空即可)
    9. #将地址改为服务器IP地址
    10. config_server_url=http://xxx.xxx.xxx.xxx:8080
    11. admin_server_url=http://xxx.xxx.xxx.xxx:8090
    12. portal_url=http://xxx.xxx.xxx.xxx:8070

    3、验证端口是否被占用

    使用以下命令验证即可:

    lsof -i:8070、lsof -i:8080、lsof -i:8090

    4、赋权demo.sh文件执行权限

    chomd 777 demo.sh

    5、执行./demo.sh脚本

    6、浏览器访问http://xxx.xxx.xxx.xxx:8070

    用户名/密码:apollo/admin

    遇到的问题

    1、执行demo.sh脚本后,总是卡住,日志信息为:

    Config service failed to start in 120 seconds! Please check ./service/apollo-service.log for more information.

    然后查看./service/apollo-service.log,发现日志信息只有以下内容:

    1. 2022-08-23 15:19:33.906 INFO 3221 --- [main] c.c.f.apollo.assembly.ApolloApplication : The following profiles are active: github
    2. 2022-08-23 15:43:47.868 INFO 10701 --- [main] c.c.f.apollo.assembly.ApolloApplication : Starting ApolloApplication v1.9.2 using Java 1.8.0_161 on localhost.localdomain with PID 10701 (/home/mg_gg_be/apollo/apollo-quick-start-1.9.2/service/apollo-service.jar started by mg_gg_be in /home/mg_gg_be/apollo/apollo-quick-start-1.9.2/service)
    3. 2022-08-23 15:43:47.875 INFO 10701 --- [main] c.c.f.apollo.assembly.ApolloApplication : The following profiles are active: github
    4. 2022-08-23 15:43:55.333 INFO 10701 --- [main] o.s.cloud.context.scope.GenericScope : BeanFactory id=e4e7a962-7e6a-32f7-a9a2-73b8244230aa

    根据这个日志看不出问题,然后再去看生成的console.log发现了问题:

    可以看出,是系统内存不足,导致启动失败了,查询资料得知,由于apollo要一次性启动三个项目,所需要的内存1.XG以上,最好是2G以上。

    1. Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x000000078e300000, 407896064, 0) failed; error='Cannot allocate memory' (errno=12)
    2. #
    3. # There is insufficient memory for the Java Runtime Environment to continue.
    4. # Native memory allocation (mmap) failed to map 407896064 bytes for committing reserved memory.
    5. # An error report file with more information is saved as:
    6. # /home/mg_gg_be/apollo/apollo-quick-start-1.9.2/service/hs_err_pid3221.log

    2、数据库密码问题,执行不成功,查看日志发现提示数据库密码错误:

    1. java.sql.SQLException: Access denied for user 'Mg_gg_apollo_config'@'XX.XX.XX.XX' (using password: YES)
    2. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    3. at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    4. at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:829)
    5. at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:449)
    6. at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:242)
    7. at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
    8. at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
    9. at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364)
    10. at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    11. at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
    12. at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
    13. at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
    14. at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)

    然后查看demo.sh文件,发现密码并没有错误,最后发现数据库密码中有@和$两个特殊字符,在sheel脚本中需要将其强转成普通字符才可以,修改后重新执行,成功!

     

    shell转义符介绍如下:

    shell提供转义符有三种:单引号,双引号,反斜杠,本人使用的是单引号。

    字符说明

    ''

    单引号,硬转义,其内部所有的shell元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。

    ""

    双引号,软转义,其内部只允许出现特定的shell元字符($,`,\):$用于变量值替换、`用于命令替换、\用于转义单个字符

    \

    反斜杠,转义,去除其后紧跟的元字符或通配符的特殊意义。

  • 相关阅读:
    微服务:深入浅出Springboot与Springboot2.x版实战实践
    Springboot毕业设计毕设作品,校园教务排课系统 开题报告
    .balckhoues-V-XXXXXXX勒索病毒数据怎么处理|数据解密恢复
    双11便宜云服务器有哪些值得推荐的
    基于FPGA的I2C读写EEPROM
    如何基于亚马逊云科技打造高性能的 SQL 向量数据库 MyScale
    环路与快速破环
    Unity Input System最简单使用
    C++设计模式_08_Factory Method工厂方法模式
    Spring Boot 链路追踪 SkyWalking 入门
  • 原文地址:https://blog.csdn.net/chen_lay/article/details/126488524