CentOS 8 安装 Apache Synapse 3.0.2 指南

在 CentOS 8 服务器从零部署 Apache Synapse 3.0.2 的指南,覆盖 dnf 安装 OpenJDK 8、发行包下载校验、解压与环境变量、wrapper 参数调整、daemon 启停、systemd 注册及卸载全流程。

Apache SynapseApache Synapse2026/10/12

CentOS 8 安装 Apache Synapse 3.0.2 指南

一、环境信息

项目值
操作系统CentOS Linux 8(x86_64)
组件版本Apache Synapse 3.0.2(当前官方最新稳定版)
JDKOpenJDK 8(1.8.0_312,官方声明仅完整支持 Java 1.8 及更早版本)
安装目录/opt/synapse-3.0.2
默认端口8280(HTTP)、8243(HTTPS)、1099(JMX)
运行账号root(生产环境建议创建专用账号)

本文所有命令与回显均来自真实服务器实测,可直接照抄执行。

二、前置条件

2.1 系统要求

  • 2 核 CPU、2GB 内存以上(JVM 堆按本文配置为 256-512MB)
  • 磁盘剩余空间不低于 2GB(发行包 43MB,解压后约 350MB,另需日志空间)
  • 服务器可访问外网或已配置可用的 dnf 软件源

2.2 安装 OpenJDK 8 与基础工具

Synapse 3.0.2 的启动脚本向 JVM 传递 -Djava.endorsed.dirs 参数,该参数在 JDK 9 及以上版本会导致 JVM 创建失败,实测在 OpenJDK 11 上无法启动,因此必须使用 OpenJDK 8:

dnf install -y java-1.8.0-openjdk-devel curl

确认版本与实际路径:

java -version
readlink -f /usr/lib/jvm/java-1.8.0-openjdk

实测回显:

openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode, sharing)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64

CentOS 8 安装 java-1.8.0-openjdk-devel 后系统默认 java 即为 1.8 版本,这比 Ubuntu 更省事,但环境变量仍建议显式配置。

三、版本选型说明

  • 官方下载目录 https://downloads.apache.org/synapse/ 当前提供 3.0.1 与 3.0.2,3.0.2 为最新稳定版。
  • 发行包为 synapse-distribution-3.0.2-bin.tar.gz(约 43MB),另有 zip 与源码包。
  • 已知提示:发行包内 README.txt 头部仍写 "Apache Synapse 3.0.1 build (December 2017)",为官方未更新所致,实际版本以解压目录名 synapse-3.0.2 与 release_notes.txt 为准。
  • 官方下载目录仅保留最新两个版本,历史版本可从 https://archive.apache.org/dist/synapse/3.0.2/ 获取。

四、部署步骤

4.1 下载官方发行包并校验

cd /tmp
curl -sO https://downloads.apache.org/synapse/3.0.2/synapse-distribution-3.0.2-bin.tar.gz

校验 MD5(与官方同名 .md5 文件比对):

md5sum synapse-distribution-3.0.2-bin.tar.gz
curl -s https://downloads.apache.org/synapse/3.0.2/synapse-distribution-3.0.2-bin.tar.gz.md5

实测两行输出均为:

652b62cede3439cbde9fd71fea66ad4e  synapse-distribution-3.0.2-bin.tar.gz
652b62cede3439cbde9fd71fea66ad4e

4.2 解压到 /opt

tar -xzf /tmp/synapse-distribution-3.0.2-bin.tar.gz -C /opt/
ls /opt/

实测回显:

synapse-3.0.2

关键目录:bin(synapse.sh、synapse-daemon.sh、native/)、repository/conf(axis2.xml、synapse.properties、wrapper.conf、synapse-config/)、lib(log4j.properties、trust.jks、identity.jks)。

4.3 创建运行期目录

发行包不带 logs 目录,首次启动前必须创建:

mkdir -p /opt/synapse-3.0.2/logs
mkdir -p /opt/synapse-3.0.2/work/temp/synapse

4.4 配置环境变量

cat > /etc/profile.d/synapse.sh <<'EOF'
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export SYNAPSE_HOME=/opt/synapse-3.0.2
export PATH=$JAVA_HOME/bin:$SYNAPSE_HOME/bin:$PATH
EOF
source /etc/profile.d/synapse.sh
echo $SYNAPSE_HOME

实测回显:

/opt/synapse-3.0.2

4.5 修改 daemon 模式 JVM 配置(关键)

daemon 启动基于 Tanuki wrapper,修改 /opt/synapse-3.0.2/repository/conf/wrapper.conf 两处:

第一处,将默认堆参数 128M 调整为 256-512MB(CentOS 8 默认 java 已是 1.8,wrapper.java.command=java 可保持不动;若系统默认 java 非 1.8,需改为此文件全路径):

sed -i 's/wrapper.java.initmemory=128/wrapper.java.initmemory=256/' /opt/synapse-3.0.2/repository/conf/wrapper.conf
sed -i 's/wrapper.java.maxmemory=128/wrapper.java.maxmemory=512/' /opt/synapse-3.0.2/repository/conf/wrapper.conf

确认修改结果:

grep -E 'java.command|initmemory|maxmemory' /opt/synapse-3.0.2/repository/conf/wrapper.conf

实测回显:

wrapper.java.command=java
wrapper.java.initmemory=256
wrapper.java.maxmemory=512

第二处,禁用 32 位 wrapper。启动脚本优先使用 32 位二进制,在缺少 32 位运行库的系统上执行会报 wrapper-linux-x86-32: not found,改名后脚本自动回退 64 位:

mv /opt/synapse-3.0.2/bin/native/wrapper-linux-x86-32 /opt/synapse-3.0.2/bin/native/wrapper-linux-x86-32.disabled

