增强部署脚本依赖检查
This commit is contained in:
+35
-1
@@ -8,6 +8,7 @@ BLUE='\033[0;34m'
|
|||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
|
||||||
PROJECT_ROOT="/www/wwwroot/chat.ay.lc" # <--- 确认这里的路径是否正确
|
PROJECT_ROOT="/www/wwwroot/chat.ay.lc" # <--- 确认这里的路径是否正确
|
||||||
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
|
||||||
echo -e "${BLUE}========================================${NC}"
|
echo -e "${BLUE}========================================${NC}"
|
||||||
echo -e "${BLUE} 🚀 Laravel 稳健更新脚本 (带严格检查) ${NC}"
|
echo -e "${BLUE} 🚀 Laravel 稳健更新脚本 (带严格检查) ${NC}"
|
||||||
@@ -56,6 +57,16 @@ fi
|
|||||||
composer dump-autoload --no-dev --optimize --classmap-authoritative --no-interaction
|
composer dump-autoload --no-dev --optimize --classmap-authoritative --no-interaction
|
||||||
if [ $? -ne 0 ]; then echo -e "${RED}❌ Composer autoload 重建失败${NC}"; exit 1; fi
|
if [ $? -ne 0 ]; then echo -e "${RED}❌ Composer autoload 重建失败${NC}"; exit 1; fi
|
||||||
|
|
||||||
|
# 用当前 PHP 直接加载 Laravel autoload,提前暴露 vendor 缺文件 / 权限 / autoload 缓存问题
|
||||||
|
php -d opcache.enable_cli=0 -r "require __DIR__.'/vendor/autoload.php'; echo 'Composer autoload OK'.PHP_EOL;"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${RED}========================================${NC}"
|
||||||
|
echo -e "${RED} ❌ 致命错误:PHP 无法加载 vendor/autoload.php! ${NC}"
|
||||||
|
echo -e "${RED} 请检查 vendor 是否完整、文件权限是否正确、Composer 是否使用了正确 PHP 版本。 ${NC}"
|
||||||
|
echo -e "${RED}========================================${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# 3. 前端构建
|
# 3. 前端构建
|
||||||
echo -e "${YELLOW}[3/7] 前端构建 (npm run build)...${NC}"
|
echo -e "${YELLOW}[3/7] 前端构建 (npm run build)...${NC}"
|
||||||
npm run build
|
npm run build
|
||||||
@@ -76,8 +87,31 @@ php artisan optimize:clear && php artisan optimize && php artisan view:cache
|
|||||||
echo -e "${YELLOW}[6/8] 重启 Horizon...${NC}"
|
echo -e "${YELLOW}[6/8] 重启 Horizon...${NC}"
|
||||||
php artisan horizon:terminate
|
php artisan horizon:terminate
|
||||||
|
|
||||||
|
# 7. 重载 PHP-FPM / opcache,避免 Web 进程继续使用旧的 autoload 缓存
|
||||||
|
echo -e "${YELLOW}[7/8] 重载 PHP-FPM...${NC}"
|
||||||
|
PHP_FPM_RELOADED=0
|
||||||
|
if command -v systemctl >/dev/null 2>&1; then
|
||||||
|
for svc in php-fpm php-fpm-84 php-fpm-83 php-fpm-82 php84-php-fpm php83-php-fpm php82-php-fpm; do
|
||||||
|
if systemctl list-unit-files "$svc.service" >/dev/null 2>&1; then
|
||||||
|
systemctl reload "$svc" >/dev/null 2>&1 || systemctl restart "$svc" >/dev/null 2>&1 || true
|
||||||
|
PHP_FPM_RELOADED=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
for init_script in /etc/init.d/php-fpm /etc/init.d/php-fpm-*; do
|
||||||
|
if [ -x "$init_script" ]; then
|
||||||
|
"$init_script" reload >/dev/null 2>&1 || "$init_script" restart >/dev/null 2>&1 || true
|
||||||
|
PHP_FPM_RELOADED=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$PHP_FPM_RELOADED" -eq 1 ]; then
|
||||||
|
echo -e "${GREEN}✅ PHP-FPM 已尝试重载。${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠️ 未识别到 PHP-FPM 服务,请在面板中手动重启当前站点使用的 PHP。${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
# 6. 权限 (针对宝塔或Nginx+FPM环境的修正)
|
# 6. 权限 (针对宝塔或Nginx+FPM环境的修正)
|
||||||
echo -e "${YELLOW}[7/7] 修复权限...${NC}"
|
echo -e "${YELLOW}[8/8] 修复权限...${NC}"
|
||||||
# 将所有文件所属权变更为 Web 运行用户(如 www),防止 root 权限导致框架日志或缓存写入失败
|
# 将所有文件所属权变更为 Web 运行用户(如 www),防止 root 权限导致框架日志或缓存写入失败
|
||||||
chown -R www:www .
|
chown -R www:www .
|
||||||
# 默认读写执行权限
|
# 默认读写执行权限
|
||||||
|
|||||||
Reference in New Issue
Block a user