定时重启维护脚本自动更新站点程序

很多站点程序(如 WordPress、Typecho、自建 CMS)都需要定期更新来修复漏洞或获得新功能,但每次都手动登录后台点更新非常麻烦。
如果能写一个自动更新脚本,配合定时重启任务,就能实现无人值守的日常维护。
本文从零开始,带你走通整个流程。

理解你的站点结构

先确认你的站点程序安装在哪个目录,更新方式是什么。
常见两种情况:

  • 程序自带命令行更新工具(如 WordPress 的 wp-cli)
  • 程序通过 Git 拉取最新代码,然后执行迁移或编译

如果你用的是宝塔面板,路径通常在 /www/wwwroot/你的域名。
如果你用裸机 LAMP 或 LNMP,位置可能是 /var/www/html 或其他自定义路径。

准备环境:确认 cron 和脚本权限

所有 Linux 服务器默认都带有 cron 定时任务服务。
检查它是否在运行:

systemctl status crond

如果没启动,执行:

systemctl start crond
systemctl enable crond

同时确认你能用 sh 命令执行脚本。
一般不需要额外安装组件。

编写自动更新与重启脚本

假设你的站点位于 /var/www/mysite,并且支持通过 git pull 更新代码,然后需要重启 Nginx 或 Apache 来加载新文件。
创建一个脚本文件:

#!/bin/bash
# 自动更新站点程序并重启服务

SITE_DIR="/var/www/mysite"
LOG_FILE="/var/log/auto_update.log"

echo "$(date) 开始自动更新" >> $LOG_FILE

# 进入站点目录
cd $SITE_DIR

# 拉取最新代码
git pull origin main >> $LOG_FILE 2>&1

# 如果站点需要 composer 或 npm 构建,可在这里加入
# composer install --no-dev
# npm run build

# 重启 Web 服务(以 Nginx 为例)
systemctl restart nginx

echo "$(date) 更新完成,服务已重启" >> $LOG_FILE

如果你用的站点程序自带更新命令,例如 WordPress 的 wp-cli:

wp core update
wp plugin update --all

注意将脚本赋予执行权限:

chmod +x /usr/local/bin/auto_site_update.sh

设置定时任务实现自动触发

用 crontab -e 编辑当前用户的定时任务。
为避免权限问题,建议用 root 用户执行。
添加一行:

# 每天凌晨 3 点执行一次
0 3 * * * /usr/local/bin/auto_site_update.sh

保存后,可以用 crontab -l 确认任务已生效。
如果你的程序要求更新时网站暂停访问,可以写成:先进入维护模式、更新、退出维护模式。
这里不再展开。

避坑指南:容易踩的 4 个坑

  1. 路径不对:脚本里的绝对路径一定要和实际站点位置一致,否则 git pull 会失败。
  2. 权限不足:cron 默认以当前用户身份运行,可能没写权限。建议用 root 的 crontab,或给站点目录设置合适权限。
  3. 忽略依赖安装:如果你的程序更新后需要执行 composer install 或 npm install,一定要在脚本里显式写上。
  4. 冲突合并:如果站点的代码有本地修改,git pull 会提示冲突导致中断。建议同时执行 git stash 或定时使用 git fetch --all && git reset --hard origin/main。

验证自动更新是否正常

设置完成后,第二天检查日志文件:

cat /var/log/auto_update.log

同时手动查看站点是否能正常访问,以及程序版本是否已更新。
你也可以立即运行一次脚本测试:

bash /usr/local/bin/auto_site_update.sh

观察有无报错。
如果一切正常,你的站点就会每天凌晨自动完成更新并重启服务了。

高频问题解答

Q:站点更新后是否需要重启 Nginx 或 Apache?
A:如果仅更新 PHP 文件,通常不需要重启,但为了保险(比如更新了配置或 opcache 缓存),建议重启。如果更新包含 .htaccess 或静态文件,重启更稳。

Q:我用的是宝塔面板,怎么设置?
A:宝塔面板的“计划任务”功能就是 cron 的图形版。添加一个 Shell 脚本类型的任务,粘贴上面脚本内容,设置时间,保存即可。

Q:不想用 git,还能自动更新吗?
A:可以。如果你的程序支持下载压缩包解压,用 wget 和 unzip 命令也能实现。但维护起来不如 git 方便。

Q:脚本里如何判断更新成功?
A:通过 $? 检查上一条命令执行状态,在日志里记录成功或失败。例如:if [ $? -eq 0 ]; then echo "success"; else echo "failed"; fi。

如果你在配置中遇到脚本执行无反馈的情况,可以先从手动执行开始排除。
建议先在测试环境跑一遍,再布到生产站点。

分享到:
上一篇
用Podman替代Docker轻量化部署AI中转站
下一篇
数据库误删数据从定时备份紧急恢复教程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意