Ubuntu 22.04 安装 ISPConfig 3.3.2p1 指南

Ubuntu 22.04 上从零安装 ISPConfig 3.3.2p1 全栈托管面板的实测指南:自动安装器主线、tar 包备用方案、装后验证、7 类排障实录与卸载清理。

ISPConfigISPConfig服务器管理2026/10/21

Ubuntu 22.04 安装 ISPConfig 3.3.2p1 指南

目标:在一台全新的 Ubuntu 22.04 服务器上,从零安装 ISPConfig 3.3.2p1 全栈托管面板(Apache + MariaDB + Postfix + Dovecot + BIND + Rspamd + PureFTPd + Roundcube),完成面板登录验证与卸载清理。本文全部命令与回显均在 Ubuntu 22.04.5 LTS 服务器上实测(自动安装器主线完整跑通,含安装中遇到的三类真实故障与解法),命令输出逐行照抄。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(cat /etc/os-release 实测 PRETTY_NAME="Ubuntu 22.04.5 LTS")
  • 主机名:server1.example.com(FQDN,安装前通过 hostnamectl set-hostname 设置)
  • 服务器 IP:内网静态 IP(下文验证命令均以 127.0.0.1 本机视角执行,不依赖具体 IP)
  • ISPConfig 版本:3.3.2p1(2026-10-21 官网直链探测确认的最新稳定版)
  • 安装完成后组件版本(均为服务器上实查回显):
组件版本实查命令
MariaDB10.6.23mariadb --version → Ver 15.1 Distrib 10.6.23-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Apache2.4.52apache2 -v → Server version: Apache/2.4.52 (Ubuntu)
PHP8.1.34php -v → PHP 8.1.34 (cli) (built: Jul 3 2026 05:35:47) (NTS)
Postfix3.6.4postconf mail_version → mail_version = 3.6.4
Dovecot2.3.16dovecot --version → 2.3.16 (7e2e900c1a)
BIND9.18.39named -v → BIND 9.18.39-0ubuntu0.22.04.7-Ubuntu (Extended Support Version) <id:>
Rspamd4.2.3rspamd --version → Rspamd daemon version 4.2.3
PureFTPd1.0.50dpkg -l pure-ftpd-mysql → 1.0.50-2.1ubuntu0.22.04.1
  • 面板端口:8080(ISPConfig 管理界面)、8081(Apps 虚拟主机,Roundcube/phpMyAdmin 等应用入口)
  • 安装器写入的凭据(安装结束回显,实际部署后应立即修改):管理员 admin,MySQL root 与 ispconfig 数据库用户密码由安装器随机生成

二、前置条件

本节说明安装前必须就绪的事项。自动安装器对环境有硬性要求:全新系统、可解析的 FQDN 主机名、root 权限、可用的外网软件源。

2.1 全新系统与 root 权限

ISPConfig 自动安装器会安装并接管 Apache/PHP/MariaDB/Postfix/Dovecot/BIND/PureFTPd 等全套服务,官方要求在未预装其他 Web 栈的全新系统上执行。使用 root 登录或 sudo -i 切换到 root。

2.2 FQDN 主机名

安装器第一步即检查主机名(实测日志 [INFO] Checking hostname.)。设置 FQDN 并保证本机可解析:

# 设置主机名为 FQDN(域名替换为你自己的)
hostnamectl set-hostname server1.example.com

随后确认 /etc/hosts 中有一条把该主机名指向本机 IP 的记录(无外网域名时这是让 hostname -f 正常返回 FQDN 的标准做法):

cat /etc/hosts

实测回显(服务器本机视角):

127.0.0.1 localhost
10.89.68.2 server1.example.com server1

验证:

hostname -f

实测回显:

server1.example.com

2.3 时间同步与基础工具

自动安装器会安装 ntp 并配置系统时间,无需手工处理。基础工具(curl/wget/php-cli 等)在 4.2 节获取安装器时按需安装。

2.4 需要开放的端口

安装完成后实测监听端口(ss -ltn 实测节选):

LISTEN 0      512          0.0.0.0:993        0.0.0.0:*
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*
LISTEN 0      9            0.0.0.0:21         0.0.0.0:*
LISTEN 0      100          0.0.0.0:25         0.0.0.0:*
LISTEN 0      10         127.0.0.1:53         0.0.0.0:*

