PmaControl logo PmaControl
  • 首页
  • PmaControl
    • AI智能代理 13个本地代理
    • 定价方案 Community、Cloud、On-Premise、Premium
    • 文档 指南、API、架构
    • 客户 28+企业
    • 常见问题 25个问题 / 7个类别
    数据库
    • MariaDB 30 篇文章
    • MySQL 10 篇文章
    • Galera Cluster 6 篇文章
    • MaxScale 3 篇文章
    • ProxySQL 2 篇文章
    • Amazon Aurora MySQL 0 篇文章
    • Azure Database 0 篇文章
    • ClickHouse 0 篇文章
    • GCP CloudSQL 0 篇文章
    • Percona Server 0 篇文章
    • SingleStore 0 篇文章
    • TiDB 0 篇文章
    • Vitess 0 篇文章
    解决方案
    • 全天候支持 MariaDB & MySQL紧急支持
    • Observabilité SQL 监控、告警、拓扑
    • Haute disponibilité 复制、故障转移、Galera
    • Disaster Recovery 备份、恢复、RPO/RTO
    • Sécurité & conformité 审计、GDPR、SOC2
    • Migration & upgrade 零停机、pt-osc、gh-ost
  • 定价方案
  • 资源
    • 文档 技术指南与API
    • 常见问题 25个常见问题
    • 客户评价 客户反馈与案例
    • 博客 文章与洞察
    • 路线图 即将推出的功能
    专业领域
    • Observabilité SQL 监控、告警、Dot3拓扑
    • Haute disponibilité 复制、故障转移、Galera
    • Sécurité & conformité 审计、GDPR、SOC2、ISO 27001
    • Disaster Recovery 备份、恢复、RPO/RTO
    • Performance & optimisation Digests、EXPLAIN、调优
    • Migration & upgrade 零停机、pt-osc
    快速链接
    • GitHub Wiki 26页 — 安装、引擎、插件
    • 源代码 GitHub官方仓库
    • 全天候支持 MariaDB & MySQL紧急支持
    • 预约演示 30分钟 — 真实架构
  • 全天候支持
  • 预约演示
预约演示
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文
← 返回博客

在 Debian 12 上安装 PmaControl

发布于 2026年4月12日 作者 Aurélien LEQUOY
pmacontrol debian installation mariadb apache php
分享 X LinkedIn Facebook Email PDF
在 Debian 12 上安装 PmaControl

目标

本文介绍如何使用项目官方源在 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 脚本主要执行以下操作:

  1. 更新系统
  2. 安装基础工具
  3. 安装 MariaDB 10.11
  4. 安装 Apache、PHP 8.2、Composer、Graphviz 及部分依赖
  5. 将 PmaControl 仓库克隆到 /srv/www/pmacontrol
  6. 以 www-data 身份运行 composer install
  7. 创建本地 MySQL 账户 pmacontrol@127.0.0.1
  8. 生成临时 config.json
  9. 运行 ./install.sh -c /tmp/config.json
  10. 显示生成的凭据

源码中观察到的版本和组件

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-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

推荐先决条件

在开始安装之前,请准备:

  • 干净的 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,该命令随后执行:

  1. 生成 configuration/webroot.config.php
  2. 初始化数据库
  3. 创建组织
  4. 创建超级管理员
  5. 如启用则集成 LDAP
  6. 创建 webservice 账户
  7. 创建 TS 表
  8. 更新服务器列表
  9. 生成模型和缓存
  10. 设置系统定时任务

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.php
  • configuration/db.config.php
  • configuration/webroot.config.php
  • configuration/crypt.config.php
  • configuration/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 的官方文档基础是充分的。

实际的安装逻辑很简单:

  1. MariaDB 10.11
  2. Apache + PHP 8.2
  3. PmaControl 仓库位于 /srv/www/pmacontrol
  4. composer install
  5. 本地 SQL 账户 pmacontrol
  6. config.json
  7. ./install.sh -c ...

如果目标是 commercial 分支,最重要的是显式强制克隆该分支,而不是盲目跟随 wiki 快捷方式。

参考文档

  • Wiki — Debian 12 全新安装
  • Wiki — 安装
  • Commercial 仓库 — install/debian12.sh
  • Commercial 仓库 — install.sh
分享 X LinkedIn Facebook Email PDF
← 返回博客

评论 (0)

暂无评论。

发表评论

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
法律声明 GitHub 联系我们
不要等到故障发生才了解您的架构。 © 2014-2026 PmaControl — 68Koncept