Admidio 5.0.17 常用运维命令详解
Admidio 5.0.17 常用运维命令详解:基于 Ubuntu 22.04.5 LTS 实测,覆盖服务管理、健康检查、数据库与 adm_my_files 备份恢复、日志分析、会话清理、版本升级流程与重装排障,附真实回显。
Admidio 5.0.17 常用运维命令详解
本文是 admidio 专栏的运维篇。全部命令均于 2026-10-28 在 Ubuntu 22.04.5 LTS + Admidio 5.0.17(Nginx 1.18.0 + PHP 8.2.35 + MariaDB 10.6.23)环境实测执行,输出为真实回显;标注「命令 + 预期结果」的小节为无法跨版本实测、按官方流程推演的验证步骤。环境搭建见《Admidio 5.0.17 LEMP 安装部署指南》,参数含义见《Admidio 5.0.17 配置参数详解》。
一、服务管理与健康检查
1.1 服务启停与重载
Admidio 本身无守护进程,运维对象是 Nginx、PHP-FPM 8.2 与 MariaDB 三件。实测重载命令与回显:
$ sudo systemctl reload nginx
$ sudo systemctl reload php8.2-fpm
$ sudo systemctl restart mariadb
无 systemd 的精简环境中可用 service 等价命令,实测回显:
$ service php8.2-fpm reload
* Reloading PHP 8.2 FastCGI Process Manager php-fpm8.2
...done.
$ service nginx reload
* Reloading nginx configuration nginx
...done.
实测进程与监听核对:
$ pgrep -c php-fpm8.2
3
$ ss -ltn | grep -E ':(80|3306)\s'
0.0.0.0:80
127.0.0.1:3306
[::]:80
要点:MariaDB 默认只监听本机回环(127.0.0.1:3306),与 config.php 的 localhost 一致;若数据库在另一台机器,需同步改监听地址与防火墙。
1.2 健康检查三板斧
实测可在监控脚本中直接使用的三条命令:
$ curl -s -o /dev/null -w '%{http_code} %{time_total}s\n' http://localhost/
303 0.007453s
| 检查 | 命令 | 健康标准 |
|---|---|---|
| Web 入口 | curl -s -o /dev/null -w '%{http_code}' http://localhost/ | 303(未登录跳转)或 200 |
| PHP 执行 | 上一条的时间字段 | 通常毫秒级;秒级暴涨先查 FPM |
| 数据层 | sudo mysql admidio -e 'SELECT 1;' | 返回 1 即库通 |
二、备份与恢复
2.1 数据库备份
Admidio 的全部业务数据(成员、偏好、会话)都在库中,实测热备命令:
$ mysqldump --single-transaction --routines admidio | gzip > /tmp/admidio_db_$(date +%Y%m%d).sql.gz
$ ls -la /tmp/admidio_db_*.sql.gz
-rw-r--r-- 1 root root 18197 Oct 28 03:09 /tmp/admidio_db_20261028.sql.gz
说明:--single-transaction 对 InnoDB 做一致性快照不锁表;空库压缩后约 18 KB,数据量随成员数与偏好增长,协会规模通常仍在数十 MB 量级。
2.2 adm_my_files 备份
配置、日志与模板都在 adm_my_files,实测打包:
$ cd /var/www/admidio && tar czf /tmp/admidio_myfiles_$(date +%Y%m%d).tar.gz adm_my_files
$ ls -la /tmp/admidio_myfiles_*.tar.gz
-rw-r--r-- 1 root root 28730 Oct 28 03:09 /tmp/admidio_myfiles_20261028.tar.gz
完整备份 = 数据库转储 + adm_my_files 打包,二者缺一不可:丢了数据库丢成员数据,丢了 adm_my_files 丢 config.php(含数据库口令)与定制模板。
2.3 定时备份脚本
可直接放入 /etc/cron.daily/admidio-backup 的实测组合(命令 + 预期结果:每日生成两份带日期的归档到备份目录,日志写入 backup.log):
#!/bin/bash
set -e
TS=$(date +%Y%m%d)
BAK=/var/backups/admidio
mkdir -p $BAK
mysqldump --single-transaction --routines admidio | gzip > $BAK/admidio_db_$TS.sql.gz
tar czf $BAK/admidio_myfiles_$TS.tar.gz -C /var/www/admidio adm_my_files
find $BAK -name 'admidio_*' -mtime +14 -delete
建议 chmod 700 并确认备份目录不在 Web 根下,避免归档被公网直接下载。
2.4 恢复演练
命令 + 预期结果(本节为标准恢复路径,按实测备份产物推演验证):
# 1. 恢复数据库
gunzip -c admidio_db_20261028.sql.gz | mysql admidio
# 2. 恢复运行目录
tar xzf admidio_myfiles_20261028.tar.gz -C /var/www/admidio/
# 3. 修正属主
chown -R www-data:www-data /var/www/admidio/adm_my_files
# 4. 验证
curl -s -o /dev/null -w '%{http_code}\n' http://localhost/ # 预期 303
三、日志分析与清理
3.1 日志位置与格式
应用日志按日滚动在 adm_my_files/logs/admidio-YYYY-MM-DD.log,实测样例行(安装期间的正常告警):
[2026-10-28 04:03:42.498154] Admidio.WARNING: PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'admidio.adm_organizations' doesn't exist {"file":"/var/www/admidio/src/Infrastructure/Database.php","line":877,...}
Monolog 格式:时间戳 + 级别(DEBUG/INFO/WARNING/ERROR)+ 消息 + 上下文。快速筛查:
$ grep -c 'WARNING\|ERROR' adm_my_files/logs/admidio-2026-10-28.log
1
注意时间戳时区:未配置 php.ini date.timezone 时日志为 UTC(实测 04:03 UTC 对应北京 12:03),处置见 C1 篇 4.1 节。
3.2 会话与自动登录清理
会话存库(adm_sessions),实测查看:
$ sudo mysql admidio -e 'SELECT COUNT(*) FROM adm_sessions;'
COUNT(*)
7
会话由系统按偏好 logout_minutes(默认 20 分钟)过期;异常膨胀时可直接清理过期记录(命令 + 预期结果:删除会话后活跃用户需重新登录):
sudo mysql admidio -e "DELETE FROM adm_sessions WHERE ses_timestamp < NOW() - INTERVAL 1 DAY;"
四、版本升级
4.1 升级前检查
$ sudo mysql admidio -e 'SELECT com_name, com_version FROM adm_components WHERE com_type="SYSTEM";'
com_name com_version
Admidio Core 5.0.17
该查询返回当前版本,用于升级前后比对。升级前完成 2.1/2.2 节完整备份。
4.2 官方升级流程(跨版本)
官方 README 定义的升级三步法(命令 + 预期结果,按 v5.0.17 源码内官方说明与 update.php 实测入口推演):
- 删除旧版除
adm_my_files、adm_plugins外的全部文件与目录; - 解压新版本归档,复制除
adm_my_files以外的所有内容到站点目录(adm_plugins用新版覆盖); - 重建依赖:
cd /var/www/admidio && sudo composer install --no-interaction --no-dev; - 浏览器访问首页,系统检测到版本差自动跳转
install/update.php更新向导(实测该入口 HTTP 200 可达),按界面提示完成数据库结构升级; - 复查版本号与首页可用性:
$ sudo mysql admidio -e 'SELECT com_version FROM adm_components WHERE com_type="SYSTEM";'
$ curl -s -o /dev/null -w '%{http_code}\n' http://localhost/ # 预期 303
跨大版本升级(如 4.x → 5.x)必须先升 PHP 到 8.2+ 再动程序,顺序颠倒会在更新向导触发 B1 篇故障一的同款版本报错。
4.3 升级回退
命令 + 预期结果:以 2.3 节备份为基线,删程序目录(保留备份中的 adm_my_files)、回滚数据库(gunzip -c <旧备份> | mysql admidio)后恢复旧版文件即回到升级前状态;演练升级建议先在测试机完整走一遍。
五、重装与数据迁移
5.1 全新重装
实测重装清理路径(危险操作,先备份):
# 1. 清库
sudo mysql -e 'DROP DATABASE admidio;'
# 2. 重新建库建账号(见 B1 篇 3.1 节)
# 3. 清配置与表
sudo rm /var/www/admidio/adm_my_files/config.php
sudo rm -rf /var/www/admidio/vendor && sudo composer install --no-interaction --no-dev
# 4. 浏览器访问首页自动重新进入安装向导
清掉 config.php 后首页恢复 303 → install/index.php,与全新部署一致。
5.2 迁移到新服务器
命令 + 预期结果:新机按 B1 篇完成 LEMP 与源码部署 → 恢复数据库与 adm_my_files → 修改 config.php 中 $g_root_path 为新地址 → chown -R www-data:www-data adm_my_files → 首页返回 303 且登录正常即迁移完成。
六、日常巡检清单
| 频率 | 项目 | 命令/位置 | 健康标准 |
|---|---|---|---|
| 每日 | 备份产物 | ls /var/backups/admidio | 当日两份归档存在 |
| 每日 | 错误日志 | grep ERROR adm_my_files/logs/*.log | 无新增 ERROR |
| 每周 | 磁盘占用 | du -sh /var/www/admidio/adm_my_files/temp | temp 无异常膨胀 |
| 每周 | 会话表 | SELECT COUNT(*) FROM adm_sessions; | 与活跃用户量级匹配 |
| 每月 | 版本与安全更新 | GitHub Releases 页 | 核对是否需要跟进补丁版 |
至此 admidio 专栏四篇完结:从选型判断(《Admidio 5.0.17 介绍与选型指南》)到部署、配置与日常运维形成闭环。运维层遇到安装向导类问题可回查 B1 篇排障实录,偏好项疑问回查 C1 篇。