1. 安装Java开发工具包(JDK)
在Debian上部署Java项目前,需先安装JDK。推荐使用OpenJDK(开源且稳定),通过apt包管理器安装:
sudo apt update
sudo apt install openjdk-17-jdk # 可替换为openjdk-11-jdk等其他版本
安装完成后,验证Java是否安装成功:
java -version # 查看Java版本
javac -version # 查看Java编译器版本(若安装JDK)
若需配置环境变量(方便全局使用Java命令),可编辑/etc/profile文件,添加以下内容(根据实际安装路径调整):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # JDK安装路径
export PATH=$JAVA_HOME/bin:$PATH
保存后,运行source /etc/profile使配置生效。
2. 准备Java项目构建产物
Java项目需打包为可执行的JAR(普通Java应用)或WAR(Web应用)文件。若使用Maven,可在项目根目录运行:
mvn clean package # 清理旧构建并生成target/目录下的JAR/WAR文件
若使用Gradle,运行:
gradle build # 生成build/libs/目录下的构建产物
生成的JAR/WAR文件是部署的核心,需上传至服务器。
3. 部署Web应用(可选,适用于WAR文件)
若项目为Web应用(生成WAR文件),可使用Tomcat作为应用服务器。通过apt安装Tomcat 9:
sudo apt install tomcat9
安装完成后,Tomcat会自动启动(默认监听8080端口)。将WAR文件复制到Tomcat的webapps目录:
sudo cp /path/to/yourapp.war /var/lib/tomcat9/webapps/
Tomcat会自动解压WAR文件并部署应用。访问http://服务器IP:8080/yourapp-context-path验证部署结果。
4. 直接运行Java应用(适用于JAR文件)
若项目为普通Java应用(生成JAR文件),可通过java -jar命令运行:
java -jar /path/to/your-application.jar
若需后台运行(避免终端关闭后进程终止),可使用nohup:
nohup java -jar /path/to/your-application.jar > app.log 2>&1 &
其中,app.log为日志文件路径,可根据需要修改。
5. 配置防火墙(可选,确保端口可达)
若服务器启用了UFW防火墙,需开放应用使用的端口(如Tomcat的8080端口或Java应用的端口):
sudo ufw allow 8080/tcp # 开放8080端口
sudo ufw enable # 启用防火墙(若未启用)
验证端口是否开放:
sudo ufw status # 查看防火墙规则
6. 可选:使用Docker容器化部署
容器化可简化部署流程并提高可移植性。首先安装Docker:
sudo apt update
sudo apt install docker.io
在项目根目录创建Dockerfile(以Spring Boot JAR为例):
FROM openjdk:17-jdk-slim # 使用轻量级JDK镜像
WORKDIR /app
COPY target/your-application.jar /app/app.jar # 复制JAR文件到容器
EXPOSE 8080 # 暴露应用端口
ENTRYPOINT ["java", "-jar", "/app/app.jar"] # 启动命令
构建Docker镜像:
docker build -t your-java-app . # 构建镜像(标签为your-java-app)
运行Docker容器:
docker run -d -p 8080:8080 --name my-java-app your-java-app # 后台运行,映射端口
若需配置Nginx反向代理(将请求转发至Docker容器),编辑Nginx配置文件(/etc/nginx/sites-available/default),添加以下内容:
server {
listen 80;
server_name your_domain; # 替换为域名或IP
location / {
proxy_pass http://localhost:8080; # 转发至Docker容器
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重新加载Nginx配置:
sudo systemctl reload nginx
7. 可选:优化部署的实用技巧
java -jar your-application.jar --spring.config.location=file:/opt/config/application.yml
gcr.io/distroless/java),减少镜像体积和安全风险。-Xlog:gc*参数)和字符串拼接(使用StringBuilder替代+)。