CentOS 8 安装 Apache Traffic Server 10.2.0 指南

本文面向 CentOS 8 实测 Traffic Server 10.2.0 安装全流程:启用 PowerTools、gcc-toolset-11、自编 OpenSSL、CMake 编 ATS 并配置 systemd,含验证卸载。

Apache Traffic ServerApache Traffic Server2026/10/12

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

二、前置条件

  1. root 权限服务器一台,内存建议不低于 4GB(编译峰值约 3GB),磁盘剩余空间不低于 6GB(额外容纳 OpenSSL 编译目录)。
  2. 可访问外网或已配置可访问 vault 仓库与 downloads.apache.org 的代理。
  3. 确认基础工具可用:
which curl tar bzip2 perl

缺少则先安装:

dnf install -y curl bzip2 perl-core
  1. 确认系统软件源可用。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 必须注意两个硬性依赖事实:

  1. 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/ 当前提供版本)作为前置步骤。
  2. 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.configURL 映射与反向代理规则
plugin.config全局插件加载清单
ip_allow.yaml访问控制
logging.yaml访问日志管道
sni.yaml / ssl_multicert.configTLS/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 的参数需要重启服务。

六、注意事项

  1. CentOS 8.5 软件源没有 openssl3-devel,不要试图直接安装;按本文自编 OpenSSL 3.5.9 并在 CMake 时用 OPENSSL_ROOT_DIR 指定。
  2. /etc/ld.so.conf.d/openssl-3.5.conf 与 ldconfig 必不可少,否则 traffic_server 运行时报 libssl.so.3 cannot open shared object file。
  3. 每次新登录 shell 都要 source /opt/rh/gcc-toolset-11/enable 后再操作 cmake,否则会退回 gcc 8.5 导致编译失败。
  4. ATS 10.2.0 没有 configure 脚本,禁用 ./configure;配置用 cmake -B build。
  5. traffic_ctl 已无 server start/stop/restart 子命令(ATS 10 移除了 traffic_manager),启停一律使用 systemctl。
  6. 进程异常退出会残留 server.lock、jsonrpc20.sock、jsonrpc20.lock,导致下次启动 JSONRPC 失败;本文 systemd 单元已用 ExecStartPre 清理。
  7. 主进程运行后进程名变为 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

九、参考链接

  1. Apache Traffic Server 官方下载页:https://trafficserver.apache.org/downloads
  2. 官方发行目录:https://downloads.apache.org/trafficserver/
  3. OpenSSL 官方源码:https://www.openssl.org/source/
  4. records.yaml 参数参考:https://docs.trafficserver.apache.org/en/latest/admin-guide/files/records.yaml.en.html
  5. storage.config 参考:https://docs.trafficserver.apache.org/en/latest/admin-guide/files/storage.config.en.html
  6. gcc-toolset-11 用户指南:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8