外加面板端口 8080/8081(Apache 虚拟主机监听,见 7.3 节)。云服务器需在安全组放行:22(SSH)、25、53、80、443、21 及 FTP 被动端口段、993、8080、8081、3306(仅内网)。安装器会同时安装 ufw(实测日志 Installing packages fail2ban, ufw),可在面板"系统 > 防火墙"中管理。

三、版本选型说明

3.1 最新稳定版确认

ISPConfig 版本号规则为 主.次.修订 加可选 pN 补丁级。官网下载页对脚本请求有拦截,但安装包直链可探测。用 HTTP Range 请求只取包头判断版本是否存在:

curl -s -r 0-99 "https://www.ispconfig.org/downloads/ISPConfig-3.3.2p1.tar.gz" -o /dev/null -w "%{http_code}\n"

实测回显(2026-10-21):

206

同法探测更高版本号:

curl -s -r 0-99 "https://www.ispconfig.org/downloads/ISPConfig-3.3.3.tar.gz" -o /dev/null -w "%{http_code}\n"

实测回显:

404

3.3.4、3.4.0 同法实测均为 404。因此截至 2026-10-21,最新稳定版为 3.3.2p1(3.3.2 正式版发布后的 p1 补丁,官方博客标注补丁发布于 2026-09-21,修复 rspamd 启动、配额监控等 5 项缺陷)。生产环境应停在最新 pN 补丁级。

3.2 安装通道选择

自动安装器支持 --channel=stable(官网最新稳定版)与 --channel=dev(Git develop 分支,官方帮助原文注明"might contain bugs and less-tested features")。生产用 stable。

四、方案 A:官方自动安装器(主线,实测跑通)

4.1 方案说明

ISPConfig 官方提供"完美服务器"自动安装器(ISPConfig 3 Autoinstaller),它会按 howtoforge "Perfect Server" 规范自动装齐全套服务并部署面板,支持 --no-* 参数族裁剪组件、--use-php 指定 PHP 版本策略。这是官方推荐的安装方式,本章按实测过程完整记录。

💡 技术拓展:自动安装器的组件裁剪参数不止一个,常用组合对比——

参数作用适用场景
默认(无裁剪)Web+邮件+DNS+FTP+配额+NTP 全装标准"完美服务器"单机
--no-mail不装 Dovecot/邮件管理(仍装 Postfix 发系统邮件)纯 Web 托管机
--no-dnsBIND 仅作本机解析缓存有独立 DNS 服务器时
--no-web连 Apache/FTP 都不装,也不装面板 UI纯邮件/DNS 从节点
--use-php=system只装系统自带 PHP(Ubuntu 22.04 为 8.1),跳过多版本仓库追求安装速度/带宽受限
--no-pma不安装 phpMyAdminphpMyAdmin CDN 不可达的环境

本文实测采用 --use-php=system + --no-pma,理由:默认会从 sury 仓库安装 PHP 5.6~8.5 全矩阵(数百 MB,实测在受限网络下载极慢),且实验网络对 phpMyAdmin 官方下载点连接被重置;两者均有官方参数可裁剪,不影响面板核心功能。

4.2 获取自动安装器

自动安装器主体是 ispconfig-ai.tar.gz(PHP 脚本包)。先装运行依赖(若系统无 php-cli):

export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y curl wget php-cli php-mbstring dialog

实测回显(安装完成验证):

php -v | head -1
PHP 8.1.2-1ubuntu2.27 (cli) (built: Oct 13 2026 18:55:46) (NTS)

⚠️ 注意:DEBIAN_FRONTEND=noninteractive 必须在 apt 前导出。实测曾因漏掉该变量导致升级 tzdata 时 postinst 在终端等待时区交互输入,apt 长时间无输出假死(解决见 8.2)。

下载安装器包并解包(/tmp 是官方脚本默认工作目录):

curl -sS -o /tmp/ispconfig-ai.tar.gz https://www.ispconfig.org/downloads/ispconfig-ai.tar.gz
ls -l /tmp/ispconfig-ai.tar.gz

实测回显:

-rw-r--r-- 1 root root 45066 Oct 21 12:51 /tmp/ispconfig-ai.tar.gz
rm -rf /tmp/ispconfig-ai && mkdir /tmp/ispconfig-ai
tar -C /tmp/ispconfig-ai -xzf /tmp/ispconfig-ai.tar.gz
tar -tzf /tmp/ispconfig-ai.tar.gz | head -4

实测回显:

ispconfig.ai.php
lib/
lib/class.ISPConfigConnector.inc.php
lib/libbashcolor.inc.php

