Java Web应用在Debian上如何部署
导读:在 Debian 上部署 Java Web 应用的标准流程 一 准备与安装 Java 更新系统并安装 OpenJDK(推荐 OpenJDK 11/17 LTS): 安装运行时与编译环境:sudo apt update &&am...
在 Debian 上部署 Java Web 应用的标准流程
一 准备与安装 Java
- 更新系统并安装 OpenJDK(推荐 OpenJDK 11/17 LTS):
- 安装运行时与编译环境:sudo apt update & & sudo apt install -y default-jdk
- 或指定版本:sudo apt install -y openjdk-11-jdk 或 openjdk-17-jdk
- 验证安装:java -version、javac -version
- 管理多版本与设置默认版本:
- 交互选择:sudo update-alternatives --config java
- 非交互注册:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 300
- 配置 JAVA_HOME(系统级,推荐写入 /etc/environment):
- 编辑:echo ‘JAVA_HOME=“/usr/lib/jvm/java-11-openjdk-amd64”’ | sudo tee -a /etc/environment
- 使生效:source /etc/environment & & echo $JAVA_HOME
- 说明:路径中的 java-11-openjdk-amd64 可能因版本/架构不同而异,请以实际安装为准。
二 方式一 传统部署 Tomcat 运行 WAR
- 安装 Tomcat(示例为 Tomcat 9):sudo apt install -y tomcat9
- 启动与开机自启:sudo systemctl enable --now tomcat9
- 部署应用:将 WAR 复制到 webapps 目录,Tomcat 会自动解压部署
- sudo cp /path/to/app.war /var/lib/tomcat9/webapps/
- 访问验证:浏览器打开 http://服务器IP:8080/(应用上下文路径即 WAR 文件名或 ROOT)
- 防火墙放行(如使用 ufw):sudo ufw allow 8080/tcp
- 常用运维:
- 查看状态:sudo systemctl status tomcat9
- 重启:sudo systemctl restart tomcat9
- 提示:若使用包管理器安装的 Tomcat,通常已配置为开机自启并监听 8080 端口。
三 方式二 运行可执行 JAR(Spring Boot 等)
- 准备可执行 JAR(内置 Web 容器),上传至服务器
- 启动示例(前台,便于排错):java -jar /opt/app/myapp.jar
- 以服务方式运行(推荐 systemd):
- 创建服务文件:sudo nano /etc/systemd/system/myapp.service
- 示例内容(按需调整路径与 JVM 参数):
- [Unit]
- Description=My Java Web App
- After=network.target
- [Service]
- Type=simple
- User=www-data
- ExecStart=/usr/bin/java -Xms512m -Xmx1g -jar /opt/app/myapp.jar
- SuccessExitStatus=143
- Restart=always
- [Install]
- WantedBy=multi-user.target
- [Unit]
- 启用与启动:sudo systemctl daemon-reload & & sudo systemctl enable --now myapp
- 访问验证:http://服务器IP:8080/(Spring Boot 默认端口通常为 8080)
- 说明:JVM 参数如 -Xms/-Xmx 可按内存与负载调整。
四 方式三 容器化部署 Docker + Nginx 反向代理
- 安装 Docker(Debian 官方仓库示例):
- curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- echo “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- sudo apt update & & sudo apt install -y docker-ce docker-ce-cli containerd.io
- 运行应用容器(示例一:Tomcat)
- docker run -d --name mytomcat -p 8080:8080 tomcat:9
- 运行应用容器(示例二:Spring Boot JAR)
- 构建镜像(示例 Dockerfile,放于应用根目录):
- FROM eclipse-temurin:17-jre
- WORKDIR /app
- COPY target/myapp.jar app.jar
- EXPOSE 8080
- ENTRYPOINT [“java”,“-jar”,“/app/app.jar”]
- 构建与运行:
- docker build -t myapp .
- docker run -d --name myapp -p 8080:8080 myapp
- 构建镜像(示例 Dockerfile,放于应用根目录):
- 安装与配置 Nginx 反向代理(对外 80/443,转发至 8080):
- 安装:sudo apt install -y nginx
- 配置示例(/etc/nginx/sites-available/default):
- server {
- listen 80;
- server_name your_domain;
- location / {
- proxy_pass http://127.0.0.1:8080;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- }
- }
- server {
- 生效:sudo systemctl reload nginx
- 访问验证:http://your_domain 或 http://服务器IP。
五 验证与常见问题
- 快速验证
- Tomcat:访问 http://IP:8080/ 或 http://IP:8080/应用名
- Spring Boot/JAR:访问 http://IP:8080/
- Nginx 反向代理:访问 http://域名(应转发至 8080)
- 常见问题与处理
- Java 命令无效或版本不对:检查 JAVA_HOME/PATH,用 update-alternatives 切换默认版本
- 端口未放行:开放 8080(或 80/443)与云安全组规则;本地防火墙如 ufw 放行对应端口
- Tomcat 未解压 WAR:确认 WAR 已放入正确目录(如 /var/lib/tomcat9/webapps/),检查 catalina.out 日志
- 权限问题:以合适用户运行(如 Tomcat 默认使用 tomcat 用户,JAR 服务可用 www-data),确保对工作目录有读写权限
- 内存不足或 GC 频繁:调整 -Xms/-Xmx,开启 GC 日志,必要时更换垃圾回收器并压测优化。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Java Web应用在Debian上如何部署
本文地址: https://pptw.com/jishu/758147.html
