Ubuntu 22.04 安装 Apache mod_perl 2.0.12 指南
在 Ubuntu 22.04 服务器上通过 apt 在线安装 Apache mod_perl 2.0.12(libapache2-mod-perl2 2.0.12-1build1),并给出 deb 离线安装、模块启用、版本确认与卸载方式
Ubuntu 22.04 安装 Apache mod_perl 2.0.12 指南
目标:在 Ubuntu 22.04 服务器上安装 Apache mod_perl 2.0.12(apt 包
libapache2-mod-perl22.0.12-1build1),覆盖 apt 在线与 deb 离线两种安装方式,并完成模块启用、版本确认与验证;已在 Ubuntu 22.04.5(Apache/2.4.52 + Perl v5.34.0)实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(jammy,x86_64)
- Apache HTTP Server:Apache/2.4.52 (Ubuntu)
- Perl:v5.34.0(built for x86_64-linux-gnu-thread-multi)
- mod_perl:2.0.12(apt 包
libapache2-mod-perl22.0.12-1build1) - 模块文件:
/usr/lib/apache2/modules/mod_perl.so - 服务控制:
apache2ctl -k restart(本环境未启用 systemd 服务托管,统一用 apache2ctl 直接控制 Apache 进程) - 示例账号:root
二、前置条件
- 服务器可访问 Ubuntu 22.04 官方软件源(离线环境见「五、离线安装方案」)。
- 以 root 或具备 sudo 权限的账号执行安装命令。
三、版本选型说明
Ubuntu 22.04 官方仓库内置 mod_perl 2.0.12(包名 libapache2-mod-perl2),与仓库自带的 Apache/2.4.52、Perl 5.34.0 配套,依赖关系由 apt 自动解决,推荐直接使用。
| 安装方式 | 软件包 | 是否需联网 | 适用场景 |
|---|---|---|---|
| apt 在线安装(推荐) | libapache2-mod-perl2 2.0.12-1build1 | 是 | 可联网服务器,最简最稳 |
| deb 离线安装 | 同上(手动下载 deb 及依赖) | 否 | 内网隔离/离线环境 |
版本确认方法(安装后任选其一):
dpkg -l libapache2-mod-perl2:显示包版本2.0.12-1build1;- Apache 启动横幅(
/var/log/apache2/error.log):Apache/2.4.52 (Ubuntu) mod_perl/2.0.12 Perl/v5.34.0 configured -- resuming normal operations。
⚠️ 注意:该包未随附
ModPerl::Version.pm,perl -MModPerl::Version不可用,以 dpkg 包版本或 Apache 启动横幅为准。
四、在线安装方案(apt 官方仓库,推荐)
4.1 更新软件源
export DEBIAN_FRONTEND=noninteractive
apt-get update
回显(要点):
Get:18 个,Fetched 49.0 MB
4.2 安装 Apache、mod_perl 与 Perl
apt-get install -y apache2 libapache2-mod-perl2 perl wget
回显(要点):
Setting up libapache2-reload-perl (0.13-3) ...
libapache2-mod-perl2 安装时自动生成模块加载文件 /etc/apache2/mods-available/perl.load。
验证用 curl 不在 wget 的依赖中,单独安装:
apt-get install -y curl
4.3 确认版本
apache2 -v
回显:
Server version: Apache/2.4.52 (Ubuntu)
Server built: 2026-10-05T17:25:19
perl -v
回显(首两行):
This is perl 5, version 34, subversion 0 (v5.34.0) built for x86_64-linux-gnu-thread-multi
(with 78 registered patches, see perl -V for more detail)
4.4 确认 mod_perl 模块已加载
apache2ctl -M | grep -i perl
回显:
perl_module (shared)
模块加载文件 /etc/apache2/mods-available/perl.load 内容:
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
五、离线安装方案(deb 包)
适用于内网隔离、无法访问软件源的服务器。
5.1 在可联网机器下载 deb 包及依赖
mkdir -p /root/modperl-debs && cd /root/modperl-debs
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances libapache2-mod-perl2 | grep "^[a-z]" | sort -u)
apt-get download 按依赖展开结果将 libapache2-mod-perl2 及其全部依赖的 .deb 包下载到当前目录,随后整体拷贝到离线服务器。
⚠️ 注意:离线服务器系统版本须与下载机器一致(同为 Ubuntu 22.04),否则依赖包版本可能不兼容。
5.2 离线服务器安装
cd /root/modperl-debs
dpkg -i *.deb
若提示未满足的依赖,用 apt 自动修复:
apt-get install -f -y
5.3 验证
与「四、4.3/4.4」完全相同:apache2 -v、perl -v 确认版本,apache2ctl -M | grep -i perl 应输出 perl_module (shared)。
六、方案对比与选择建议
| 维度 | apt 在线安装 | deb 离线安装 |
|---|---|---|
| 是否需联网 | 是 | 否 |
| 安装方式 | apt-get install 自动解决依赖 | dpkg -i + apt-get install -f 修复 |
| 软件版本 | 仓库 2.0.12-1build1 | 与下载机器同版本 |
| 优点 | 一条命令、依赖完整、可升级 | 适合内网隔离环境 |
| 缺点 | 依赖外网 | 需另机准备 deb 包 |
选择建议:可联网服务器直接用 apt 在线安装;内网隔离环境用 deb 离线安装。
七、配置说明
7.1 启用 perl 模块
a2enmod perl
回显:
Module perl already enabled
7.2 确认模块加载文件
/etc/apache2/mods-available/perl.load(与 mods-enabled/ 下内容一致):
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
7.3 配置 mod_perl 的模块搜索路径(关键)
mod_perl 解释器的 @INC 默认不含自定义 Perl 模块目录(如 /var/www/perl),直接使用会导致首次访问 500。需要追加全局搜索路径(完整指令说明见《Apache mod_perl 配置参数详解》):
cat > /etc/apache2/conf-available/perl-switches.conf <<'EOF'
PerlSwitches -I/var/www/perl
EOF
a2enconf perl-switches
⚠️ 注意:
PerlSwitches仅在 Apache 启动时生效,修改后必须完整重启(apache2ctl -k restart),reload 不生效。
八、注意事项
ServerName未设置时,启动/检查会提示AH00558: Could not reliably determine the server's fully qualified domain name,属提示性警告,不影响功能;设置全局ServerName指令为实际域名或 IP 后消除。- mod_perl 的
@INC陷阱:自定义模块目录必须通过PerlSwitches -I<目录>加入,且修改后需完整重启。 - 本环境服务控制使用
apache2ctl -k restart(未启用 systemd 托管);启用 systemd 的服务器也可用systemctl restart apache2。
九、常见问题(FAQ)
Q1:如何确认 mod_perl 版本?
dpkg -l libapache2-mod-perl2 显示 2.0.12-1build1;或查看 /var/log/apache2/error.log 启动横幅 Apache/2.4.52 (Ubuntu) mod_perl/2.0.12 Perl/v5.34.0。perl -MModPerl::Version 不可用(包未安装 ModPerl::Version.pm)。
Q2:apache2ctl -t 报 AH00558 是错误吗?
不是。AH00558 只是提示未设置 ServerName,回显 Syntax OK 表示配置正确。设置全局 ServerName 指令后消除。
Q3:访问 Perl 处理器报 500,error.log 提示 Can't locate Hello.pm in @INC?
mod_perl 默认 @INC 不含自定义模块目录,需全局配置 PerlSwitches -I/var/www/perl 并完整重启(reload 不生效)。详见《Apache mod_perl 配置参数详解》FAQ。
Q4:curl 命令不存在?
wget 不隐含 curl,单独安装:apt-get install -y curl。
Q5:安装后访问站点失败如何快速定位?
先 apache2ctl -t 检查配置语法,再查看 /var/log/apache2/error.log 尾部错误(tail -f /var/log/apache2/error.log)。
十、卸载方式
禁用模块与配置片段:
a2dismod perl
a2disconf perl-switches
卸载软件包(保留配置文件)或彻底清除:
apt-get remove -y libapache2-mod-perl2
apt-get purge -y libapache2-mod-perl2
清理不再需要的依赖:
apt-get autoremove -y
如需连 Apache 一并卸载:apt-get remove -y apache2。
十一、参考链接
- mod_perl 官方网站与文档:https://perl.apache.org/
- Ubuntu 软件包页面
libapache2-mod-perl2:https://packages.ubuntu.com/jammy/libapache2-mod-perl2 - Apache HTTP Server 2.4 文档:https://httpd.apache.org/docs/2.4/