目标
本文介绍如何使用项目官方源在 Debian 12 上安装 PmaControl,同时解决一个重要的实践问题:
- Debian 12 wiki 指向
install/debian12.sh - 该脚本克隆默认的
PmaControl仓库 - 如果你明确需要
commercial分支,则需要修改克隆步骤或在克隆后立即切换分支
我们的目的是保持项目的官方逻辑,同时使其在当前 Debian 12 安装中可以干净地使用。
使用的源码:
- GitHub wiki
PmaControl/PmaControl - 仓库
PmaControl/PmaControl,commercial分支 - 脚本
install/debian12.sh - 根脚本
install.sh commercial分支的文档
官方安装流程
根据 Debian 12 wiki,标准安装方式为:
apt-get install curl
curl -o install-pmacontrol https://raw.githubusercontent.com/PmaControl/PmaControl/master/install/debian12.sh
chmod +x install-pmacontrol
./install-pmacontrol
commercial 分支的 install/debian12.sh 脚本主要执行以下操作:
- 更新系统
- 安装基础工具
- 安装 MariaDB
10.11 - 安装 Apache、PHP
8.2、Composer、Graphviz 及部分依赖 - 将 PmaControl 仓库克隆到
/srv/www/pmacontrol - 以
www-data身份运行composer install - 创建本地 MySQL 账户
pmacontrol@127.0.0.1 - 生成临时
config.json - 运行
./install.sh -c /tmp/config.json - 显示生成的凭据
源码中观察到的版本和组件
commercial 分支的 Debian 12 脚本目标技术栈为:
- MariaDB
10.11 - Apache 2
- PHP
8.2 - Composer
- Graphviz
- MariaDB 的 RocksDB 插件
明确安装的 PHP 软件包:
php8.2、php8.2-mysql、php8.2-ldap、php-json、php8.2-curlphp8.2-cli、php8.2-mbstring、php8.2-intl、php8.2-fpmlibapache2-mod-php8.2、php8.2-gd、php8.2-xml、php8.2-gmp
推荐先决条件
在开始安装之前,请准备:
- 干净的 Debian 12
- root 访问权限
- 可用的 DNS 和出站网络
- 至少 4 GB 内存
- 足够的磁盘空间用于 MariaDB、
/srv/www/pmacontrol和 Composer 依赖
我还建议准备:
- 正确的主机名
- 静态 IP
- 一致的时区
- 如果机器将监控大量服务器,应为 MariaDB 提供专用存储
关于 commercial 分支的重要说明
Debian 12 wiki 非常精简。它指向 install/debian12.sh 脚本,但该脚本只是克隆主仓库,并未明确执行:
git checkout commercial
如果你的目标确实是 commercial 分支,请改为:
apt-get update
apt-get install -y curl git
cd /tmp
curl -o install-pmacontrol https://raw.githubusercontent.com/PmaControl/PmaControl/commercial/install/debian12.sh
chmod +x install-pmacontrol
然后,在 composer install 阶段之前,将克隆部分替换为:
mkdir -p /srv/www
cd /srv/www
git clone --branch commercial --single-branch https://github.com/PmaControl/PmaControl.git pmacontrol
cd /srv/www/pmacontrol
如果你确实要安装 commercial 代码,这是最干净的方法。
推荐流程
1. 准备 Debian 12
apt-get update
apt-get -y upgrade
apt-get install -y curl git sudo lsb-release unzip zip wget gnupg gnupg2 net-tools dnsutils jq bc composer cron
timedatectl set-timezone Europe/Paris
为什么要显式安装 cron:install.sh 使用 crontab。在最小化 Debian 机器上,缺少 cron 可能导致安装末尾出错。install/debian12.sh 没有明确提及此问题,但它源于 install.sh 的逻辑。
2. 安装 MariaDB 10.11
Debian 12 官方脚本配置 MariaDB 仓库,然后调用 Toolkit/install-mariadb.sh:
cd /tmp
git clone https://github.com/PmaControl/Toolkit.git
cd Toolkit
chmod +x install-mariadb.sh
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash -s -- --mariadb-server-version="mariadb-10.11"
./install-mariadb.sh -v 10.11 -p '<root_sql_password>' -d /srv/mysql -r
关键要点:
- 数据目录设置为
/srv/mysql - 脚本使用 MariaDB,而非 MySQL
- 服务随后会重启
3. 安装 Apache、PHP 8.2 和依赖
仍然根据 install/debian12.sh:
apt-get install -y \
php8.2 apache2 php8.2-mysql php8.2-ldap php-json php8.2-curl \
php8.2-cli php8.2-mbstring php8.2-intl php8.2-fpm \
libapache2-mod-php8.2 php8.2-gd php8.2-xml php8.2-gmp
apt-get install -y graphviz libcairo2 mariadb-plugin-rocksdb
然后:
mysql -e "INSTALL SONAME 'ha_rocksdb'"
a2enmod proxy_fcgi setenvif
a2enconf php8.2-fpm
a2enmod rewrite
PHP 时区设置:
sed -i 's#;date.timezone =#date.timezone = Europe/Paris#g' /etc/php/8.2/fpm/php.ini
sed -i 's#;date.timezone =#date.timezone = Europe/Paris#g' /etc/php/8.2/apache2/php.ini
sed -i 's#;date.timezone =#date.timezone = Europe/Paris#g' /etc/php/8.2/cli/php.ini
4. 为 /srv/www 配置 Apache
Debian 12 脚本将标准 Apache webroot 替换为 /srv/www:
sed -i 's#/var/www#/srv/www#g' /etc/apache2/apache2.conf
sed -i 's#/var/www/html#/srv/www#g' /etc/apache2/sites-enabled/000-default.conf
awk '/AllowOverride/ && ++i==3 {sub(/None/,"All")}1' /etc/apache2/apache2.conf > /tmp/xfgh
mv /tmp/xfgh /etc/apache2/apache2.conf
然后:
mkdir -p /srv/www
systemctl restart apache2
关键点:PmaControl 期望在 /srv/www/pmacontrol 下提供服务,项目生成的 webroot 将为 /pmacontrol/。
5. 克隆 PmaControl 的 commercial 分支
mkdir -p /srv/www
cd /srv/www
git clone --branch commercial --single-branch https://github.com/PmaControl/PmaControl.git pmacontrol
cd /srv/www/pmacontrol
chown -R www-data:www-data /srv/www/pmacontrol
chown -R www-data:www-data /var/www
sudo -u www-data composer install
为什么我推荐这个顺序:
- 它指向目标分支
- 避免默认安装仓库的其他状态
- 与
install.sh预期的流程兼容
6. 创建 PmaControl 的本地 MySQL 账户
官方脚本创建:
GRANT ALL ON *.* TO pmacontrol@'127.0.0.1' IDENTIFIED BY '<password>' WITH GRANT OPTION;
我建议同时添加 localhost,以避免因连接方式不同而产生问题:
CREATE OR REPLACE USER 'pmacontrol'@'127.0.0.1' IDENTIFIED BY '<password>';
CREATE OR REPLACE USER 'pmacontrol'@'localhost' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON *.* TO 'pmacontrol'@'127.0.0.1' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'pmacontrol'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
7. 准备 config.json 文件
install/debian12.sh 脚本生成一个临时 config.json。它的结构很重要,因为 install.sh 使用它来定义数据库、创建组织、管理员账户、webservice 账户以及配置 webroot。
可用示例:
{
"mysql": {
"ip": "127.0.0.1",
"port": 3306,
"user": "pmacontrol",
"password": "CHANGE_ME_DB_PASSWORD",
"database": "pmacontrol"
},
"organization": ["68Koncept"],
"webroot": "/pmacontrol/",
"ldap": { "enabled": false },
"user": {
"Member": null,
"Administrator": null,
"Super administrator": [{
"email": "admin@example.net",
"firstname": "Admin",
"lastname": "PmaControl",
"country": "France",
"city": "Paris",
"login": "admin",
"password": "CHANGE_ME_ADMIN_PASSWORD"
}]
},
"webservice": [{
"user": "webservice",
"host": "%",
"password": "CHANGE_ME_WEBSERVICE_PASSWORD",
"organization": "68Koncept"
}]
}
我建议不要复用某些历史脚本中注入的 ssh 块,除非你有明确需求并且使用受控密钥。
8. 运行应用程序安装
从克隆的仓库中:
cd /srv/www/pmacontrol
./install.sh -c /tmp/config.json
根据 install.sh,该命令随后执行:
- 生成
configuration/webroot.config.php - 初始化数据库
- 创建组织
- 创建超级管理员
- 如启用则集成 LDAP
- 创建 webservice 账户
- 创建 TS 表
- 更新服务器列表
- 生成模型和缓存
- 设置系统定时任务
9. 了解 install.sh 修改了什么
根脚本很重要,因为它不仅仅是"安装"。它会:
- 从
config_sample/复制文件到configuration/ - 生成
configuration/db.config.ini.php - 生成
configuration/db.config.php - 生成
configuration/webroot.config.php - 设置
tmp/和data/的权限 - 为
www-data安装 crontab - 为
root安装 crontab - 如需要则运行
composer install
添加的定时任务示例:
* * * * * cd /srv/www/pmacontrol && ./glial agent check_daemon
05 */4 * * * cd /srv/www/pmacontrol && ./glial control service
* * * * * cd /srv/www/pmacontrol/script && ./monitor_mysql.sh
10. 验证安装是否正常
服务:
systemctl is-active mariadb
systemctl is-active apache2
systemctl is-active php8.2-fpm
systemctl is-active cron
版本:
php -v
mysql -Nse "SELECT VERSION()"
apache2 -v
HTTP:
curl -I http://127.0.0.1/pmacontrol/
你应该看到一个正常响应的前端控制器,通常会重定向到:
/pmacontrol/en/server/main
预期的配置文件:
configuration/db.config.ini.phpconfiguration/db.config.phpconfiguration/webroot.config.phpconfiguration/crypt.config.phpconfiguration/auth.config.php
11. 验证数据库配置
安装控制器会在 configuration/db.config.ini.php 中写入如下文件:
[pmacontrol]
driver=mysql
hostname=127.0.0.1
user=pmacontrol
password='...'
crypted='1'
database=pmacontrol
ssl=0
这很重要:框架使用的连接名称是 pmacontrol。如果此文件为空或损坏,应用程序将无法正确启动。
12. 注意事项
1. Debian 12 wiki 有意非常简短。 它提供了入口点,而非每个组件的详细信息。你需要阅读 install/debian12.sh 和 install.sh 脚本来了解实际安装了什么。
2. wiki 快捷方式不会自动保证 commercial 分支。 如果你需要 commercial 分支,请显式克隆它。
3. cron 必须存在。 这是 install.sh 的实际需求。我认为这是一个真正的先决条件,即使 Debian 12 脚本没有明确安装它。
4. Apache 被重写为 /srv/www。 如果机器上已有现有网站,此更改可能具有侵入性。
5. SQL 账户 pmacontrol 获得 ALL PRIVILEGES。 这是脚本的行为。如果你想在之后加固它,请在安装完成后、了解应用程序的确切权限需求时再进行。
精简流程
适用于快速安装的简短版本:
apt-get update && apt-get -y upgrade
apt-get install -y curl git sudo composer cron
cd /tmp
git clone https://github.com/PmaControl/Toolkit.git
cd Toolkit
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash -s -- --mariadb-server-version="mariadb-10.11"
./install-mariadb.sh -v 10.11 -p 'RootDbStrongPassword' -d /srv/mysql -r
apt-get install -y \
apache2 php8.2 php8.2-fpm libapache2-mod-php8.2 \
php8.2-mysql php8.2-ldap php8.2-curl php8.2-cli \
php8.2-mbstring php8.2-intl php8.2-gd php8.2-xml php8.2-gmp \
graphviz libcairo2 mariadb-plugin-rocksdb
mysql -e "INSTALL SONAME 'ha_rocksdb'"
a2enmod proxy_fcgi setenvif rewrite
a2enconf php8.2-fpm
sed -i 's#/var/www#/srv/www#g' /etc/apache2/apache2.conf
sed -i 's#/var/www/html#/srv/www#g' /etc/apache2/sites-enabled/000-default.conf
mkdir -p /srv/www
systemctl restart apache2
cd /srv/www
git clone --branch commercial --single-branch https://github.com/PmaControl/PmaControl.git pmacontrol
cd /srv/www/pmacontrol
chown -R www-data:www-data /srv/www/pmacontrol
sudo -u www-data composer install
mysql <<'SQL'
CREATE OR REPLACE USER 'pmacontrol'@'127.0.0.1' IDENTIFIED BY 'ChangeMeDbPassword';
CREATE OR REPLACE USER 'pmacontrol'@'localhost' IDENTIFIED BY 'ChangeMeDbPassword';
GRANT ALL PRIVILEGES ON *.* TO 'pmacontrol'@'127.0.0.1' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'pmacontrol'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SQL
cat >/tmp/config.json <<'JSON'
{
"mysql": {
"ip": "127.0.0.1",
"port": 3306,
"user": "pmacontrol",
"password": "ChangeMeDbPassword",
"database": "pmacontrol"
},
"organization": ["68Koncept"],
"webroot": "/pmacontrol/",
"ldap": { "enabled": false },
"user": {
"Member": null,
"Administrator": null,
"Super administrator": [{
"email": "admin@example.net",
"firstname": "Admin",
"lastname": "PmaControl",
"country": "France",
"city": "Paris",
"login": "admin",
"password": "ChangeMeAdminPassword"
}]
},
"webservice": [{
"user": "webservice",
"host": "%",
"password": "ChangeMeWebservicePassword",
"organization": "68Koncept"
}]
}
JSON
./install.sh -c /tmp/config.json
结论
对于 Debian 12,如果你同时阅读 Debian 12 wiki、install/debian12.sh、install.sh 以及 commercial 分支的文档,PmaControl 的官方文档基础是充分的。
实际的安装逻辑很简单:
- MariaDB
10.11 - Apache + PHP
8.2 - PmaControl 仓库位于
/srv/www/pmacontrol composer install- 本地 SQL 账户
pmacontrol config.json./install.sh -c ...
如果目标是 commercial 分支,最重要的是显式强制克隆该分支,而不是盲目跟随 wiki 快捷方式。
评论 (0)
暂无评论。
发表评论