knowledge/install.sh

104 lines
3.4 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "WORK_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