4.6 启动服务

cd /opt/synapse-3.0.2
./bin/synapse-daemon.sh start

实测回显:

Starting Apache Synapse (Synapse)...

查询运行状态:

./bin/synapse-daemon.sh status

实测回显:

Apache Synapse (Synapse) is running (271).

4.7 验证服务

端口验证:

ss -tlnp | grep -E '8280|8243|1099'

实测回显:

LISTEN 0      50   *:8280   *:*   users:(("java",pid=273,fd=271))
LISTEN 0      50   *:8243   *:*   users:(("java",pid=273,fd=311))
LISTEN 0      50   *:1099   *:*   users:(("java",pid=273,fd=223))

JVM 堆参数验证:

/usr/lib/jvm/java-1.8.0-openjdk/bin/jps -v | grep -o '\-Xms\S* \-Xmx\S*'

实测回显:

-Xms256m -Xmx512m

启动日志验证:

tail -3 /opt/synapse-3.0.2/logs/wrapper.log

实测回显:

INFO ServerManager Server ready for processing...
INFO SynapseServer Apache Synapse started successfully

4.8 配置 systemd 开机自启

cat > /etc/systemd/system/synapse.service <<'EOF'
[Unit]
Description=Apache Synapse ESB
After=network.target

[Service]
Type=forking
User=root
ExecStart=/opt/synapse-3.0.2/bin/synapse-daemon.sh start
ExecStop=/opt/synapse-3.0.2/bin/synapse-daemon.sh stop
ExecReload=/opt/synapse-3.0.2/bin/synapse-daemon.sh restart
PIDFile=/opt/synapse-3.0.2/Synapse.pid
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

注册并启动:

systemctl daemon-reload
systemctl enable synapse
systemctl start synapse

该 unit 通过 wrapper 脚本托管进程,ExecStart/ExecStop 均调用 synapse-daemon.sh,启动后可用 systemctl status synapse 查看状态。若环境不支持 systemctl(如最小化安装缺失 dbus),可直接使用 ./bin/synapse-daemon.sh start|stop|restart|status 管理。

五、配置说明

5.1 目录与配置文件一览

路径作用
/opt/synapse-3.0.2/bin/synapse.sh前台启动脚本(默认 -Xms512M -Xmx512M 在此定义)
/opt/synapse-3.0.2/bin/synapse-daemon.shdaemon 启停脚本(console/start/stop/restart/status/dump)
/opt/synapse-3.0.2/repository/conf/wrapper.confdaemon 模式 JVM 参数与 java 命令
/opt/synapse-3.0.2/repository/conf/axis2.xml传输层配置(8280/8243 端口在此定义)
/opt/synapse-3.0.2/repository/conf/synapse-config/synapse.xml中介配置主文件
/opt/synapse-3.0.2/repository/conf/passthru-http.propertiesHTTP 传输参数
/opt/synapse-3.0.2/lib/log4j.properties日志级别与输出文件

5.2 验证代理服务

部署回显代理后重启,实测请求 http://127.0.0.1:8280/services/HelloProxy 返回 HTTP 200。服务访问路径必须带 /services/ 前缀;修改 synapse.xml 后需重启进程生效。

六、注意事项

  1. 必须使用 OpenJDK 8,JDK 9+ 因 endorsed 目录机制移除而无法启动 Synapse 3.0.x。
  2. 前台模式(synapse.sh)与 daemon 模式(wrapper.conf)的 JVM 堆参数相互独立,需分别确认一致。
  3. CentOS 8 已停止维护,生产环境建议使用到期维护源或迁移至 RHEL 兼容发行版后再部署。
  4. 防火墙放行业务端口:firewall-cmd --permanent --add-port=8280/tcp --add-port=8243/tcp && firewall-cmd --reload。
  5. SELinux 环境下若启动失败,先查看审计日志确认是否被拦截,建议为 /opt/synapse-3.0.2 配置相应策略或调整上下文。

七、常见问题

Q1:启动报 Error: Could not create the Java Virtual Machine. 与 endorsed 相关错误?

系统默认 java 不是 1.8。执行 java -version 确认;若为 9 以上版本,安装 java-1.8.0-openjdk-devel 并将 wrapper.conf 的 wrapper.java.command 改为 /usr/lib/jvm/java-1.8.0-openjdk/bin/java 全路径。

Q2:synapse-daemon.sh start 提示 wrapper-linux-x86-32 not found?

32 位 wrapper 无法在纯 64 位运行库系统执行。执行 mv /opt/synapse-3.0.2/bin/native/wrapper-linux-x86-32{,.disabled} 后重启。

Q3:请求 8280 返回 202 空响应体?

请求路径缺少 /services/ 前缀。代理服务正确地址为 http://<host>:8280/services/<代理名>。

Q4:修改 synapse.xml 不生效?

独立发行版不支持中介配置热加载,执行 ./bin/synapse-daemon.sh restart 后生效。

Q5:jps 命令找不到?

jps 由 JDK 提供,使用全路径 /usr/lib/jvm/java-1.8.0-openjdk/bin/jps,或安装 java-1.8.0-openjdk-devel 后重新加载 PATH。

八、卸载方式

停止服务并取消自启:

systemctl stop synapse
systemctl disable synapse

删除 systemd 单元与环境变量:

rm /etc/systemd/system/synapse.service
systemctl daemon-reload
rm /etc/profile.d/synapse.sh

删除程序目录与发行包:

rm -rf /opt/synapse-3.0.2
rm -f /tmp/synapse-distribution-3.0.2-bin.tar.gz

如需同时卸载 JDK:

dnf remove -y java-1.8.0-openjdk-devel

九、参考链接