Ubuntu18.04环境下Wildfly.service启动报203/EXEC错误如何排查?
问题概述
在Ubuntu 18.04版本AWS虚拟机上部署WildFly 26.1.1,通过自定义安装脚本配置服务同时监听8080业务端口、9990管理控制台端口,启动服务时触发systemd报错,且此前服务正常运行阶段曾出现ERR_CONNECTION_REFUSED连接错误。
启动报错日志如下:
systemd[1]: wildfly.service: Main process exited, code=exited, status=203/EXEC systemd[1]: wildfly.service: Failed with result 'exit-code'.
现有配置信息
wildfly.service配置
Description=The WildFly Application Server After=syslog.target network.target Before=httpd.service [Service] Environment=LAUNCH_JBOSS_IN_BACKGROUND=1 EnvironmentFile=-/etc/wildfly/wildfly.conf User=wildfly LimitNOFILE=102642 PIDFile=/var/run/wildfly/wildfly.pid ExecStart=/bin/bash /opt/wildfly/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND StandardOutput=null [Install] WantedBy=multi-user.target
相关文件权限
systemd对应路径下的文件权限信息:
-rw-r--r-- 1 wildfly wildfly 645 May 18 19:08 README -rwxr-xr-x 1 wildfly wildfly 217 May 18 19:08 launch.sh -rw-r--r-- 1 wildfly wildfly 165 May 18 19:08 wildfly.conf -rwxrwxrwx 1 wildfly wildfly 419 Jun 15 21:09 wildfly.service
排查解决步骤
status=203/EXEC的核心含义是systemd无法正常执行ExecStart字段指定的启动命令,按以下优先级排查:
- 修复service文件格式错误
当前wildfly.service文件最顶部缺失[Unit]段标识,systemd无法正确解析配置规则,会直接导致执行逻辑异常。在文件第一行补上[Unit],修正后文件开头结构如下:
修改完成后执行[Unit] Description=The WildFly Application Server After=syslog.target network.target Before=httpd.servicesystemctl daemon-reload重新加载systemd配置,再尝试启动服务。 - 修正服务文件权限
当前wildfly.service权限为777(全局可写),systemd出于安全机制会拒绝加载全局可写的服务单元文件,直接导致启动失败。执行以下命令修正权限:
修正后再次执行chmod 644 /etc/systemd/system/wildfly.service chown root:root /etc/systemd/system/wildfly.servicesystemctl daemon-reload重载配置。 - 校验启动路径与目录权限
- 执行
ls -l /opt/wildfly/bin/launch.sh确认启动脚本真实存在,核对配置中填写的路径无拼写、大小写错误 - 执行
ls -l /bin/bash确认bash解释器路径正常,若存在软链损坏可执行apt install --reinstall bash修复 - 执行
namei -l /opt/wildfly/bin/launch.sh逐层校验路径权限,确认wildfly用户对路径上每一级目录都有读、执行权限,上层目录权限异常会导致脚本无法被读取执行
- 执行
- 手动执行启动脚本复现隐式错误
切换到wildfly用户手动执行启动命令,直接获取脚本层面的报错信息,绕过systemd的日志封装:
手动执行时会直接输出Java环境缺失、WildFly文件损坏、配置语法错误等具体问题,比systemd返回的通用错误码定位效率更高。su - wildfly -s /bin/bash -c "/bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0" - 排查ERR_CONNECTION_REFUSED问题
服务启动成功后如果仍出现连接拒绝,按以下顺序校验:- 执行
ss -tulnp | grep java确认WildFly实际监听的地址与端口,若服务仅绑定127.0.0.1则外部IP无法访问,需要调整启动参数将绑定地址设为0.0.0.0或对应网卡的内网IP - 核对AWS安全组规则、Ubuntu本地ufw防火墙规则,确认8080、9990端口的入方向规则放通了访问源IP段
- 查看WildFly运行日志
/opt/wildfly/standalone/log/server.log,确认启动过程中无应用部署失败、端口被占用导致的监听中断问题
- 执行
- 排查阶段优化建议
当前配置将StandardOutput设为null,会丢失启动过程的标准输出日志,排查阶段可以先注释掉该行,通过journalctl -u wildfly.service -f查看实时启动日志,问题修复后再恢复配置即可。
内容的提问来源于stack exchange,提问作者blackfyr3
相关产品推荐
相关产品推荐