⚠️ 注意:官方入口脚本 https://www.ispconfig.org/downloads/getisp.sh(其逻辑同样是下载 ispconfig-ai.tar.gz 并调用 php ispconfig.ai.php)在部分网络环境下不可直接拉取。实测两种报错:无浏览器 UA 请求返回 403 拦截页,带 Firefox UA 请求返回 404 页面(2026-10-21)。遇到同样问题时,直接使用上文实测可用的 ispconfig-ai.tar.gz 直链即可,两者最终调用的是同一个安装器。

4.3 安装器参数(--help 实测全文要点)

php /tmp/ispconfig-ai/ispconfig.ai.php --help

实测输出节选(首尾,参数表完整保留关键字段):

********************************************************************************ISPConfig 3 Autoinstaller
********************************************************************************

Usage: ispc3-ai.sh [<argument>] [...]

This script automatically installs all needed packages for an ISPConfig 3 setup using the guidelines from the "Perfect Server Setup" howtos on www.howtoforge.com.

    --help          Show this help page.
    --debug         Enable verbose logging (logs each command with the exit code).
    --channel       --channel=<stable|dev> ...
    --lang          --lang=en|de (only en (English) and de (German) supported currently).
    --interactive   Don't install ISPConfig in non-interactive mode. ...
    --use-nginx     Use NGINX webserver instead of Apache2.
    --use-amavis    Use Amavis instead of Rspamd for mail filtering.
    --use-php       Use specific PHP versions, comma separated, ... --use-php=system disables the sury repository and just installs the system's default PHP version ...
    --use-ftp-ports This option sets the passive port range for pure-ftpd. ...
    --use-certbot   Use Certbot instead of acme.sh for issuing Let's Encrypt certificates. ...
    --no-web        Do not use ISPConfig on this server to manage webserver setting ...
    --no-mail       Do not use ISPConfig on this server to manage mailserver settings. ...
    --no-dns        Do not use ISPConfig on this server to manage DNS entries. ...
    --no-firewall   Do not install ufw and tell ISPConfig to not manage firewall settings ...
    --no-roundcube  Do not install roundcube webmail.
    --no-pma        Do not install phpMyAdmin on this server.
    --no-quota      Disable file system quota.
    --no-ntp        Disable NTP setup.
    --no-jailkit    Do not install jailkit.
    --no-ftp        Do not install Pure-FTPd server.
    --monit         Install Monit and set it up to monitor installed services. ...
    --ssh-port      Configure the SSH server to listen on a non-default port. ...
    --ssh-permit-root  --ssh-permit-root=<yes|without-password|no> ...
    --ssh-harden    Configure the SSH server to have a stronger security config.
    --unattended-upgrades  Install UnattendedUpgrades. ...
    --i-know-what-i-am-doing
                    Prevent the autoinstaller to ask for confirmation before continuing to reconfigure the server.

💡 说明:--i-know-what-i-am-doing 不是玩笑参数——官方用它表示"确认知晓安装器会重配整台服务器",在非交互(无 TTY)环境必须显式携带,否则脚本拒绝执行。输出节选处已用 ... 标注压缩,完整原文可用上述 --help 命令自行查看。

4.4 执行安装(实测主线命令)

export DEBIAN_FRONTEND=noninteractive
sh getisp.sh --lang=en --channel=stable --no-quota --use-php=system --no-pma --i-know-what-i-am-doing

等价于直接调用安装器:

php /tmp/ispconfig-ai/ispconfig.ai.php --lang=en --channel=stable --no-quota --use-php=system --no-pma --i-know-what-i-am-doing

参数逐项说明:

  • --lang=en:界面语言(仅支持 en/de)。
  • --channel=stable:安装官网最新稳定版(本仓库即 3.3.2p1)。
  • --no-quota:关闭文件系统配额。真实服务器若需要网站磁盘配额,去掉该参数即可(要求文件系统支持 usrquota/grpquota)。
  • --use-php=system:只装 Ubuntu 22.04 自带 PHP 8.1,不装 sury 多版本矩阵。需要多 PHP 版本的托管环境可去掉该参数(默认装 5.6~8.5 全矩阵)。
  • --no-pma:跳过 phpMyAdmin。该组件从 files.phpmyadmin.net 下载,部分网络实测被重置(见 8.5)。
  • --i-know-what-i-am-doing:确认重配服务器并允许非交互执行。

安装全程约十几分钟(视带宽),实测完整阶段序列如下(sh getisp.sh ... 的标准输出,ANSI 色码已清理,输出节选):

