温馨提示×

Debian上Tomcat虚拟主机怎么配置

小樊
38
2026-01-04 12:05:26
栏目: 云计算

Debian 上 Tomcat 虚拟主机配置指南

一 前置准备

  • 安装 JavaTomcat(Debian 11/12 可直接使用包管理器安装 tomcat9;若手动安装,请准备 JDK 并创建专用系统用户)。
  • 规划目录:为每个站点准备应用目录(如 /var/www/example.com/opt/tomcat/webapps/example.com),并确保 tomcat 用户对其有读写权限。
  • 网络与解析:开放防火墙的 8080/80/443 端口;将域名 example.comA 记录指向服务器,或在测试环境写入 /etc/hosts
  • 可选:如需对外仅暴露 80/443,建议前置 Apache/Nginx 做反向代理或 AJP 连接。

二 方案一 仅用 Tomcat 的 Host 方式(直接 8080 端口)

  • 编辑 server.xml(Debian 包安装通常为 /etc/tomcat9/server.xml;手动安装为 $CATALINA_HOME/conf/server.xml),在 内新增
<Host name="example.com" appBase="webapps/example"
      unpackWARs="true" autoDeploy="true">
  <Alias>www.example.com</Alias>
  <!-- 将 ROOT 应用指向外部目录 -->
  <Context path="" docBase="/var/www/example.com" reloadable="true"/>
</Host>
  • 创建目录并部署应用:
sudo mkdir -p /var/www/example.com
echo "<h1>Hello example.com</h1>" | sudo tee /var/www/example.com/index.html
sudo chown -R tomcat:tomcat /var/www/example.com
# 如需部署 WAR,放入:/opt/tomcat/webapps/example/
  • 重启 Tomcat 并验证:
sudo systemctl restart tomcat9
# 访问:http://example.com:8080/
  • 说明:每个域名对应一个 Host;如需多个站点,重复添加 并使用不同 appBase/docBase

三 方案二 Apache 反向代理或 AJP 方式(端口 80/443)

  • 安装组件并启用模块:
sudo apt update
sudo apt install tomcat9 apache2 libapache2-mod-jk
sudo a2enmod jk proxy proxy_http ssl
  • 配置 workers.properties(常见路径:/etc/libapache2-mod-jk/workers.properties/etc/apache2/workers.properties):
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
  • 配置 Apache 虚拟主机(启用 AJP 转发):
<VirtualHost *:80>
  ServerName www.example.com
  JkMount /* worker1
  ErrorLog ${APACHE_LOG_DIR}/example_error.log
  CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>
  • 启用站点并重启:
sudo a2ensite your-site.conf   # 文件名自定义
sudo systemctl restart apache2
# 访问:http://www.example.com/
  • 如需 HTTPS,在 Apache 中启用 SSL 并配置证书(端口 443),保持 JkMount 规则不变。

四 常见问题与排查

  • 目录权限:确保 /var/www/example.comappBase 目录属主为 tomcat:tomcat,否则会出现 403/404
  • 配置生效:修改 server.xml 后必须重启 Tomcat;修改 Apache 虚拟主机需执行 a2ensite 并重启 Apache。
  • 端口连通:确认防火墙放行 8080/80/443;云服务器还需在安全组放行对应端口。
  • 本地测试:在 /etc/hosts 添加 “127.0.0.1 example.com”,再用 curl 验证:
curl -I http://example.com:8080/
curl -I http://www.example.com/
  • 日志定位:Tomcat 日志在 $CATALINA_HOME/logs/(如 catalina.outlocalhost.log*);Apache 日志在 /var/log/apache2/
  • 多站点建议:为每个站点使用独立的 Host/appBase,避免应用相互覆盖。

0