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