You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

修改Tomcat默认关闭端口与指令后,如何执行停止操作?

解决Tomcat自定义关闭端口/指令后shutdown.sh报错的问题

我来帮你搞定这个困扰!你遇到的问题本质是:默认的shutdown.sh脚本仍在使用Tomcat出厂的关闭端口(8005)和指令(SHUTDOWN),但你已经在server.xml里修改了这些配置,导致脚本和服务器端的配置不匹配,所以执行时会报错。下面是几种可行的解决方法:

方法1:临时指定参数运行shutdown.sh

如果只是临时需要执行关闭操作,直接在运行脚本时带上自定义的端口和指令参数即可:

./shutdown.sh -port 你的自定义端口 -shutdown 你的自定义指令

举个例子,假设你在server.xml里的配置是:

<Server port="8006" shutdown="MY_SECRET_SHUTDOWN">

那对应的关闭命令就是:

./shutdown.sh -port 8006 -shutdown MY_SECRET_SHUTDOWN

方法2:修改shutdown.sh脚本永久适配

如果你想让脚本默认就使用自定义配置,直接修改bin/shutdown.sh文件即可:

  1. 打开shutdown.sh,找到脚本中调用catalina.sh的那一行,通常是:
    exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
    
  2. stop后面添加你的自定义端口和指令参数,修改后变成:
    exec "$PRGDIR"/"$EXECUTABLE" stop -port 8006 -shutdown MY_SECRET_SHUTDOWN "$@"
    
  3. 保存脚本,之后再运行./shutdown.sh就会自动用你的新配置了。

方法3:通过系统属性全局配置

另一种更优雅的方式是在脚本中添加系统属性,避免直接修改指令调用部分:

  1. shutdown.sh的开头(比如PRGDIR定义之后)添加以下内容:
    # 配置自定义Tomcat关闭参数
    CATALINA_OPTS="$CATALINA_OPTS \
        -Dorg.apache.catalina.Server.port=8006 \
        -Dorg.apache.catalina.Server.shutdown=MY_SECRET_SHUTDOWN"
    
  2. 如果你还配置了关闭需要身份验证(建议开启,进一步提升安全性),还要加上用户名和密码的属性:
    CATALINA_OPTS="$CATALINA_OPTS \
        -Dorg.apache.catalina.username=你的关闭用户名 \
        -Dorg.apache.catalina.password=你的关闭密码"
    
    对应的,你需要在conf/tomcat-users.xml里添加拥有manager-script权限的用户:
    <user username="shutdown_admin" password="your_secure_password" roles="manager-script"/>
    

最后提醒一下:修改完配置后,记得重启Tomcat让新的server.xml配置生效,再测试shutdown.sh是否正常工作哦。

内容的提问来源于stack exchange,提问作者user18969

火山引擎 最新活动