|
#!/bin/bash
|
|
# init_config.sh
|
|
# init enviroment config scripts.
|
|
# @version 170322:1
|
|
# @author zhangxuhong <zhangxuhong@xitu.io>
|
|
#
|
|
|
|
# ----------------------------[manual config here]------------------------------
|
|
|
|
|
|
# base config
|
|
REPO_SRC=/data/repo/baidu_link_submit_ms
|
|
REPO_NAME=baidu_link_submit_ms
|
|
BUILD_TARGET="${REPO_NAME}"
|
|
RELEASE_ENV=$1 # test, beta, online
|
|
|
|
# nginx config file type
|
|
DOMAIN_NAME="baidu-link-submit-ms.juejin.im"
|
|
PUBLIC_UPSTREAM_PORT=13100
|
|
PRIVATE_UPSTREAM_PORT=13100
|
|
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# default config
|
|
NGINX_CONF_TMPL_PUBLIC="REPO_NAME.public.conf"
|
|
NGINX_CONF_TMPL_PRIVATE="REPO_NAME.private.conf"
|
|
SYSTEMCTL_CONF_TMPL_BETA="REPO_NAME.beta.service"
|
|
SYSTEMCTL_CONF_TMPL_RELEASE="REPO_NAME.online.service"
|
|
|
|
# auto generated config
|
|
# nginx
|
|
NGINX_CONFIG_TMPL_FOLDER="${REPO_SRC}/scripts/config_template/nginx"
|
|
NGINX_CONFIG_DEPLOY_FOLDER="${REPO_SRC}/config/nginx"
|
|
NGINX_CONF_PUBLIC="${REPO_NAME}.public.conf"
|
|
NGINX_CONF_PRIVATE="${REPO_NAME}.private.conf"
|
|
NGINX_CONF_PUBLIC_ADDR="${NGINX_CONFIG_DEPLOY_FOLDER}/${NGINX_CONF_PUBLIC}"
|
|
NGINX_CONF_PRIVATE_ADDR="${NGINX_CONFIG_DEPLOY_FOLDER}/${NGINX_CONF_PRIVATE}"
|
|
|
|
if [ "${PUBLIC_UPSTREAM_PORT}" != "" ]; then
|
|
UPSTREAM_ADDR_PUBLIC="127.0.0.1:${PUBLIC_UPSTREAM_PORT}"
|
|
fi
|
|
if [ "${PRIVATE_UPSTREAM_PORT}" != "" ]; then
|
|
UPSTREAM_ADDR_PRIVATE="127.0.0.1:${PRIVATE_UPSTREAM_PORT}"
|
|
fi
|
|
|
|
# systemctl
|
|
SYSTEMCTL_CONFIG_TMPL_FOLDER="${REPO_SRC}/scripts/config_template/systemctl"
|
|
SYSTEMCTL_CONFIG_DEPLOY_FOLDER="${REPO_SRC}/config/systemctl"
|
|
SYSTEMCTL_CONF="${REPO_NAME}.service"
|
|
SYSTEMCTL_CONF_ADDR="${SYSTEMCTL_CONFIG_DEPLOY_FOLDER}/${SYSTEMCTL_CONF}"
|
|
|
|
# release env
|
|
if [ "$RELEASE_ENV" == "dev" ]; then
|
|
RELEASE_ENV_LOCATION="$RELEASE_ENV"
|
|
elif [ "$RELEASE_ENV" == "beta" ]; then
|
|
RELEASE_ENV_LOCATION="$RELEASE_ENV"
|
|
elif [ "$RELEASE_ENV" == "online" ]; then
|
|
RELEASE_ENV_LOCATION="$RELEASE_ENV"
|
|
else
|
|
RELEASE_ENV_LOCATION=""
|
|
fi
|
|
if [ "$RELEASE_ENV_LOCATION" == "" ]; then
|
|
echo "please input an avaliable deploy environment [dev/beta/online]";
|
|
echo "example: ./init_config.sh.sh beta";
|
|
exit 1;
|
|
fi
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# scripts start
|
|
|
|
# check env
|
|
NOW_PWD=`pwd`
|
|
if [ "$NOW_PWD" != "${REPO_SRC}/scripts" ] && [ "$NOW_PWD" != "${REPO_SRC}" ]; then
|
|
echo -e "\033[43m[WARRING!] PWD is ${NOW_PWD}, but REPO_SRC is ${REPO_SRC} \033[0m";
|
|
echo -e "please check your REPO_SRC config to make sure that you config this file correctly.";
|
|
exit 1;
|
|
fi
|
|
|
|
|
|
# [init nginx config]
|
|
|
|
# deploy tmpl config to deploy folder
|
|
# for public config
|
|
if [ "${PUBLIC_UPSTREAM_PORT}" != "" ]; then
|
|
# deploy tmpl config to deploy folder
|
|
if [ -f "${NGINX_CONF_PUBLIC_ADDR}" ]; then
|
|
rm -f "${NGINX_CONF_PUBLIC_ADDR}";
|
|
fi
|
|
cp "${NGINX_CONFIG_TMPL_FOLDER}/${NGINX_CONF_TMPL_PUBLIC}" "${NGINX_CONF_PUBLIC_ADDR}";
|
|
# replace config param
|
|
sed -i "s/REPO_NAME/${REPO_NAME}/g" "${NGINX_CONF_PUBLIC_ADDR}";
|
|
# replace domain name
|
|
sed -i "s/DOMAIN_NAME/${DOMAIN_NAME}/g" "${NGINX_CONF_PUBLIC_ADDR}";
|
|
# replace upstream addr
|
|
sed -i "s/UPSTREAM_ADDR/${UPSTREAM_ADDR_PUBLIC}/g" "${NGINX_CONF_PUBLIC_ADDR}";
|
|
fi
|
|
|
|
# for private config
|
|
if [ "${PRIVATE_UPSTREAM_PORT}" != "" ]; then
|
|
# deploy tmpl config to deploy folder
|
|
if [ -f "${NGINX_CONF_PRIVATE_ADDR}" ]; then
|
|
rm -f "${NGINX_CONF_PRIVATE_ADDR}";
|
|
fi
|
|
cp "${NGINX_CONFIG_TMPL_FOLDER}/${NGINX_CONF_TMPL_PRIVATE}" "${NGINX_CONF_PRIVATE_ADDR}"
|
|
# replace config param
|
|
sed -i "s/REPO_NAME/${REPO_NAME}/g" "${NGINX_CONF_PRIVATE_ADDR}";
|
|
# replace domain name
|
|
sed -i "s/DOMAIN_NAME/${DOMAIN_NAME}/g" "${NGINX_CONF_PRIVATE_ADDR}";
|
|
# replace upstream addr
|
|
sed -i "s/UPSTREAM_ADDR/${UPSTREAM_ADDR_PRIVATE}/g" "${NGINX_CONF_PRIVATE_ADDR}";
|
|
fi
|
|
|
|
|
|
# [init systemctl config]
|
|
|
|
# deploy tmpl config to deploy folder
|
|
# for beta service
|
|
if [ "${RELEASE_ENV_LOCATION}" == "beta" ]; then
|
|
if [ -f "${SYSTEMCTL_CONF_ADDR}" ]; then
|
|
rm -f "${SYSTEMCTL_CONF_ADDR}";
|
|
fi
|
|
cp "${SYSTEMCTL_CONFIG_TMPL_FOLDER}/${SYSTEMCTL_CONF_TMPL_BETA}" "${SYSTEMCTL_CONF_ADDR}"
|
|
# replace repo name
|
|
sed -i "s/REPO_NAME/${REPO_NAME}/g" "${SYSTEMCTL_CONF_ADDR}";
|
|
# replace build target
|
|
sed -i "s/BUILD_TARGET/${BUILD_TARGET}/g" "${SYSTEMCTL_CONF_ADDR}";
|
|
fi
|
|
|
|
# for online service
|
|
if [ "${RELEASE_ENV_LOCATION}" == "online" ]; then
|
|
if [ -f "${SYSTEMCTL_CONF_ADDR}" ]; then
|
|
rm -f "${SYSTEMCTL_CONF_ADDR}";
|
|
fi
|
|
cp "${SYSTEMCTL_CONFIG_TMPL_FOLDER}/${SYSTEMCTL_CONF_TMPL_RELEASE}" "${SYSTEMCTL_CONF_ADDR}"
|
|
# replace repo name
|
|
sed -i "s/REPO_NAME/${REPO_NAME}/g" "${SYSTEMCTL_CONF_ADDR}";
|
|
# replace build target
|
|
sed -i "s/BUILD_TARGET/${BUILD_TARGET}/g" "${SYSTEMCTL_CONF_ADDR}";
|
|
fi
|
|
|
|
|
|
|
|
exit 0;
|