菜鸟科技网

mac下Tomcat命令行启动如何操作?

在 macOS 系统中通过命令行启动 Tomcat 服务器是开发和运维过程中常见的操作,尤其适合需要自动化部署或远程管理服务器的场景,本文将详细介绍从环境准备到命令行启动 Tomcat 的完整流程,包括常见问题处理和优化建议,帮助用户高效完成 Tomcat 服务的配置与管理。

mac下Tomcat命令行启动如何操作?-图1
(图片来源网络,侵删)

环境准备:安装 Java 和 Tomcat

在启动 Tomcat 之前,需确保系统已安装 Java 运行环境(JRE)和 Tomcat 服务器,macOS 通常自带 OpenJDK,但建议手动安装最新版本的 LTS(长期支持)版 Java 以确保兼容性。

安装 Java

通过 Homebrew 安装 OpenJDK(推荐方式):

brew install openjdk@17

安装完成后,配置环境变量,打开终端,编辑 ~/.zshrc(若使用 Zsh shell)或 ~/.bash_profile(若使用 Bash shell):

echo 'export JAVA_HOME=/usr/local/opt/openjdk@17' >> ~/.zshrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

验证 Java 安装:

mac下Tomcat命令行启动如何操作?-图2
(图片来源网络,侵删)
java -version

若输出 Java 版本信息,则表示安装成功。

下载并解压 Tomcat

从 Apache 官网(https://tomcat.apache.org/)下载适用于 macOS 的 Tomcat 压缩包(如 apache-tomcat-9.0.82.tar.gz),并将其解压到指定目录(如 /usr/local/):

cd /usr/local
tar -zxzf ~/Downloads/apache-tomcat-9.0.82.tar.gz
mv apache-tomcat-9.0.82 tomcat9

为方便管理,可设置 Tomcat 环境变量:

echo 'export CATALINA_HOME=/usr/local/tomcat9' >> ~/.zshrc
echo 'export PATH=$CATALINA_HOME/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

命令行启动 Tomcat 的核心步骤

Tomcat 的启动脚本位于 $CATALINA_HOME/bin 目录,startup.sh 用于启动服务,shutdown.sh 用于停止服务,以下是详细操作流程:

mac下Tomcat命令行启动如何操作?-图3
(图片来源网络,侵删)

赋予执行权限

首次使用时,需为 Tomcat 的脚本文件添加可执行权限:

chmod +x $CATALINA_HOME/bin/*.sh

启动 Tomcat

执行 startup.sh 脚本:

$CATALINA_HOME/bin/startup.sh

若启动成功,终端会输出类似以下信息:

Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/local/opt/openjdk@17
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.

验证服务状态

Tomcat 默认监听 8080 端口,可通过以下方式验证服务是否运行:

  • 方式1:检查端口占用
    lsof -i :8080

    若输出包含 java 进程,则表示 Tomcat 正在运行。

  • 方式2:访问 Web 页面 在浏览器中输入 http://localhost:8080,若显示 Tomcat 欢迎页面,则启动成功。

停止 Tomcat

执行 shutdown.sh 脚本:

$CATALINA_HOME/bin/shutdown.sh

停止后,再次执行 lsof -i :8080 应无输出。

常见启动问题及解决方案

在命令行启动 Tomcat 时,可能会遇到以下问题,以下是具体排查方法:

问题现象 可能原因 解决方案
启动时报错 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined Java 环境变量未正确配置 检查 JAVA_HOME 是否指向 JDK 安装目录,可通过 echo $JAVA_HOME 验证;若未设置,参考本文“环境准备”部分重新配置。
端口冲突(Address already in use: bind 8080 端口被其他进程占用 执行 lsof -i :8080 查占用进程,使用 kill -9 <PID> 终止进程;或修改 Tomcat 端口(编辑 $CATALINA_HOME/conf/server.xml,将 <Connector port="8080" 改为其他端口)。
启动后无法访问页面 防火墙拦截或 Tomcat 未正确绑定地址 检查系统防火墙设置(如 System Preferences > Security & Privacy > Firewall);确保 server.xmladdress 属性为 0.0.0(允许所有 IP 访问)。
日志报错 Failed configure endpoint JVM 内存不足 调整 JVM 内存参数,编辑 $CATALINA_HOME/bin/setenv.sh(若文件不存在则新建),添加以下内容:
export JAVA_OPTS="-Xms512m -Xmx1024m"(设置初始堆内存 512MB,最大堆内存 1GB)。

进阶配置:优化命令行启动

自定义 JVM 参数

$CATALINA_HOME/bin/setenv.sh 中配置 JVM 参数,如内存大小、垃圾回收策略等:

#!/bin/bash
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

重启 Tomcat 后,新参数生效。

后台启动与日志管理

若希望 Tomcat 在后台运行并记录日志,可使用 nohup 命令:

nohup $CATALINA_HOME/bin/startup.sh > $CATALINA_HOME/logs/startup.log 2>&1 &
  • nohup:使进程在终端关闭后继续运行。
  • > startup.log:将标准输出重定向到日志文件。
  • 2>&1:将错误输出也重定向到同一文件。

查看日志:

tail -f $CATALINA_HOME/logs/catalina.out

通过 systemd 管理服务(适用于 macOS 10.14+)

虽然 macOS 默认使用 launchd,但可通过创建 plist 文件实现类似 systemd 的管理:

  1. 创建服务文件:
    sudo nano /Library/LaunchDaemons/org.apache.tomcat.plist
  2. 添加以下内容(根据实际路径修改 CATALINA_HOME):
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>org.apache.tomcat</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/tomcat9/bin/startup.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
    </dict>
    </plist>
  3. 加载并启动服务:
    sudo launchctl load /Library/LaunchDaemons/org.apache.tomcat.plist
    sudo launchctl start org.apache.tomcat

相关问答 FAQs

问题1:如何在 macOS 中通过命令行查看 Tomcat 的实时日志?
解答:Tomcat 的实时日志位于 $CATALINA_HOME/logs/catalina.out,可通过 tail 命令实时查看日志内容,

tail -f $CATALINA_HOME/logs/catalina.out

若需查看特定时间段的日志,可结合 grep 过滤关键字,

grep "ERROR" $CATALINA_HOME/logs/catalina.out

问题2:修改 Tomcat 端口后,如何确保命令行启动时使用新端口?
解答:Tomcat 的端口配置文件为 $CATALINA_HOME/conf/server.xml,找到 <Connector> 标签中的 port 属性,将其修改为目标端口(如 8081):

<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

保存后,执行 shutdown.sh 停止旧服务,再通过 startup.sh 重新启动即可,启动后可通过 lsof -i :8081 验证新端口是否生效。

分享:
扫描分享到社交APP
上一篇
下一篇