zoukankan      html  css  js  c++  java
  • 携程Apollo一键编译脚本+部署实现

    系统编译安装

    • ubuntu16.11
    • java 1.8

    系统规划

    • Portal共用
    • 其它环境每个两台机器
    • mysql都做主从,所以每个环境的机器上都会安装admin 服务,config服务,以及一个mysql服务

    envipusage
    all 192.168.1.1 portal
    dev 192.168.2.1 admin+config+configdb
    dev 192.168.2.2 admin+config+configdb
    test 192.168.3.1 admin+config+configdb
    test 192.168.3.2 admin+config+configdb
    pre 192.168.4.1 admin+config+configdb
    pre 192.168.4.2 admin+config+configdb
    pro 192.168.5.1 admin+config+configdb
    pro 192.168.5.2 admin+config+configdb

    #!/bin/bash
    ## 先安装jdk1.8以上到/usr/local/java 并设置系统环境变量
    java -version
    base_home="/home/test/Desktop"
    ############################################################################
    dev_meta="http://192.168.2.1:8080,http://192.168.2.2:8080"
    fat_meta="http://192.168.3.1:8080,http://192.168.3.2:8080"
    uat_meta="http://192.168.4.1:8080,http://192.168.4.2:8080"
    pro_meta="http://192.168.5.1:8080,http://192.168.5.2:8080"
    
    ########### portal 数据库 ,共用一个
    # apollo portal db info
    apollo_portal_db_url=jdbc:mysql://192.168.1.1:3306/ApolloPortalDB?characterEncoding=utf8
    apollo_portal_db_password=portal_root_db_password
    
    ############ 四个环境的配置数据库
    # apollo dev config db info
    dev_apollo_config_db_url=jdbc:mysql://192.168.2.1:3306/ApolloConfigDB?characterEncoding=utf8
    dev_apollo_config_db_password=dev_config_root_db_password
    # apollo fat config db info
    fat_apollo_config_db_url=jdbc:mysql://192.168.3.1:3306/ApolloConfigDB?characterEncoding=utf8
    fat_apollo_config_db_password=fat_config_root_db_password
    # apollo uat config db info
    uat_apollo_config_db_url=jdbc:mysql://192.168.4.1:3306/ApolloConfigDB?characterEncoding=utf8
    uat_apollo_config_db_password=uat_config_root_db_password
    # apollo pro config db info
    pro_apollo_config_db_url=jdbc:mysql://192.168.5.1:3306/ApolloConfigDB?characterEncoding=utf8
    pro_apollo_config_db_password=pro_config_root_db_password
    
    ########################## 以下勿更改
    build_sh() {
        cd "$base_home/apollo"
        cp -pr apollo apollo_$1
        cd apollo_$1/scripts
        # apollo config db info
        apollo_config_db_url=$2
        apollo_config_db_username=root
        apollo_config_db_password=$3
        # apollo portal db info
        apollo_portal_db_url=$4
        apollo_portal_db_username=root
        apollo_portal_db_password=$5
        # meta server url, different environments should have different meta server addresses
        dev_meta=$6
        fat_meta=$7
        uat_meta=$8
        pro_meta=$9
        META_SERVERS_OPTS="-Ddev_meta=$dev_meta -Dfat_meta=$fat_meta -Duat_meta=$uat_meta -Dpro_meta=$pro_meta"
        # =============== Please do not modify the following content =============== #
        # go to script directory
        cd "${0%/*}"
        cd ..
        # package config-service and admin-service
        echo "==== starting to build config-service and admin-service ===="
        mvn clean package -DskipTests -pl apollo-configservice,apollo-adminservice -am -Dapollo_profile=github -Dspring_datasource_url=$apollo_config_db_url -Dspring_datasource_username=$apollo_config_db_username -Dspring_datasource_password=$apollo_config_db_password
        echo "==== building config-service and admin-service finished ===="
        echo "==== starting to build portal ===="
        mvn clean package -DskipTests -pl apollo-portal -am -Dapollo_profile=github,auth -Dspring_datasource_url=$apollo_portal_db_url -Dspring_datasource_username=$apollo_portal_db_username -Dspring_datasource_password=$apollo_portal_db_password $META_SERVERS_OPTS
        echo "==== building portal finished ===="
        echo "==== starting to build client ===="
        mvn clean install -DskipTests -pl apollo-client -am $META_SERVERS_OPTS
        echo "==== building client finished ===="
    
    }
    
    ####################初始化环境,下载apollo
    sudo apt-get install -y maven git
    sudo sed -i '/<mirrors>/a<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>' /etc/maven/settings.xml
    mkdir -p apollo
    cd apollo
    git clone https://github.com/ctripcorp/apollo.git
    source /etc/profile
    sudo mv /usr/bin/java /usr/bin/java_bak
    sudo ln -s /usr/local/java/bin/java /usr/bin/
    ###########################################
    
    ##### dev
    build_sh "dev" "$dev_apollo_config_db_url" 
        "$dev_apollo_config_db_password" 
        "$apollo_portal_db_url" 
        "$apollo_portal_db_password" 
        "$dev_meta" "$fat_meta" "$uat_meta" "$pro_meta"
    build_sh "fat" "$fat_apollo_config_db_url" 
        "$fat_apollo_config_db_password" 
        "$apollo_portal_db_url" 
        "$apollo_portal_db_password" 
        "$dev_meta" "$fat_meta" "$uat_meta" "$pro_meta"
    
    build_sh "uat" "$uat_apollo_config_db_url" 
        "$uat_apollo_config_db_password" 
        "$apollo_portal_db_url" 
        "$apollo_portal_db_password" 
        "$dev_meta" "$fat_meta" "$uat_meta" "$pro_meta"
    
    build_sh "pro" "$pro_apollo_config_db_url" 
        "$pro_apollo_config_db_password" 
        "$apollo_portal_db_url" 
        "$apollo_portal_db_password" 
        "$dev_meta" "$fat_meta" "$uat_meta" "$pro_meta"
    
    ######################### 添加本地jar包到本地mvn
    dev_home="$base_home/apollo/apollo_dev"
    apollo_version=`ls $dev_home/apollo-client/target/apollo-client-*.jar |grep -v sources |sed 's/.jar//g' |sed "s#.*apollo-client-##g"`
    mvn install:install-file -DgroupId=com.ctrip.framework.apollo -DartifactId=apollo-client -Dversion=$apollo_version -Dpackaging=jar -Dfile=$dev_home/apollo-client/target/apollo-client-$apollo_version.jar
    mvn install:install-file -DgroupId=com.ctrip.framework.apollo -DartifactId=apollo-core -Dversion=$apollo_version -Dpackaging=jar -Dfile=$dev_home/apollo-core/target/apollo-core-$apollo_version.jar
    mvn install:install-file -DgroupId=com.ctrip.framework.apollo -DartifactId=apollo-buildtools -Dversion=$apollo_version -Dpackaging=jar -Dfile=$dev_home/apollo-buildtools/target/apollo-buildtools-$apollo_version.jar
    mvn install:install-file -DgroupId=com.ctrip.framework.apollo -DartifactId=apollo-common -Dversion=$apollo_version -Dpackaging=jar -Dfile=$dev_home/apollo-common/target/apollo-common-$apollo_version.jar
    #mkdir -p /opt/setting
    #echo 'env=DEV' > /opt/setting/server.properties
    

    安装Portal

    Portal是共用的,代码都一样,所以这里从dev环境拿个编译包就可以

    1. portal服务器的mysql上面执行该SQL : apollo/apollo_dev/scripts/sql/apolloportaldb.sql
      1. 修改数据表ApolloPortalDB.ServerConfig配置如下,修改 apollo.portal.envs : dev,fat,uat,pro
    2. 上传 apollo/apollo_dev/apollo-portal/target/apollo-portal-0.11.0-SNAPSHOT-github.zip 到 portal服务器(192.168.1.1)/data/apollo_portal
    3. unzip apollo-portal-0.11.0-SNAPSHOT-github.zip
    4. 启动portal ./scripts/startup.sh
    5. 访问portal管理后台 http://192.168.1.1:8080/ . 默认管理员 : apollo / admin

    安装config服务

    ···这里以DEV环境设置为例···

    1. dev环境的两个mysql做好主从,执行 apollo/apollo_dev/scripts/sql/apolloconfigdb.sql 的sql文件创建库表
    2. 修改apolloconfigdb库中的ServerConfig
    3. 上传apollo/apollo_dev/apollo-configservice/target/apollo-configservice-0.11.0-SNAPSHOT-github.zip 到 dev两个机器的/data/apollo_config 目录里面
    4. unzip apollo-configservice-0.11.0-SNAPSHOT-github.zip
    5. 启动: ./scripts/startup.sh

    安装admin服务

    1. 上传apollo/apollo_dev/apollo-adminservice/target/apollo-adminservice-0.11.0-SNAPSHOT-github.zip 到dev两个服务器的/data/apollo_admin 目录里面
    2. unzip apollo-adminservice-0.11.0-SNAPSHOT-github.zip
    3. 启动 scripts/startup.sh

    • 如果能看懂这个图,Apollo的基本架构也就理解了。下一篇就开始来讲讲Apollo的一些组件,或是服务

    携程Apollo一键编译脚本+部署实现

  • 相关阅读:
    linux下挂载硬盘出错的解决方法
    linux下解压缩文件中文乱码问题的解决
    VLC播放器的快捷键(shutcut)
    PGSQL 日期时间的比较
    PGSQL 字符串作为查询参数的处理
    pqsql 防注入
    js字符数组转化为数字数组
    js去除字符串的前后空白
    使用gravatar生成头像
    js删除数组的某个元素
  • 原文地址:https://www.cnblogs.com/aiaitie/p/9301011.html
Copyright © 2011-2022 走看看