104 lines
3.4 KiB
Bash
104 lines
3.4 KiB
Bash
#!/bin/bash
|
||
|
||
# 获取当前脚本所在目录路径
|
||
work_dir=$(dirname $(readlink -f "$0"))
|
||
|
||
# 字义install.log文件路径
|
||
log_file="$work_dir/install.log"
|
||
|
||
# 定义deploy目录路径
|
||
deploy_dir="$work_dir/deploy"
|
||
|
||
# 定时清理脚本
|
||
cleaner_script="auto_cleaner.sh"
|
||
|
||
# 编译脚本
|
||
build_script="auto_build.sh"
|
||
|
||
# 定时任务命令
|
||
cron_command="sh $work_dir/$cleaner_script $work_dir/"
|
||
|
||
# 检查install.lock文件是否存在
|
||
if [ -f "$work_dir/install.lock" ]; then
|
||
install_time=$(cat "$work_dir/install.lock")
|
||
echo "项目已在$install_time完成安装,如需重新安装,可以手动删除install.lock文件后再尝试执行安装脚本"
|
||
exit 1
|
||
fi
|
||
|
||
# 创建install.lock文件
|
||
current_time=$(date +"%Y-%m-%d %H:%M:%S")
|
||
echo "$current_time" >"$work_dir/install.lock"
|
||
|
||
# 检查.env文件是否存在
|
||
env_file="$deploy_dir/.env"
|
||
if [ -f "$env_file" ]; then
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] .env文件已存在,跳过创建" >>"$log_file"
|
||
else
|
||
# 创建.env文件
|
||
branch=$(git branch --show-current)
|
||
git_url=$(git remote -v | grep fetch | awk '{print $2}')
|
||
echo "WORD_DIR = \"$work_dir\"" >"$env_file"
|
||
echo "BRANCH = \"$branch\"" >>"$env_file"
|
||
echo "GIT_URL = \"$git_url\"" >>"$env_file"
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] .env文件创建成功" >>"$log_file"
|
||
fi
|
||
|
||
# 进入deploy目录
|
||
cd "$deploy_dir"
|
||
|
||
start_script="start.php"
|
||
# 先尝试停止一次应用
|
||
php "$start_script" stop
|
||
stop_result=$?
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 先尝试执行php $start_script stop,结果:$stop_result" | tee -a "$log_file"
|
||
|
||
# 执行composer install
|
||
yes | composer install
|
||
install_result=$?
|
||
if [ $install_result -ne 0 ]; then
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] PHP环境可能异常,自动拉新功能很可能不会生效" | tee -a "$log_file"
|
||
fi
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 执行composer install,结果:$install_result" | tee -a "$log_file"
|
||
|
||
# 启动应用
|
||
if [ -f "$start_script" ]; then
|
||
php "$start_script" start -d
|
||
start_result=$?
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 执行php $start_script start -d,结果:$start_result" | tee -a "$log_file"
|
||
if [ $start_result -ne 0 ]; then
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] PHP环境可能异常,自动拉新功能不会生效" | tee -a "$log_file"
|
||
else
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] deploy服务启动成功" | tee -a "$log_file"
|
||
fi
|
||
else
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] start.php文件不存在,代码不完整,自动拉新功能不会生效" | tee -a "$log_file"
|
||
fi
|
||
|
||
# 退出deploy目录
|
||
cd ..
|
||
|
||
# 检查auto_cleaner.sh文件和定时任务
|
||
auto_cleaner_script="$work_dir/auto_cleaner.sh"
|
||
if [ ! -f "$auto_cleaner_script" ]; then
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 未找到$auto_cleaner_script文件,跳过" | tee -a "$log_file"
|
||
else
|
||
existing_cron=$(crontab -l | grep -F "$cron_command")
|
||
if [ -n "$existing_cron" ]; then
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] auto_cleaner.sh任务已存在,跳过" | tee -a "$log_file"
|
||
else
|
||
(
|
||
crontab -l 2>/dev/null
|
||
echo "*/10 * * * * $cron_command"
|
||
) | crontab -
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] auto_cleaner.sh任务安装成功" | tee -a "$log_file"
|
||
fi
|
||
fi
|
||
|
||
# 执行编译脚本
|
||
sh $build_script
|
||
|
||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 安装完毕,在$log_file中可以查看完整的安装日志" | tee -a "$log_file"
|
||
|
||
# 退出
|
||
exit 0
|