CentOS 8 安装 Apache Synapse 3.0.2 指南
在 CentOS 8 服务器从零部署 Apache Synapse 3.0.2 的指南,覆盖 dnf 安装 OpenJDK 8、发行包下载校验、解压与环境变量、wrapper 参数调整、daemon 启停、systemd 注册及卸载全流程。
CentOS 8 安装 Apache Synapse 3.0.2 指南
一、环境信息
| 项目 | 值 |
|---|---|
| 操作系统 | CentOS Linux 8(x86_64) |
| 组件版本 | Apache Synapse 3.0.2(当前官方最新稳定版) |
| JDK | OpenJDK 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.sh | daemon 启停脚本(console/start/stop/restart/status/dump) |
| /opt/synapse-3.0.2/repository/conf/wrapper.conf | daemon 模式 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.properties | HTTP 传输参数 |
| /opt/synapse-3.0.2/lib/log4j.properties | 日志级别与输出文件 |
5.2 验证代理服务
部署回显代理后重启,实测请求 http://127.0.0.1:8280/services/HelloProxy 返回 HTTP 200。服务访问路径必须带 /services/ 前缀;修改 synapse.xml 后需重启进程生效。
六、注意事项
- 必须使用 OpenJDK 8,JDK 9+ 因 endorsed 目录机制移除而无法启动 Synapse 3.0.x。
- 前台模式(synapse.sh)与 daemon 模式(wrapper.conf)的 JVM 堆参数相互独立,需分别确认一致。
- CentOS 8 已停止维护,生产环境建议使用到期维护源或迁移至 RHEL 兼容发行版后再部署。
- 防火墙放行业务端口:
firewall-cmd --permanent --add-port=8280/tcp --add-port=8243/tcp && firewall-cmd --reload。 - 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