linux部署apollo环境要求:jdk1.8、mysql5.7
centos7安装jdk1.8跟mysql5.7可以参考我这两篇文章
https://www.cnblogs.com/reasonzzy/p/11149530.html
https://www.cnblogs.com/reasonzzy/p/11150131.html
从github上将源码down下来
https://github.com/ctripcorp/apollo.git
这两个是打包脚本,都可以执行,sh脚本可以用git bash面板执行,
执行前可以修改eureka注册ip跟数据库账号密码参数,如果是本地,
可不做修改,打包方式有两种,一种是quick start方式,另一种是打成三个压缩包形式
quick start方式参考如下文档:
https://github.com/ctripcorp/apollo/wiki/Quick-Start
源码地址:
https://github.com/nobodyiam/apollo-build-scripts.git
主要步骤
修改apollo-configservice, apollo-adminservice和apollo-portal的pom.xml,注释掉spring-boot-maven-plugin和maven-assembly-plugin
在根目录下执行mvn clean package -pl apollo-assembly -am -DskipTests=true
复制apollo-assembly/target下的jar包,rename为apollo-all-in-one.jar
第二种方式压缩包github上面也有现成的,如果不需要调整源码,直接从github上下载
https://github.com/ctripcorp/apollo/releases
数据库脚本在source code.zip这个压缩包里面,源代码scripts/db/migration文件夹里面的sql文件也可以
压缩包下载好之后,只需要修改下配置文件即可
#!/bin/bash # apollo config db info apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 apollo_config_db_username=root apollo_config_db_password= # apollo portal db info apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 apollo_portal_db_username=root apollo_portal_db_password= # =============== Please do not modify the following content =============== # if [ "$(uname)" == "Darwin" ]; then windows="0" elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then windows="0" elif [ "$(expr substr $(uname -s) 1 5)" == "MINGW" ]; then windows="1" else windows="0" fi # meta server url config_server_url=http://localhost:8080 admin_server_url=http://localhost:8090 eureka_service_url=$config_server_url/eureka/ portal_url=http://localhost:8070 # JAVA OPTS BASE_JAVA_OPTS="-Denv=dev" CLIENT_JAVA_OPTS="$BASE_JAVA_OPTS -Dapollo.meta=$config_server_url" SERVER_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url" PORTAL_JAVA_OPTS="$BASE_JAVA_OPTS -Ddev_meta=$config_server_url -Dspring.profiles.active=github,auth -Deureka.client.enabled=false -Dhibernate.query.plan_cache_max_size=192" # executable JAR_FILE=apollo-all-in-one.jar SERVICE_DIR=./service SERVICE_JAR_NAME=apollo-service.jar SERVICE_JAR=$SERVICE_DIR/$SERVICE_JAR_NAME SERVICE_LOG=$SERVICE_DIR/apollo-service.log PORTAL_DIR=./portal PORTAL_JAR_NAME=apollo-portal.jar PORTAL_JAR=$PORTAL_DIR/$PORTAL_JAR_NAME PORTAL_LOG=$PORTAL_DIR/apollo-portal.log CLIENT_DIR=./client CLIENT_JAR=$CLIENT_DIR/apollo-demo.jar # go to script directory cd "${0%/*}" function checkJava { if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then if [ "$windows" == "1" ]; then tmp_java_home=`cygpath -sw "$JAVA_HOME"` export JAVA_HOME=`cygpath -u $tmp_java_home` echo "Windows new JAVA_HOME is: $JAVA_HOME" fi _java="$JAVA_HOME/bin/java" elif type -p java > /dev/null; then _java=java else echo "Could not find java executable, please check PATH and JAVA_HOME variables." exit 1 fi if [[ "$_java" ]]; then version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}') if [[ "$version" < "1.8" ]]; then echo "Java version is $version, please make sure java 1.8+ is in the path" exit 1 fi fi } function checkServerAlive { declare -i counter=0 declare -i max_counter=24 # 24*5=120s declare -i total_time=0 SERVER_URL="$1" until [[ (( counter -ge max_counter )) || "$(curl -X GET --silent --connect-timeout 1 --max-time 2 --head $SERVER_URL | grep "HTTP")" != "" ]]; do printf "." counter+=1 sleep 5 done total_time=counter*5 if [[ (( counter -ge max_counter )) ]]; then return $total_time fi return 0 } checkJava if [ "$1" = "start" ] ; then echo "==== starting service ====" echo "Service logging file is $SERVICE_LOG" export JAVA_OPTS="$SERVER_JAVA_OPTS -Dlogging.file=./apollo-service.log -Dspring.datasource.url=$apollo_config_db_url -Dspring.datasource.username=$apollo_config_db_username -Dspring.datasource.password=$apollo_config_db_password" if [[ -f $SERVICE_JAR ]]; then rm -rf $SERVICE_JAR fi ln $JAR_FILE $SERVICE_JAR chmod a+x $SERVICE_JAR $SERVICE_JAR start --configservice --adminservice rc=$? if [[ $rc != 0 ]]; then echo "Failed to start service, return code: $rc. Please check $SERVICE_LOG for more information." exit $rc; fi printf "Waiting for config service startup" checkServerAlive $config_server_url rc=$? if [[ $rc != 0 ]]; then printf "\nConfig service failed to start in $rc seconds! Please check $SERVICE_LOG for more information.\n" exit 1; fi printf "\nConfig service started. You may visit $config_server_url for service status now!\n" printf "Waiting for admin service startup" checkServerAlive $admin_server_url rc=$? if [[ $rc != 0 ]]; then printf "\nAdmin service failed to start in $rc seconds! Please check $SERVICE_LOG for more information.\n" exit 1; fi printf "\nAdmin service started\n" echo "==== starting portal ====" echo "Portal logging file is $PORTAL_LOG" export JAVA_OPTS="$PORTAL_JAVA_OPTS -Dlogging.file=./apollo-portal.log -Dserver.port=8070 -Dspring.datasource.url=$apollo_portal_db_url -Dspring.datasource.username=$apollo_portal_db_username -Dspring.datasource.password=$apollo_portal_db_password" if [[ -f $PORTAL_JAR ]]; then rm -rf $PORTAL_JAR fi ln $JAR_FILE $PORTAL_JAR chmod a+x $PORTAL_JAR $PORTAL_JAR start --portal rc=$? if [[ $rc != 0 ]]; then echo "Failed to start portal, return code: $rc. Please check $PORTAL_LOG for more information." exit $rc; fi printf "Waiting for portal startup" checkServerAlive $portal_url rc=$? if [[ $rc != 0 ]]; then printf "\nPortal failed to start in $rc seconds! Please check $PORTAL_LOG for more information.\n" exit 1; fi printf "\nPortal started. You can visit $portal_url now!\n" exit 0; elif [ "$1" = "client" ] ; then if [ "$windows" == "1" ]; then java -classpath "$CLIENT_DIR;$CLIENT_JAR" $CLIENT_JAVA_OPTS com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo else java -classpath $CLIENT_DIR:$CLIENT_JAR $CLIENT_JAVA_OPTS com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo fi elif [ "$1" = "stop" ] ; then echo "==== stopping portal ====" cd $PORTAL_DIR ./$PORTAL_JAR_NAME stop cd .. echo "==== stopping service ====" cd $SERVICE_DIR ./$SERVICE_JAR_NAME stop else echo "Usage: demo.sh ( commands ... )" echo "commands:" echo " start start services and portal" echo " client start client demo program" echo " stop stop services and portal" exit 1 fi