在Debian/Ubuntu安装Tomcat

本文详细介绍了如何在Ubuntu20.04LTS上配置Tomcat9,包括从apt仓库安装JDK和Tomcat,设置远程调试,启用APR以提升性能,以及安装和配置ApplicationManager实现WAR包一键部署。此外,还提及了开启SSL的后续步骤,以打造一个既适合开发自测又可模拟生产的环境。
摘要由CSDN通过智能技术生成

这个话题的文章已经有很多人写,但每个人起点/途径/目的都可能不一样。

先介绍我写这篇博客的场景:

  • 起点:Ubuntu 20.04 LTS x86-64 Server
  • 途径:直接从apt仓库安装软件包,并大体按照Debian推荐的方式来配置
  • 目的:可作开发自测环境(支持远程调试、支持一键WAR包部署),兼模拟生产环境(开启APR、开启SSL)

安装过程

注:下文中提到的Shell命令均不带sudo,请酌情添加sudo,或改通过用户root来执行
安装JDK

可直接从apt仓库安装OpenJDK,或下载Oracle JDK并解压到"/usr/lib/jvm"

apt-get update
apt-get install openjdk-11-jdk

设置环境变量JAVA_HOME(为了运行Tomcat)

# 编辑"/etc/profile.d/lib-home-path.sh"(重启后生效)
export JAVA_HOME=/usr/lib/jvm/jdk-11.0.11
# 或者编辑"/etc/default/tomcat9"
JAVA_HOME=/usr/lib/jvm/jdk-11.0.11
安装Tomcat
apt-get install tomcat9

注:如果是在WSL2中安装tomcat9,安装是注册systemd服务会失败,导致无法使用像service tomcat start这样的命令来启/停tomcat9。这个问题可通过启用systemd来解决,见WSL 2 - Enabling systemd

支持远程调试
# 编辑"/etc/default/tomcat9"
JAVA_OPTS="${JAVA_OPTS} -agentlib:jdwp=transport=dt_socket,address=0.0.0.0:8000,server=y,suspend=n"

验证远程调试启用成功

Tomcat启动后,通过命令`netstat -tlpn | grep -s :8080`检查8000端口是否被占用
避免在其他主机`telnet <ip> <port>`去检查,因为这样检查一次8000端口对应的进程就会退出

关于远程调试如何使用,请参见博文如Eclipse远程debug,或另行搜索

启用APR

安装Tomcat Native

apt-get install libtcnative-1

配置Tomcat Native(为了让Tomcat支持APR方式连接)

# 编辑"/var/lib/tomcat9/lib/setenv.sh"
export LD_LIBRARAY_PATH=/usr/lib/x86-64-linux-gnu
# 并通过`chmod +x setenv.sh`确保执行权限

使用APR

<!-- 编辑 server.xml, 设置useAprConnector="true",protocol="HTTP/1.1" -->
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener" useAprConnector="true"/>
<Connector ... protocol="HTTP/1.1"></Connector>

<!-- 或者直接设置protocol="...Http11AprProtocol" (APR不可用时会报错)-->
<Connector ... protocol="org.apache.coyote.http11.Http11AprProtocol"></Connector>

验证APR正在使用中

执行`service tomcat9 start`启动Tomcat。查看启动日志,如果ProtocolHandler名称带apr字样,说明APR正在使用中(名称如http-apr-0.0.0.0-8080,https-openssl-apr-0.0.0.0-8443)
一键部署WAR包

安装Tomcat 的 Application Manager, Host Manager 两个webapp

apt-get install tomcat9 tomcat9-admin

注册Application Manager用户

<!-- 编辑"/var/lib/tomcat9/tomcat-users.xml" -->
<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="manager" password="changeit" roles="manager-gui"/>
  <user username="deployer" password="changeit" roles="manager-script"/>
</tomcat-users>

设置Application Manager允许被访问的客户端IP

<!-- 编辑"/usr/share/tomcat9-admin/manager/META-INF/context.xml",根据需要调整allow的值,或者注释掉该RemoteAddrValve -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

顺便改下webapp ROOT目录的所有者,否则通过Application Manager无法把ROOT卸掉

chown -R tomcat:tomcat /var/lib/tomcat9/webapps/ROOT

在开发机上使用maven-tomcat7-plugin来快速部署war包到此Tomcat

<!-- 编辑%UserProfile%\.m2\settings.xml 或 $HOME/.m2/settings.xml -->
<servers>
  <server>
    <id>tomcat-wsl</id>
    <username>deployer</username>
    <password>changeit</password>
  </server>
</servers>

<!-- 编辑webapp项目的pom.xml -->
  <build>
    <finalName>${project.artifactId}##${project.version}</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <server>tomcat-wsl</server>
          <path>/${project.artifactId}##${project.version}</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

一键部署WAR包(其实至少要敲两个键:方向上+回车,而且至少要等到第二次部署时)

mvn tomcat7:deploy
开启SSL

开启SSL的方法,可以参见另一篇博客OpenSSL自签名SSL证书相关脚本的Tomcat章节

夜深了,先写到这

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Ansible Playbook安装Tomcat,首先需要编写一个适当的Playbook。以下是一个示例: ```yaml --- - name: Install and configure Tomcat hosts: your_host # 请将your_host替换为目标主机的名称或IP地址 become: true # 如果需要提升权限,请将其设置为true tasks: - name: Install Java apt: name: openjdk-8-jdk state: present # 确保Java已安装 become: true # 如果需要提升权限,请将其设置为true - name: Download Tomcat binary get_url: url: "http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50.tar.gz" # 替换为您所需的Tomcat版本的下载链接 dest: /tmp/tomcat.tar.gz - name: Extract Tomcat unarchive: src: /tmp/tomcat.tar.gz dest: /opt/tomcat remote_src: true - name: Set Tomcat environment variables lineinfile: path: /etc/environment line: 'CATALINA_HOME="/opt/tomcat"' state: present - name: Create Tomcat service file copy: content: | [Unit] Description=Tomcat After=network.target [Service] Type=forking Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/tomcat ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh Restart=on-failure [Install] WantedBy=multi-user.target dest: /etc/systemd/system/tomcat.service - name: Start Tomcat service systemd: name: tomcat state: started enabled: true ``` 请将上述示例中的`your_host`替换为您要安装Tomcat的目标主机的名称或IP地址。还可以根据需要修改其他任务中的参数,例如Tomcat的下载链接等。 保存以上Playbook为`install_tomcat.yml`文件。然后,使用以下命令运行Ansible Playbook: ```bash ansible-playbook install_tomcat.yml ``` Ansible将在目标主机上安装Java,下载并解压Tomcat,设置环境变量,创建Tomcat服务文件,最后启动Tomcat服务。完成后,您将能够通过Tomcat的默认端口(8080)访问Tomcat管理界面。 请注意,上述示例假定目标主机是基于Debian/Ubuntu操作系统的。如果您的目标主机是其他操作系统,请相应地修改任务以适应该操作系统的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值