Skip to content

Instantly share code, notes, and snippets.

@edtoken
Created November 2, 2015 15:31
Show Gist options
  • Save edtoken/559851e11388fbf85a2b to your computer and use it in GitHub Desktop.
Save edtoken/559851e11388fbf85a2b to your computer and use it in GitHub Desktop.
#!/bin/bash
NGINX_CONFIGS_DIR=/etc/nginx/sites-available/
NGINX_CONFIGS=/etc/nginx/sites-available/*
NGINX_CONFIGS_ENABLED_DIR=/etc/nginx/sites-enabled/
NGINX_CONFIGS_ENABLED=/etc/nginx/sites-enabled/*
if [ -d "$NGINX_CONFIGS_ENABLED" ]; then
rm -r $NGINX_CONFIGS_ENABLED;
fi
DOMAIN_ONK="5t"
DOMAIN_5T="5t"
# JOBS_DIR=/var/lib/jenkins/jobs/
# JOBS=/var/lib/jenkins/jobs/*
JOBS_DIR=/home/ed/workspace/
JOBS=/home/ed/workspace/*
TEMPLATE="./virtualhost-template"
BASE_CONFIGS=./devConfigs/
array=([1]="admin" [2]="crm" [3]="frontend" [4]="office" [5]="partner")
customFrontendServers=([1]="5t" [2]="onk")
if [ ! -d "$JOBS_DIR" ]; then
echo "JOBS_DIR not found" >&2
exit 2
fi
if [ ! -f "$TEMPLATE" ]; then
echo "TEMPLATE not found" >&2
exit 2
fi
rm -R $NGINX_CONFIGS
rm -R $NGINX_CONFIGS_ENABLED
for p in $JOBS
do
PROJECT_NAME=$(basename $p)
PROJECT_PATH=$p
CONFIG_DIR="$PROJECT_PATH/workspace/config/server/dev/"
RUNTIME_DIR="$PROJECT_PATH/workspace/runtime/"
LOGS_DIR="$PROJECT_PATH/workspace/runtime/logs"
LOGS_ACCESS="$PROJECT_PATH/workspace/runtime/logs/access.log"
LOGS_ERRORS="$PROJECT_PATH/workspace/runtime/logs/errors.log"
if [ ! -d "$CONFIG_DIR" ]; then
mkdir $CONFIG_DIR
fi
if [ ! -d "$RUNTIME_DIR" ]; then
mkdir $RUNTIME_DIR
fi
if [ ! -d "$LOGS_DIR" ]; then
mkdir $LOGS_DIR
fi
if [ ! -f "$LOGS_ACCESS" ]; then
touch $LOGS_ACCESS
fi
if [ ! -f "$LOGS_ERRORS" ]; then
touch $LOGS_ERRORS
fi
for i in "${array[@]}";
do
SERVER=$i
SERNER_DOMAIN_NAME=${i::1}
CUSTOM_NAME="frontend";
CUSTOM_NAME_K="office";
SERVER_PATH="$RUNTIME_DIR$SERVER"
DOMAIN_NAME="$SERNER_DOMAIN_NAME.$PROJECT_NAME.$DOMAIN_5T"
CONFIG_AVIABLE="$NGINX_CONFIGS_DIR$DOMAIN_NAME"
CONFIG_ENABLED="$NGINX_CONFIGS_ENABLED_DIR$DOMAIN_NAME"
ASSETS_PATH="$PROJECT_PATH/workspace/web/$SERVER/assets/"
ONK="onk.$PROJECT_NAME.$DOMAIN_ONK"
CACHE_PREFIX="'$SERVER.$PROJECT_NAME'"
# создаю конфиги
CONFIGS_PATH="$BASE_CONFIGS$PROJECT_NAME"
if [ ! -d "$CONFIGS_PATH" ]; then
CONFIGS_PATH="$BASE_CONFIGS/default"
fi
REAL_CONFIGS_PATH="$CONFIGS_PATH/*"
for c in $REAL_CONFIGS_PATH
do
CONFIG_NAME=$(basename $c)
WEB_CONFIG="$CONFIG_DIR$CONFIG_NAME.php"
WEB_CONFIG_TPL="$REAL_CONFIGS_PATH$CONFIG_NAME"
rm $WEB_CONFIG
## если конфиг не создан - создаю
#if [ ! -f "$WEB_CONFIG" ] ; then
sed -e "s/{ONK}/$ONK/g" -e "s/{CACHE_PREFIX}/$CACHE_PREFIX/g" $WEB_CONFIG_TPL > "$WEB_CONFIG"
chmod 777 $WEB_CONFIG
#fi
# if [ ! -f "$WEB_CONFIG" ]; then
# fi
done
if [ ! -d "$SERVER_PATH" ]; then
mkdir $SERVER_PATH
chmod 777 $SERVER_PATH
fi
if [ ! -d "$ASSETS_PATH" ]; then
mkdir $ASSETS_PATH
chmod 777 $ASSETS_PATH
fi
if [[ $SERVER == "$CUSTOM_NAME" ]]; then
for s in $in "${customFrontendServers[@]}";
do
SERVER_DOMAIN_NAME_CUSTOM=$s
DOMAIN_NAME_CUSTOM="$SERVER_DOMAIN_NAME_CUSTOM.$PROJECT_NAME.$DOMAIN_5T"
CONFIG_AVIABLE_CUSTOM="$NGINX_CONFIGS_DIR$DOMAIN_NAME_CUSTOM"
CONFIG_ENABLED_CUSTOM="$NGINX_CONFIGS_ENABLED_DIR$DOMAIN_NAME_CUSTOM"
rm $CONFIG_AVIABLE_CUSTOM
rm $CONFIG_ENABLED_CUSTOM
sed -e "s/{SERVER}/$SERVER/g" -e "s/{DOMAIN_NAME}/$DOMAIN_NAME_CUSTOM/g" -e "s/{PROJECT_NAME}/$PROJECT_NAME/g" $TEMPLATE > "$CONFIG_AVIABLE_CUSTOM"
chmod +x $CONFIG_AVIABLE_CUSTOM
ln -s $CONFIG_AVIABLE_CUSTOM $CONFIG_ENABLED_CUSTOM
done
elif [[ $SERVER == "$CUSTOM_NAME_K" ]]; then
SERVER_DOMAIN_NAME_CUSTOM_K="k"
DOMAIN_NAME_CUSTOM_K="$SERVER_DOMAIN_NAME_CUSTOM_K.$PROJECT_NAME.$DOMAIN_5T"
CONFIG_AVIABLE_CUSTOM_K="$NGINX_CONFIGS_DIR$DOMAIN_NAME_CUSTOM_K"
CONFIG_ENABLED_CUSTOM_K="$NGINX_CONFIGS_ENABLED_DIR$DOMAIN_NAME_CUSTOM_K"
rm $CONFIG_AVIABLE_CUSTOM_K
rm $CONFIG_ENABLED_CUSTOM_K
sed -e "s/{SERVER}/$SERVER/g" -e "s/{DOMAIN_NAME}/$DOMAIN_NAME_CUSTOM_K/g" -e "s/{PROJECT_NAME}/$PROJECT_NAME/g" $TEMPLATE > "$CONFIG_AVIABLE_CUSTOM_K"
chmod +x $CONFIG_AVIABLE_CUSTOM_K
ln -s $CONFIG_AVIABLE_CUSTOM_K $CONFIG_ENABLED_CUSTOM_K
else
rm $CONFIG_ENABLED
rm $CONFIG_AVIABLE
sed -e "s/{SERVER}/$SERVER/g" -e "s/{DOMAIN_NAME}/$DOMAIN_NAME/g" -e "s/{PROJECT_NAME}/$PROJECT_NAME/g" $TEMPLATE > "$CONFIG_AVIABLE"
chmod +x $CONFIG_AVIABLE
ln -s $CONFIG_AVIABLE $CONFIG_ENABLED
fi
done
chown -R jenkins:jenkins $PROJECT_PATH
done
service nginx restart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment