Ubuntu 22.04 安装 ISPConfig 3.3.2p1 指南
Ubuntu 22.04 上从零安装 ISPConfig 3.3.2p1 全栈托管面板的实测指南:自动安装器主线、tar 包备用方案、装后验证、7 类排障实录与卸载清理。
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 官网直链探测确认的最新稳定版)
- 安装完成后组件版本(均为服务器上实查回显):
| 组件 | 版本 | 实查命令 |
|---|---|---|
| MariaDB | 10.6.23 | mariadb --version → Ver 15.1 Distrib 10.6.23-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper |
| Apache | 2.4.52 | apache2 -v → Server version: Apache/2.4.52 (Ubuntu) |
| PHP | 8.1.34 | php -v → PHP 8.1.34 (cli) (built: Jul 3 2026 05:35:47) (NTS) |
| Postfix | 3.6.4 | postconf mail_version → mail_version = 3.6.4 |
| Dovecot | 2.3.16 | dovecot --version → 2.3.16 (7e2e900c1a) |
| BIND | 9.18.39 | named -v → BIND 9.18.39-0ubuntu0.22.04.7-Ubuntu (Extended Support Version) <id:> |
| Rspamd | 4.2.3 | rspamd --version → Rspamd daemon version 4.2.3 |
| PureFTPd | 1.0.50 | dpkg -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不安装 phpMyAdmin phpMyAdmin 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 apache2 | active |
systemctl is-active mariadb | active |
systemctl is-active postfix | active |
systemctl is-active dovecot | active |
systemctl is-active bind9 | active |
systemctl is-active rspamd | active |
systemctl is-active pure-ftpd-mysql | active |
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 密码登录。
九、卸载与清理
- 备份
/var/backup/(面板生成的站点/库备份)与需要保留的配置。 - 获取与安装版本一致的 tar 包,解包后执行
install/uninstall.php(完整实测见 5.5 节:输入yes确认,脚本删除dbispconfig数据库、ispconfig数据库用户、/usr/local/ispconfig目录与 Apache 中的面板 vhost)。 - 实测卸载后残留与处理:
/var/backup/、/var/log/ispconfig/:卸载脚本明确不删,确认不需要后rm -rf清理;- 基础栈软件包(apache2/mariadb/postfix/dovecot/bind9/rspamd/pure-ftpd-mysql/fail2ban 等):卸载脚本不动它们,若需还原系统可用
apt-get purge逐一移除; - root crontab 中两条
* * * * *任务:实测卸载后由脚本移除,执行crontab -l复核即可。
十、参考链接
-
官方下载(自动安装器与 tar 包直链):https://www.ispconfig.org/downloads/
-
3.3.2 发布说明(含 3.3.2p1 补丁):https://www.ispconfig.org/blog/ispconfig-3-3-2-released/
-
面板配置参数的逐项解读与本套 CLI 命令的用法,见本专栏配置篇与命令篇。
-
本专栏系列:《ISPConfig 3.3.2p1 常用 CLI 命令与工具详解》、《ISPConfig 3.3.2p1 配置参数详解》、《ISPConfig 介绍与选型指南》。