注:如下带有符号‘【】’位置,均为需要替换的路径或者ip端口等信息地址,请做替换。
一、Django + Celery + Redis + Uwsgi Shell脚本启动
1、流程式启动
#!/bin/bash
redis_host="【redis_host】"
redis_port="r【edis_port】"
redis_auth="r【edis_auth】"
django_host="【django_host】"
django_port="d【jango_port】"
# Start
function start()
{
# start celery workers
celery multi start w1 -A follow_up_visit --loglevel=INFO -Q queue_task_assignment --logfile=log/celerylog/w1%I.log --pidfile=log/celerylog/w1%I.pid -c 1
celery multi start w2 -A follow_up_visit --loglevel=INFO -Q task_status_update --logfile=log/celerylog/w2%I.log --pidfile=log/celerylog/w2%I.pid -c 1
celery multi start w3 -A follow_up_visit --loglevel=INFO -Q task_call --logfile=log/celerylog/w3%I.log --pidfile=log/celerylog/w3%I.pid -c 1
celery multi start w4 -A follow_up_visit --loglevel=INFO -Q task_timing --logfile=log/celerylog/w4%I.log --pidfile=log/celerylog/w4%I.pid -c 1
echo "Celery 启动成功"
# start django project
# nohup python manage.py runserver 0.0.0.0:${django_port} > manage.out 2>&1 &
uwsgi uwsgi.ini
echo "Django 启动成功"
curl_result=`curl "http://${django_host}:${django_port}/start_updateStatus/"`
while [ "${curl_result}x" != "successx" ]
do
curl_result=`curl "http://${django_host}:${django_port}/start_updateStatus/"`
echo "GET request: ${curl_result}"
done
}
function end()
{
# close celery
ps auxww | grep 'celery' | awk '{print $2}' | xargs kill -9
celery multi stop w1
celery multi stop w2
celery multi stop w3
celery multi stop w4
# clear redis
echo "flushall" | redis-cli -h ${redis_host} -p ${redis_port} -a ${redis_auth}
# kill django project
# ps auxww | grep 'manage.py' | awk '{print $2}' | xargs kill -9
# kill uwsgi
uwsgi --stop uwsgi.pid
}
if [ $1 == 'start' ]
then
start
fi
if [ $1 == 'end' ]
then
end
fi
if [ $1 == 'restart' ]
then
end
start
fi
echo "$1 Success!"
# 记得使用前需要运行 sed -i 's/\r$//' database_backup.sh
# 启动服务 sh startup.sh start
# 停止服务 sh startup.sh end
# 重启服务 sh startup.sh restart
# 启动不成功原因
# 1、curl请求不成功 查看settings.py/BROKER_URL中redis配置
# 2、while [ "${curl_result}x" != "successx" ]死循环,查看urls路径是否打开
二、Mysql 数据库 Shell脚本备份
1、数据库按照日期备份,并根据保留天数删除过期备份文件。
#!/bin/bash
dbpwd="123456"
dbuser="root"
hosts=(【数据库访问ip】 )
port=3306
DATE=`date "+%Y-%m-%d"`
save_sql_file=`date "+%H-%M-%S"`
save_sql_name=$save_sql_file".sql"
BACKUP_PATH=/home/db_bachup/
LOG=$BACKUP_PATH/$DATE/$save_sql_file"backup.log"
echo ${LOG}
keep_backup_days=1
# if BACKUP_PATH doesn't exists,mkdir
[ -d $BACKUP_PATH ] || mkdir -p $BACKUP_PATH/$DATE
if [ !-d$BACKUP_PATH/$DATE ];then
mkdir -p $BACKUP_PATH/$DATE
fi
for host in ${hosts[*]}
do
alldb=(`echo show databases|mysql -u$dbuser -p$dbpwd -h$host -P$port --default-character-set=utf8mb4 |grep -v "information_schema\|mysql\|performance_schema\|sys\|Database"`)
echo -e "=================== $host $DATE `date +%T` DUMP Begin ==============" >>$LOG
/usr/local/mysql/bin/mysqldump -u$dbuser -p$dbpwd -h$host -P$port --default-character-set=utf8mb4 --single-transaction --master-data=2 --triggers --routines --events --complete-insert --set-gtid-purged=OFF --databases ${alldb[*]} >$BACKUP_PATH/$DATE/$save_sql_name 2>>$LOG
echo -e "=================== $host $DATE `date +%T` DUMP End ================ " >>$LOG
if [ $? -eq 0 ];then
echo "$(date +%F%T) $host backup is Success and End" >> success.txt
find $BACKUP_PATH -mtime +$keep_backup_days -type d -exec rm -rf {} \;
fi
done
# mysqldump -uroot -p密码 -hIP -P端口 --default-character-set=utf8mb4 --single-transaction --master-data=2 --triggers --routines --events --complete-insert --set-gtid-purged=OFF --databases f数据库名 >> 111.sql