101 lines
2.7 KiB
Bash
101 lines
2.7 KiB
Bash
#!/bin/bash
|
||
###
|
||
# @Author: lucan
|
||
# @Date: 2026-08-08 21:59:00
|
||
# @LastEditors: lucan
|
||
# @LastEditTime: 2026-08-08 22:59:39
|
||
# @FilePath: \MES\deploy.sh
|
||
# @Description:
|
||
# @Copyright: Copyright (c) {year} lucan. All rights reserved.
|
||
###
|
||
# 部署脚本
|
||
# 路径: /www/wwwroot/mes2/deploy.sh
|
||
|
||
# 配置项
|
||
SOURCE_DIR="/www/wwwroot/mes2"
|
||
PUBLIC_DIR="/www/wwwroot/mes2/public"
|
||
LOG_FILE="/www/wwwroot/mes2/deploy.log"
|
||
|
||
# 记录日志函数
|
||
log_message() {
|
||
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||
echo "[$timestamp] $1" >> "$LOG_FILE"
|
||
}
|
||
|
||
# 解决 Git 2.35.2+ 的「dubious ownership」拦截:把本仓库加入安全目录白名单
|
||
# (Webhook 进程用户与仓库所有者不一致时会 fatal 报错,加这一行即可)
|
||
git config --global --add safe.directory "$SOURCE_DIR" 2>/dev/null || true
|
||
|
||
# 主逻辑
|
||
log_message "开始部署..."
|
||
|
||
# 进入源码目录
|
||
cd "$SOURCE_DIR" || {
|
||
log_message "错误: 无法进入源码目录 $SOURCE_DIR"
|
||
exit 1
|
||
}
|
||
|
||
# 拉取最新代码
|
||
log_message "拉取最新代码..."
|
||
git -c safe.directory="$SOURCE_DIR" pull origin main
|
||
if [ $? -eq 0 ]; then
|
||
log_message "代码拉取成功"
|
||
else
|
||
log_message "错误: 代码拉取失败"
|
||
exit 1
|
||
fi
|
||
|
||
# 清除并重建配置缓存:改了 config/* 后必须执行,否则 Laravel 仍读旧缓存,修改不生效
|
||
# 注意:若以 root 执行,生成的 bootstrap/cache/config.php 归 root 所有;
|
||
# 若 PHP-FPM 以 www 运行,请确保该文件对 www 可读(或部署后统一 chown -R www:www)
|
||
log_message "重建配置缓存..."
|
||
php artisan config:clear
|
||
php artisan config:cache
|
||
if [ $? -eq 0 ]; then
|
||
log_message "配置缓存已重建"
|
||
else
|
||
log_message "警告: 配置缓存重建失败(请检查 php 是否在 PATH 中,或 config 含闭包无法缓存)"
|
||
fi
|
||
# 安装依赖(如果需要)
|
||
# log_message("安装依赖...")
|
||
# npm install
|
||
# if [ $? -eq 0 ]; then
|
||
# log_message("依赖安装成功")
|
||
# else
|
||
# log_message("错误: 依赖安装失败")
|
||
# exit 1
|
||
# fi
|
||
|
||
# 构建项目(如果需要)
|
||
# log_message("构建项目...")
|
||
# npm run build
|
||
# if [ $? -eq 0 ]; then
|
||
# log_message("项目构建成功")
|
||
# else
|
||
# log_message("错误: 项目构建失败")
|
||
# exit 1
|
||
# fi
|
||
|
||
# 复制到运行目录(如果需要)
|
||
# log_message("复制到运行目录...")
|
||
# cp -r dist/* "$PUBLIC_DIR"/
|
||
# if [ $? -eq 0 ]; then
|
||
# log_message("文件复制成功")
|
||
# else
|
||
# log_message("错误: 文件复制失败")
|
||
# exit 1
|
||
# fi
|
||
|
||
# 重启服务(如果需要)
|
||
# log_message("重启服务...")
|
||
# systemctl restart nginx
|
||
# if [ $? -eq 0 ]; then
|
||
# log_message("服务重启成功")
|
||
# else
|
||
# log_message("错误: 服务重启失败")
|
||
# exit 1
|
||
# fi
|
||
|
||
log_message "部署完成!"
|
||
exit 0
|