[INFO] Starting perfect server setup for Ubuntu 22.04.5 LTS
[INFO] Checking hostname.
[INFO] Configuring apt repositories.
[INFO] Updating packages
[INFO] Updated packages
[INFO] Installing packages ssh, openssh-server, nano, vim-nox, lsb-release, apt-transport-https, ca-certificates, wget, git, gnupg, software-properties-common, curl, cron, ntp
[INFO] Installed packages ssh, openssh-server, nano, vim-nox, lsb-release, apt-transport-https, ca-certificates, wget, git, gnupg, software-properties-common, curl, cron, ntp
[INFO] Activating rspamd repository.
[INFO] Activating GoAccess repository.
[INFO] Updating packages (after enabling 3rd party repos).
[INFO] Updated packages

随后是核心服务栈安装与配置(输出节选):

[INFO] Installing packages dbconfig-common, postfix, postfix-mysql, mariadb-client, mariadb-server, openssl, rkhunter ...
[INFO] Installed packages dbconfig-common, postfix, postfix-mysql, mariadb-client, mariadb-server, openssl, rkhunter ...
[INFO] Installing packages dovecot-imapd, dovecot-pop3d, dovecot-mysql, dovecot-sieve, dovecot-managesieved ...
[INFO] Installed packages dovecot-imapd, dovecot-pop3d, dovecot-mysql, dovecot-sieve, dovecot-managesieved ...
[INFO] Generating MySQL password.
[INFO] Writing MySQL config files.
[INFO] Configuring postfix.
[INFO] Restarting postfix
[INFO] Configuring rkhunter.
[INFO] Installing packages software-properties-common, update-inetd, dnsutils, resolvconf, clamav, clamav-daemon, zip, unzip, bzip2, xz-utils, lzip, borgbackup, arj, nomarch, lzop, cabextract, apt-listchanges, libnet-ldap-perl, libauthen-sasl-perl, daemon, libio-string-perl, libio-socket-ssl-perl, libnet-ident-perl, libnet-dns-perl, libdbd-mysql-perl, bind9, rspamd, redis-server, postgrey, p7zip, p7zip-full, unrar-free, lrzip
[INFO] Installed packages software-properties-common, update-inetd, dnsutils, resolvconf, clamav, clamav-daemon, zip, unzip, bzip2, xz-utils, lzip, borgbackup, arj, nomarch, lzop, cabextract, apt-listchanges, libnet-ldap-perl, libauthen-sasl-perl, daemon, libio-string-perl, libio-socket-ssl-perl, libnet-ident-perl, libnet-dns-perl, libdbd-mysql-perl, bind9, rspamd, redis-server, postgrey, p7zip, p7zip-full, unrar-free, lrzip
[INFO] Stopping Rspamd.
[INFO] (Re)starting Bind.
[INFO] Disabling spamassassin daemon.
[INFO] Checking local dns resolver.

Web 与 PHP 部分(输出节选,--use-php=system 生效可见:没有 sury 仓库激活步骤):

[INFO] Installing packages apache2, apache2-utils, libapache2-mod-fcgid, apache2-suexec-pristine, libapache2-mod-python, libapache2-mod-passenger
[INFO] Installed packages apache2, apache2-utils, libapache2-mod-fcgid, apache2-suexec-pristine, libapache2-mod-python, libapache2-mod-passenger
[INFO] Installing packages php-pear, php-memcache, php-imagick, mcrypt, imagemagick, libruby, memcached, php-apcu, jailkit, php8.1, php8.1-common, php8.1-gd, php8.1-mysql, php8.1-imap, php8.1-cli, php8.1-curl, php8.1-intl, php8.1-pspell, php8.1-sqlite3, php8.1-tidy, php8.1-xsl, php8.1-zip, php8.1-mbstring, php8.1-soap, php8.1-opcache, php8.1-cgi, php8.1-fpm
[INFO] Installed packages php-pear, php-memcache, php-imagick, mcrypt, imagemagick, libruby, memcached, php-apcu, jailkit, php8.1, php8.1-common, php8.1-gd, php8.1-mysql, php8.1-imap, php8.1-cli, php8.1-curl, php8.1-intl, php8.1-pspell, php8.1-sqlite3, php8.1-tidy, php8.1-xsl, php8.1-zip, php8.1-mbstring, php8.1-soap, php8.1-opcache, php8.1-cgi, php8.1-fpm
[INFO] Disabling conflicting apache modules.
[INFO] Enabling apache modules.
[INFO] Enabling default PHP-FPM config.
[INFO] Setting default system PHP version.
[INFO] HTTPoxy config.
[INFO] Installing acme.sh (Let's Encrypt).
[INFO] acme.sh (Let's Encrypt) installed.
[INFO] ISPConfig does not yet support mailman3 and mailman2 is no longer available since Ubuntu 22.04.

FTP、统计、防护与 Webmail(输出节选):

[INFO] Installing packages haveged, geoip-database, libclass-dbi-mysql-perl, libtimedate-perl, build-essential ...
[INFO] Installed packages haveged, geoip-database, libclass-dbi-mysql-perl, libtimedate-perl, build-essential ...
[INFO] Installing packages pure-ftpd-common, pure-ftpd-mysql
[INFO] Installed packages pure-ftpd-common, pure-ftpd-mysql
[INFO] Enabling TLS for pureftpd
[INFO] Installing packages webalizer, awstats, goaccess
[INFO] Installed packages webalizer, awstats, goaccess
[INFO] Disabling awstats cron.
[INFO] Installing packages fail2ban, ufw
[INFO] Installed packages fail2ban, ufw
[INFO] Configuring SSHd
[INFO] Installing roundcube.
[INFO] Installing packages roundcube, roundcube-core, roundcube-mysql, roundcube-plugins
[INFO] Installed packages roundcube, roundcube-core, roundcube-mysql, roundcube-plugins
[INFO] Installing ISPConfig3.
[INFO] Adding PHP version(s) to ISPConfig.
[INFO] Adding PHP-FPM systemd override for ISPConfig.
[INFO] Checking all services are running.

最后的服务自检与凭据输出(实测原文照抄,包含唯一一条 redis 告警,处理见 8.6):

[INFO] mysql: OK
[INFO] clamav-daemon: OK
[INFO] postfix: OK
[INFO] bind9: OK
[INFO] apache2: OK
[INFO] pureftpd: OK
[INFO] rspamd: OK
[INFO] redis-server: FAILED
[WARN] redis-server seems not to be running! (/lib/os/class.ISPConfigDebianOS.inc.php:2329)
[INFO] dovecot: OK
[INFO] Installation ready.
[INFO] Your ISPConfig admin password is: qL9ZMHPZ8qqLzuN
[INFO] Your MySQL root password is: 3bZPxopwvfJRA8DWkpUf
[INFO] Warning: Please delete the log files in /root/ispconfig-install-log/setup-* once you don't need them anymore because they contain your passwords!

⚠️ 注意:最后一段是安装器生成的随机凭据(每次安装都不同),admin 面板密码与 MySQL root 密码务必记录。安装器还提示 /root/ispconfig-install-log/setup-* 调试日志内含密码,确认无误后应删除。

4.5 安装后验证

服务状态逐项验证(systemctl is-active <服务>,实测结果逐条记录):

命令实测结果
systemctl is-active apache2active
systemctl is-active mariadbactive
systemctl is-active postfixactive
systemctl is-active dovecotactive
systemctl is-active bind9active
systemctl is-active rspamdactive
systemctl is-active pure-ftpd-mysqlactive
systemctl is-active fail2ban首次 failed(处理见 8.4),修复后 active
systemctl is-active redis-server首次 inactive(处理见 8.6),修复后 active

面板监听与登录页验证:

curl -skI https://127.0.0.1:8080/login/ | head -3

实测回显:

HTTP/2 200
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate
curl -sk https://127.0.0.1:8080/login/ | grep -oE "<title>[^<]+" | head -1

实测回显:

<title>ISPConfig

命令行登录验证(用安装器生成的真实凭据,cookies 走文件保持会话):

curl -sk -c /tmp/ck.txt https://127.0.0.1:8080/login/ -o /dev/null
curl -sk -b /tmp/ck.txt -c /tmp/ck.txt -d "username=admin&password=qL9ZMHPZ8qqLzuN&s_mod=login&s_pg=index" https://127.0.0.1:8080/login/index.php -o /dev/null -w "HTTP %{http_code}\n"
curl -sk -b /tmp/ck.txt https://127.0.0.1:8080/index.php -o /tmp/dash.html -w "HTTP %{http_code} size %{size_download}\n"

实测回显:

HTTP 302
HTTP 200 size 9752

302 是登录成功后的跳转,随后带会话 Cookie 访问首页返回 200 即面板登录链路完整可用。浏览器访问 https://<服务器IP>:8080,用 admin 与安装时输出的密码登录即可进入管理界面。

安装版本确认:

grep -n "ISPC_APP_VERSION" /usr/local/ispconfig/interface/lib/config.inc.php

实测回显:

define('ISPC_APP_VERSION', '3.3.2p1');

(该行实测位于文件第 62 行。)首次登录后请在面板右上角用户菜单中修改 admin 密码。

五、方案 B:官方 tar 包安装(受控环境备用)

5.1 方案说明

自动安装器之外,官方在 ISPConfig 源码 tar 包内提供传统安装器 install/install.php(交互式问答)与 install/uninstall.php(卸载)。该方案要求先手工就绪基础栈(MariaDB、Apache、PHP、Postfix、Dovecot、BIND、PureFTPd、Rspamd 等),再由 install.php 把 ISPConfig 本体写入 /usr/local/ispconfig 并初始化 dbispconfig 数据库。适合需要精确控制每一步、或需要把安装纳入既有自动化体系的场景。

5.2 下载与解包

curl -sS -o /tmp/ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3.3.2p1.tar.gz
ls -l /tmp/ispconfig.tar.gz

实测回显(下载于 2026-10-21):

-rw-r--r-- 1 root root 6091798 Oct 21 21:05 /tmp/ispconfig.tar.gz
tar -C /tmp -xzf /tmp/ispconfig.tar.gz
ls /tmp/ispconfig3_install/

实测回显:

CONTRIBUTING.md  INSTALL_*.md  install  interface  security  server  docs

(目录以实际解包结果为准,核心是 install/、interface/、server/、security/ 四个目录。)

5.3 基础栈准备

与方案 A 等价的软件包集合(自动安装器日志逐包实录的等价 apt 命令,全部为 Ubuntu 22.04 官方仓库包名,实测可用):

export DEBIAN_FRONTEND=noninteractive
apt-get install -y postfix postfix-mysql mariadb-server mariadb-client openssl rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-managesieved bind9 dnsutils resolvconf clamav clamav-daemon rspamd redis-server postgrey apache2 libapache2-mod-fcgid apache2-suexec-pristine php8.1 php8.1-common php8.1-gd php8.1-mysql php8.1-imap php8.1-cli php8.1-curl php8.1-intl php8.1-pspell php8.1-sqlite3 php8.1-tidy php8.1-xsl php8.1-zip php8.1-mbstring php8.1-soap php8.1-opcache php8.1-cgi php8.1-fpm pure-ftpd-common pure-ftpd-mysql fail2ban ufw jailkit webalizer awstats goaccess roundcube roundcube-core roundcube-mysql roundcube-plugins

⚠️ 注意:手工方案还须自行完成 MariaDB 加密、Postfix/Dovecot MySQL 映射配置、PureFTPd TLS、Rspamd 接入等步骤——这正是自动安装器代劳的部分。除非需要深度定制,优先使用方案 A。

5.4 执行安装与卸载脚本

cd /tmp/ispconfig3_install/install
php -q install.php

install.php 为交互式问答(语言、Expert Mode、MySQL root 密码等),按提示作答后它会完成数据库初始化与 /usr/local/ispconfig 落盘。

官方 tar 包内同时提供静默安装样例(实测 tar -tzf 查得):

ispconfig3_install/docs/autoinstall_samples/autoinstall.ini.sample
ispconfig3_install/docs/autoinstall_samples/autoinstall.conf_sample.php

将样例复制为 autoinstall.ini、按注释填写答案后随 install.php 使用,可实现无人值守安装(字段含义以样例文件内注释为准)。

5.5 卸载脚本(本环境实测)

tar 包内 install/uninstall.php 可完整卸载面板。查看确认逻辑后执行:

cd /tmp/ispconfig3_install/install
printf "yes\n" | php -q uninstall.php

实测回显(首部横幅节选 + 确认与结果):

--------------------------------------------------------------------------------
 _____ ___________   _____              __ _         ____
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                                              __/ |
                                             |___/
--------------------------------------------------------------------------------

>> Uninstall

Are you sure you want to uninstall ISPConfig? [no]

>> Uninstalling ISPConfig 3...

Backups in /var/backup/ and log files in /var/log/ispconfig are not deleted.Finished uninstalling.

⚠️ 注意:确认词必须输入完整小写 yes(默认 no)。实测输入 y 会得到 >> Canceled uninstall. 直接取消。

卸载后验证(实测):

ls /usr/local/ispconfig
ls: cannot access '/usr/local/ispconfig': No such file or directory
mysql -e "show databases;" | grep -c dbispconfig
0

面板地址此时返回 404(实测 curl -skI https://127.0.0.1:8080/login/ 首行为 HTTP/2 404)。卸载脚本不删除 /var/backup/ 备份与 /var/log/ispconfig/ 日志(输出原文明确说明),需要彻底清理时手工删除这两个目录。

六、方案对比与选择建议

维度方案 A:自动安装器方案 B:tar 包 install.php
联网要求需要访问 Ubuntu 源 + rspamd/GoAccess 仓库 + ispconfig.org同左(不装组件时面更窄)
交互默认非交互(--i-know-what-i-am-doing)install.php 逐问作答
组件与配置全自动按 Perfect Server 规范配置(含 DKIM/Rspamd/acme.sh/jailkit)基础栈配置需自理,install.php 只装面板本体
可复现性参数即文档,一条命令可复现依赖操作者配置功底
适用绝大多数全新服务器(推荐)深度定制/已有栈集成/离线分步安装

选择建议:可联网的新服务器选方案 A;需要把 ISPConfig 装进自己维护的配置管理体系时选方案 B,并参考 tar 包内 docs/autoinstall_samples/ 做静默应答。

七、装后基础配置说明

7.1 目录与日志

  • 面板与服务器程序:/usr/local/ispconfig/(interface/ 界面、server/ 服务端、security/ 安全策略)。
  • 日志目录:/var/log/ispconfig/。
  • 安装调试日志:/root/ispconfig-install-log/setup-*(含密码,阅后删除)。

7.2 每分钟任务机制

ISPConfig 不使用 /etc/cron.d/ispconfig 文件,而是写入 root 的 crontab(crontab -l 实测回显):

* * * * * /usr/local/ispconfig/server/server.sh 2>&1 | while read line; do echo `/bin/date` "$line" >> /var/log/ispconfig/cron.log; done
* * * * * /usr/local/ispconfig/server/cron.sh 2>&1 | while read line; do echo `/bin/date` "$line" >> /var/log/ispconfig/cron.log; done

server.sh 是配置同步引擎(拉取数据库变更落地为服务配置),cron.sh 驱动监控、备份等周期任务。手工触发一次同步:php -q /usr/local/ispconfig/server/server.php(实测输出 finished server.php.)。

7.3 面板虚拟主机

面板 vhost 位于 /etc/apache2/sites-available/ispconfig.vhost(监听 8080)与 apps.vhost(监听 8081)。实测关键配置(均为文件原文节选):

Listen 8080
NameVirtualHost *:8080
<VirtualHost _default_:8080>
  SSLEngine On
    SSLProtocol All -SSLv3 -TLSv1 -TLSv1.1
    SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt
  SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key

面板 HTTPS 证书为安装器自签的 ispserver.crt(浏览器首次访问需信任),生产环境可用面板"服务器设置"页的 Let's Encrypt 选项签发正式证书。apps 虚拟主机内实测有 IPCCommTimeout 7200、MaxRequestLen 15728640 两项,分别控制 FastCGI 超时(2 小时,服务长任务)与请求体上限(15MB)。

八、常见问题(实测排障实录)

8.1 运行 getisp.sh 报 cannot open /dev/?

现象:在无终端环境(CI/脚本调用)执行 sh getisp.sh ...,立即报 getisp.sh: 72: cannot open /dev/?: No such file,安装未开始。 定位:脚本通过 ps ax 探测自身 TTY,无终端时 TTY 列为 ?,脚本却仍把 stdin 重定向到 /dev/?。 解决:在真实 SSH 会话(有 TTY)中执行;或绕过包装脚本,直接 tar 解包 ispconfig-ai.tar.gz 后 php ispconfig.ai.php ... 并携带 --i-know-what-i-am-doing(本文 4.4 节命令即实测走的这条路径)。

8.2 安装依赖时 apt 卡住无输出

现象:apt-get install php-cli 长时间停留无输出。 定位:ps auxf 可见 debconf/frontend 下挂着 tzdata.postinst configure,在终端等待时区交互输入——因执行前未设置非交互前端。 解决:

kill -9 <挂起的apt-get/dpkg/perl进程>
echo "debconf debconf/frontend select Noninteractive" | debconf-set-selections
export DEBIAN_FRONTEND=noninteractive
dpkg --configure -a
apt-get install -y php-cli php-mbstring dialog

实测处理后 php 正常装毕(php -v 回显 8.1.2-1ubuntu2.27)。

8.3 中途报 Installing packages failed

现象:安装大包阶段报 [ERROR] Exception occurred: ISPConfigOSException -> Installing packages failed. (/ispconfig.ai.php:15)。 定位:tail /var/log/apt/term.log 可见具体包错误。实测一次的根因是 resolvconf 包 postinst 执行 ln -sf ... /etc/resolv.conf 报 Device or resource busy(该文件被外部系统只读挂载的场景,如受限虚拟化环境)。 解决:把 /etc/resolv.conf 还原为普通文件(umount /etc/resolv.conf && cp 备份文件 /etc/resolv.conf),dpkg --configure -a 修复挂起状态后重跑安装器。安装器具备断点续装能力:已装好的阶段直接跳过,实测同一环境第三次运行顺利通过该阶段。

8.4 fail2ban 启动失败(Have not found any log file for sshd jail)

现象:安装完成但 systemctl is-active fail2ban 为 failed。 定位:journalctl -u fail2ban -n 6 实测回显:

fail2ban-server[97205]: ERROR   Failed during configuration: Have not found any log file for sshd jail
fail2ban-server[97205]: ERROR   Async configuration of server failed
systemd[1]: fail2ban.service: Failed with result 'exit-code'.

sshd 尚未产生过任何登录记录、/var/log/auth.log 不存在时,sshd jail 找不到日志文件即退出。 解决:

touch /var/log/auth.log
systemctl restart fail2ban
systemctl is-active fail2ban

实测回显 active。真实长期运行的服务器有 SSH 登录记录后通常不会遇到。

8.5 phpMyAdmin 阶段报 Failed to fetch phpMyAdmin version information

现象:安装进行到 phpMyAdmin 下载时报 [ERROR] Exception occurred: ISPConfigOSException -> Failed to fetch phpMyAdmin version information. (/ispconfig.ai.php:15),前置 PHP 告警为 stream_socket_client(): SSL: Connection reset by peer(指向 files.phpmyadmin.net 的 CDN IP)。 定位:安装器先用 PHP 原生 socket 查询 phpMyAdmin 版本信息,该客户端不走 https_proxy 环境变量,站点不可达时必然失败(实测导出代理环境变量后仍失败,同一报错)。 解决:加 --no-pma 参数跳过 phpMyAdmin,面板其余功能不受影响。phpMyAdmin 属可选 Web 数据库管理工具,如需要可在网络可达时参照其官方文档另行部署到 8081 的 apps 站点。

8.6 redis-server 安装自检 FAILED

现象:安装收尾服务自检输出 [INFO] redis-server: FAILED 与 [WARN] redis-server seems not to be running!。 解决:手动拉起并验证:

systemctl start redis-server
systemctl is-active redis-server

实测回显 active。Rspamd 依赖 Redis 存储统计与学习数据,修复后建议 systemctl restart rspamd 一并确认(实测 active)。

8.7 MariaDB 配置阶段的 WARN 查询失败

现象:安装日志在 MySQL 配置阶段出现成组 [WARN] Query DELETE FROM mysql.user ... failed. (/lib/os/class.ISPConfigDebianOS.inc.php:1621),包括 SET PASSWORD FOR 'root'@'localhost'。 说明:Ubuntu 22.04 的 MariaDB 10.6 默认 root@localhost 使用 unix_socket 认证,安装器经 socket 连接执行清理语句时部分语句返回失败。实测这些 WARN 均为非致命,安装继续完成且 mariadb 服务 active、面板可用。root 管理数据库请用系统 root 身份 mariadb 直连(无需密码),不要依赖 TCP 密码登录。

九、卸载与清理

  1. 备份 /var/backup/(面板生成的站点/库备份)与需要保留的配置。
  2. 获取与安装版本一致的 tar 包,解包后执行 install/uninstall.php(完整实测见 5.5 节:输入 yes 确认,脚本删除 dbispconfig 数据库、ispconfig 数据库用户、/usr/local/ispconfig 目录与 Apache 中的面板 vhost)。
  3. 实测卸载后残留与处理:
    • /var/backup/、/var/log/ispconfig/:卸载脚本明确不删,确认不需要后 rm -rf 清理;
    • 基础栈软件包(apache2/mariadb/postfix/dovecot/bind9/rspamd/pure-ftpd-mysql/fail2ban 等):卸载脚本不动它们,若需还原系统可用 apt-get purge 逐一移除;
    • root crontab 中两条 * * * * * 任务:实测卸载后由脚本移除,执行 crontab -l 复核即可。

十、参考链接