阅读量:110
在Linux上部署Java应用程序通常涉及以下几个步骤:
1. 准备Java项目
- 打包项目:确保你的Java项目已经打包成可执行的JAR文件。如果你使用的是Maven,可以使用命令
mvn clean package。对于Gradle项目,使用命令gradle bootJar。
2. 安装Java环境
- 检查Java安装:在终端中运行
java -version来检查Java是否已经安装。 - 安装JDK:如果Java未安装,可以按照以下命令安装OpenJDK(以Ubuntu/Debian为例):
对于CentOS/RHEL系统,使用:sudo apt update sudo apt install openjdk-17-jdksudo yum install java-17-openjdk-devel
3. 上传JAR文件
- 上传JAR:使用
scp或SFTP工具将打包好的JAR文件上传到Linux服务器。
4. 运行Java项目
- 前台运行:直接使用
java -jar your-project.jar命令运行项目。这种方式在关闭终端后进程会停止。 - 后台运行:使用
nohup命令使进程在后台运行,并将输出重定向到日志文件:nohup java -jar your-project.jar > app.log 2>&1 & - 指定配置文件:如果需要使用特定的配置文件,可以使用
--spring.profiles.active参数:java -jar your-project.jar --spring.profiles.active=prod
5. 使用系统服务(推荐)
- 创建服务文件:使用
systemd管理服务,实现开机自启和日志管理。创建一个服务文件/etc/systemd/system/springboot-app.service并添加以下内容(根据实际路径修改):[Unit] Description=Spring Boot App After=syslog.target network.target [Service] User=your_user WorkingDirectory=/path/to/deploy ExecStart=/usr/bin/java -jar /path/to/deploy/your-project.jar Restart=always RestartSec=3 Environment="JAVA_OPTS=-Xms512m -Xmx1024m -Dspring.profiles.active=prod" [Install] WantedBy=multi-user.target - 启动并启用服务:
sudo systemctl daemon-reloads sudo systemctl start springboot-app sudo systemctl enable springboot-app - 查看状态:
sudo systemctl status springboot-app
6. 配置防火墙
- 开放端口:如果项目需要外部访问,开放相应的端口(如8080):
- Ubuntu/Debian (ufw):
sudo ufw allow 8080/tcp - CentOS/RHEL (firewalld):
sudo firewall-cmd --add-port=8080/tcp --permanents sudo firewall-cmd --reload
- Ubuntu/Debian (ufw):
7. 日志管理
- 默认日志:Spring Boot日志通常输出到
nohup.out或app.log(根据启动命令)。 - 系统服务日志:通过
journalctl查看:sudo journalctl -u springboot-app -f - 自定义日志路径:在
application.yml中配置日志路径:logging: file: path: /var/log/springboot name: app.log
8. 使用反向代理(可选)
- Nginx配置示例:
这样可以通过域名访问或启用HTTPS。server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
通过以上步骤,你可以在Linux系统上成功部署Java应用程序。根据具体需求,你可能还需要进行其他配置,如数据库连接、安全设置等。