CentOS 8 安装 Apache Traffic Server 10.2.0 指南
本文面向 CentOS 8 实测 Traffic Server 10.2.0 安装全流程:启用 PowerTools、gcc-toolset-11、自编 OpenSSL、CMake 编 ATS 并配置 systemd,含验证卸载。
CentOS 8 安装 Apache Traffic Server 10.2.0 指南
一、环境信息
| 项目 | 内容 |
|---|---|
| 操作系统 | CentOS Linux 8(8.5.2111,x86_64) |
| 组件版本 | Apache Traffic Server 10.2.0 |
| 安装方式 | 官方源码包 + CMake 构建(gcc-toolset-11 工具链) |
| SSL 库 | 自行源码编译 OpenSSL 3.5.9(前缀 /opt/openssl-3.5) |
| 安装前缀 | /opt/ats |
| 运行用户 | ats(系统用户,禁止登录) |
| 服务端口 | 8080(HTTP 代理,IPv4 与 IPv6) |
| 配置目录 | /opt/ats/etc/trafficserver |
| 日志目录 | /opt/ats/var/log/trafficserver |
| 运行时目录 | /opt/ats/var/trafficserver |
二、前置条件
- root 权限服务器一台,内存建议不低于 4GB(编译峰值约 3GB),磁盘剩余空间不低于 6GB(额外容纳 OpenSSL 编译目录)。
- 可访问外网或已配置可访问 vault 仓库与 downloads.apache.org 的代理。
- 确认基础工具可用:
which curl tar bzip2 perl
缺少则先安装:
dnf install -y curl bzip2 perl-core
- 确认系统软件源可用。CentOS 8 已停止维护时,官方 mirrorlist 不可用,需要将 /etc/yum.repos.d/ 下的仓库 baseurl 指向 vault 软件源(如清华 centos-vault 8.5.2111 目录),确认方法:
dnf repolist
repo id repo name
AppStream CentOS Linux 8 - AppStream
BaseOS CentOS Linux 8 - BaseOS
三、版本选型说明
官方下载目录 https://downloads.apache.org/trafficserver/ 当前最新主线稳定版为 10.2.0(官网下载页同时推荐 9.2.15 LTS)。本文选取 10.2.0。
在 CentOS 8 上选择 10.x 必须注意两个硬性依赖事实:
- ATS 10.2.0 要求 OpenSSL 3.0 及以上,而 CentOS 8.5 软件源中最高只有 OpenSSL 1.1.1(openssl3 包自 8.6 才引入,且 8.5 已无后续小版本源)。执行 dnf list available openssl3 实测无结果。因此本文以源码编译 OpenSSL 3.5.9(LTS,官方 https://www.openssl.org/source/ 当前提供版本)作为前置步骤。
- ATS 10.x 构建系统已从 autoconf 迁移到 CMake(要求 cmake 3.20+),源码包内没有 configure 脚本;CentOS 8.5 AppStream 自带 cmake 3.20.2 恰好满足最低要求。同时 ATS 10 要求较新的 C++ 标准支持,8.5 默认 gcc 8.5 不适合,使用 gcc-toolset-11(gcc 11.2.1)。
如必须使用系统自带 OpenSSL 1.1.1 而不自编,可退回 9.2.15 LTS 版本(支持 OpenSSL 1.1.1),构建方式与配置文件格式与 10.x 不同,请参考对应版本文档。
四、部署步骤
4.1 启用编译所需软件仓库
安装 dnf 插件:
dnf install -y dnf-plugins-core
启用 PowerTools 仓库(编译依赖库所在)。若 dnf config-manager 因源不可用失败,直接创建仓库文件 /etc/yum.repos.d/CentOS-Linux-PowerTools.repo:
cat > /etc/yum.repos.d/CentOS-Linux-PowerTools.repo <<'EOF'
[PowerTools]
name=CentOS Linux 8 - PowerTools
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/8.5.2111/PowerTools/x86_64/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
enabled=1
EOF
刷新元数据:
dnf makecache
CentOS Linux 8 - PowerTools 1.7 MB/s | 2.3 MB 00:01
Metadata cache created.
4.2 安装编译依赖
安装开发工具组与库依赖:
dnf groupinstall -y "Development Tools"
dnf install -y gcc-toolset-11-gcc gcc-toolset-11-gcc-c++ gcc-toolset-11-binutils pcre-devel pcre2-devel libcap-devel hwloc-devel libcurl-devel tcl-devel zlib-devel libuuid-devel libluajit-devel bison flex pkgconf make perl-core
说明:libluajit-devel 在部分 8.5 源中不存在,若报 Unable to find a match 可从该项移除(仅影响 lua 插件加速,不影响主程序编译)。实测若缺 pkg-config,CMake 会报 Could NOT find PkgConfig,务必确认安装。
启用 gcc-toolset-11 环境并确认版本:
source /opt/rh/gcc-toolset-11/enable && gcc --version | head -1
gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1)
cmake --version | head -1
cmake version 3.20.2
注意:gcc-toolset-11 的环境变量仅对当前 shell 会话生效,重新登录后需要重新 source,或写入 /etc/profile.d/gcc-toolset11.sh:
echo 'source /opt/rh/gcc-toolset-11/enable' > /etc/profile.d/gcc-toolset11.sh
4.3 编译安装 OpenSSL 3.5.9
CentOS 8.5 无 openssl3-devel(实测 dnf list available openssl3 无结果),ATS 10.2.0 又要求 OpenSSL 3.0+,因此先自编 OpenSSL 到独立前缀:
mkdir -p /root/build && cd /root/build
curl -fLO https://www.openssl.org/source/openssl-3.5.9.tar.gz
ls -lh openssl-3.5.9.tar.gz
-rw-r--r-- 1 root root 51M Oct 12 06:19 openssl-3.5.9.tar.gz
cd /root/build && tar xzf openssl-3.5.9.tar.gz && cd openssl-3.5.9
配置(shared 动态库,独立前缀):
./Configure --prefix=/opt/openssl-3.5 --openssldir=/opt/openssl-3.5/ssl shared
编译并安装(install_sw 只装软件部分):
make -j8
make install_sw install_ssldirs
注册动态库路径并验证(不注册 ldconfig 会报 libssl.so.3 无法找到):
echo '/opt/openssl-3.5/lib64' > /etc/ld.so.conf.d/openssl-3.5.conf
ldconfig
/opt/openssl-3.5/bin/openssl version
OpenSSL 3.5.9 29 Sep 2026 (Library: OpenSSL 3.5.9 29 Sep 2026)
4.4 下载并解压 ATS 源码包
cd /root/build
curl -fLO https://downloads.apache.org/trafficserver/trafficserver-10.2.0.tar.bz2
sha256sum trafficserver-10.2.0.tar.bz2
bef171a7d064794e05ec7559e46d3e07c3ae6487a4647987fcc4f1cc5a82cec6 trafficserver-10.2.0.tar.bz2
tar xjf trafficserver-10.2.0.tar.bz2
4.5 CMake 配置与编译安装
进入源码目录执行配置(用 OPENSSL_ROOT_DIR 指向自编 OpenSSL):
cd /root/build/trafficserver-10.2.0
source /opt/rh/gcc-toolset-11/enable
cmake -B build -DCMAKE_INSTALL_PREFIX=/opt/ats -DCMAKE_BUILD_TYPE=Release -DBUILD_REGRESSION_TESTING=OFF -DOPENSSL_ROOT_DIR=/opt/openssl-3.5
实测关键输出:
-- Checking for module 'libpcre2-8'
-- Found libpcre2-8, version 10.32
-- Found OpenSSL: /opt/openssl-3.5/lib64/libcrypto.so (found version "3.5.9")
-- Using OpenSSL native QUIC
-- Build files have been written to: /root/build/trafficserver-10.2.0/build
编译(跳过测试目标后 12 核实测约 10 分钟):
cmake --build build -j8
安装:
cmake --install build
确认版本:
/opt/ats/bin/traffic_server --version
Traffic Server 10.2.0-0 Oct 12 2026 06:35:31 aa58b167a4e7
traffic_server: using root directory '/opt/ats'
4.6 创建运行用户与目录
useradd -r -s /sbin/nologin ats
chown -R ats:ats /opt/ats/var
确认用户:
id ats
uid=997(ats) gid=994(ats) groups=994(ats)
4.7 基础配置
缓存存储扩容到 512MB:
sed -i 's|var/trafficserver 256M|var/trafficserver 512M|' /opt/ats/etc/trafficserver/storage.config
grep -v '^#' /opt/ats/etc/trafficserver/storage.config | tail -1
var/trafficserver 512M
写入反向代理映射规则:
printf 'map / http://example.com/\n' > /opt/ats/etc/trafficserver/remap.config
安装前配置校验:
/opt/ats/bin/traffic_server -C verify_config
INFO: Successfully initialized SSL client context
Traffic Server 10.2.0-0 Oct 12 2026 06:35:31 aa58b167a4e7
traffic_server: using root directory '/opt/ats'
4.8 配置 systemd 服务并启动
创建 /etc/systemd/system/trafficserver.service:
cat > /etc/systemd/system/trafficserver.service <<'EOF'
[Unit]
Description=Apache Traffic Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=ats
Group=ats
ExecStartPre=/bin/rm -f /opt/ats/var/trafficserver/server.lock /opt/ats/var/trafficserver/jsonrpc20.sock /opt/ats/var/trafficserver/jsonrpc20.lock
ExecStart=/opt/ats/bin/traffic_server
ExecReload=/opt/ats/bin/traffic_ctl config reload
Restart=on-failure
RestartSec=5
LimitNOFILE=131072
[Install]
WantedBy=multi-user.target
EOF
重载、自启并启动(每行仅一个单元名):
systemctl daemon-reload
systemctl enable trafficserver
systemctl start trafficserver
4.9 启动验证
systemctl status trafficserver --no-pager -n 3
● trafficserver.service - Apache Traffic Server
Loaded: loaded (/etc/systemd/system/trafficserver.service; enabled; vendor preset: enabled)
Active: active (running)
Main PID: 15261 (/opt/ats/bin/traffic_server)
ss -lnt | grep 8080
LISTEN 0 4096 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 4096 [::]:8080 [::]:*
/opt/ats/bin/traffic_ctl server status
{"initialized_done": "true", "is_ssl_handshaking_stopped": "false", "is_draining": "false", "is_event_system_shut_down": "false", "thread_groups": [{"name": "ET_NET", "count": "12", "started": "true"}, {"name": "ET_TASK", "count": "2", "started": "true"}, {"name": "ET_UDP", "count": "0", "started": "false"}]}
首次回源请求:
curl -s -o /dev/null -w 'HTTP %{http_code}, %{time_total}s\n' http://127.0.0.1:8080/
HTTP 200, 1.424930s
第二次请求验证缓存命中:
curl -sI http://127.0.0.1:8080/ | grep -E '^Age|^Server'
Age: 2
Server: ATS/10.2.0
确认动态库链接正常(自编 OpenSSL 生效):
ldd /opt/ats/bin/traffic_server | grep ssl
libssl.so.3 => /opt/openssl-3.5/lib64/libssl.so.3 (0x00007f8e2c0f0000)
确认运行用户与内存占用(C++ 进程,无 JVM):
ps -o user=,rss=,etime= -p $(systemctl show trafficserver -p MainPID --value)
ats 71500 02:10
实测 RSS 约 70MB。
五、配置说明
配置文件位于 /opt/ats/etc/trafficserver/,与所有 ATS 10 部署一致:
| 文件 | 作用 |
|---|---|
| records.yaml | 主配置(YAML 格式),监听端口、缓存、线程、超时等全部核心参数 |
| storage.config | 缓存存储定义(路径与大小) |
| remap.config | URL 映射与反向代理规则 |
| plugin.config | 全局插件加载清单 |
| ip_allow.yaml | 访问控制 |
| logging.yaml | 访问日志管道 |
| sni.yaml / ssl_multicert.config | TLS/SNI 配置 |
动态查询当前生效值:
/opt/ats/bin/traffic_ctl config get proxy.config.http.server_ports
proxy.config.http.server_ports: 8080 8080:ipv6
查看非默认值(诊断配置漂移):
/opt/ats/bin/traffic_ctl config diff
注意 traffic_ctl config set 仅修改运行时值,持久化必须编辑 records.yaml 后执行 reload;server_ports 等 update type 为 static 的参数需要重启服务。
六、注意事项
- CentOS 8.5 软件源没有 openssl3-devel,不要试图直接安装;按本文自编 OpenSSL 3.5.9 并在 CMake 时用 OPENSSL_ROOT_DIR 指定。
- /etc/ld.so.conf.d/openssl-3.5.conf 与 ldconfig 必不可少,否则 traffic_server 运行时报 libssl.so.3 cannot open shared object file。
- 每次新登录 shell 都要 source /opt/rh/gcc-toolset-11/enable 后再操作 cmake,否则会退回 gcc 8.5 导致编译失败。
- ATS 10.2.0 没有 configure 脚本,禁用 ./configure;配置用 cmake -B build。
- traffic_ctl 已无 server start/stop/restart 子命令(ATS 10 移除了 traffic_manager),启停一律使用 systemctl。
- 进程异常退出会残留 server.lock、jsonrpc20.sock、jsonrpc20.lock,导致下次启动 JSONRPC 失败;本文 systemd 单元已用 ExecStartPre 清理。
- 主进程运行后进程名变为 TS_MAIN,pkill -x traffic_server 无法命中;停止使用 systemctl stop trafficserver,脚本化操作需等待端口真正释放。
七、常见问题
Q1:cmake 报 Found OpenSSL 1.1.1 而不是 3.5.9?
未传 OPENSSL_ROOT_DIR 或传错路径,CMake 回退到了系统 OpenSSL。删除 build 目录后显式指定:
rm -rf /root/build/trafficserver-10.2.0/build
cmake -B build -DCMAKE_INSTALL_PREFIX=/opt/ats -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/opt/openssl-3.5
Q2:启动报 error while loading shared libraries: libssl.so.3?
自编 OpenSSL 的 lib64 目录未注册进动态链接器缓存:
echo '/opt/openssl-3.5/lib64' > /etc/ld.so.conf.d/openssl-3.5.conf
ldconfig
systemctl restart trafficserver
Q3:cmake 阶段报 Could NOT find PkgConfig?
安装 pkgconf 并重新配置:
dnf install -y pkgconf pkgconfig
rm -rf /root/build/trafficserver-10.2.0/build
cmake -B build -DCMAKE_INSTALL_PREFIX=/opt/ats -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/opt/openssl-3.5
Q4:traffic_ctl 报 RPC Node Error: connect Connection refused?
RPC socket 残留或属主不对。清理残留文件并确认运行目录属主后重启:
rm -f /opt/ats/var/trafficserver/jsonrpc20.sock /opt/ats/var/trafficserver/jsonrpc20.lock /opt/ats/var/trafficserver/server.lock
chown -R ats:ats /opt/ats/var
systemctl restart trafficserver
八、卸载方式
停止并禁用服务:
systemctl stop trafficserver
systemctl disable trafficserver
删除单元文件并重载:
rm -f /etc/systemd/system/trafficserver.service
systemctl daemon-reload
删除 ATS 安装目录、OpenSSL 独立目录与构建目录:
rm -rf /opt/ats /opt/openssl-3.5 /root/build/trafficserver-10.2.0 /root/build/trafficserver-10.2.0.tar.bz2 /root/build/openssl-3.5.9 /root/build/openssl-3.5.9.tar.gz
删除动态库注册与运行用户:
rm -f /etc/ld.so.conf.d/openssl-3.5.conf
ldconfig
userdel ats
九、参考链接
- Apache Traffic Server 官方下载页:https://trafficserver.apache.org/downloads
- 官方发行目录:https://downloads.apache.org/trafficserver/
- OpenSSL 官方源码:https://www.openssl.org/source/
- records.yaml 参数参考:https://docs.trafficserver.apache.org/en/latest/admin-guide/files/records.yaml.en.html
- storage.config 参考:https://docs.trafficserver.apache.org/en/latest/admin-guide/files/storage.config.en.html
- gcc-toolset-11 用户指南:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8