温馨提示×

Java在Linux上如何部署

小樊
44
2025-04-15 07:10:01
栏目: 编程语言

在Linux上部署Java应用程序通常涉及以下几个步骤:

1. 准备Java项目

  • 打包项目:确保你的Java项目已经打包成可执行的JAR文件。如果你使用的是Maven,可以使用命令 mvn clean package。对于Gradle项目,使用命令 gradle bootJar

2. 安装Java环境

  • 检查Java安装:在终端中运行 java -version 来检查Java是否已经安装。
  • 安装JDK:如果Java未安装,可以按照以下命令安装OpenJDK(以Ubuntu/Debian为例):
    sudo apt update
    sudo apt install openjdk-17-jdk
    
    对于CentOS/RHEL系统,使用:
    sudo yum install java-17-openjdk-devel
    

3. 上传JAR文件

  • 上传JAR:使用 scpSFTP 工具将打包好的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
      

7. 日志管理

  • 默认日志:Spring Boot日志通常输出到 nohup.outapp.log(根据启动命令)。
  • 系统服务日志:通过 journalctl 查看:
    sudo journalctl -u springboot-app -f
    
  • 自定义日志路径:在 application.yml 中配置日志路径:
    logging:
      file:
        path: /var/log/springboot
        name: app.log
    

8. 使用反向代理(可选)

  • Nginx配置示例
    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;
        }
    }
    
    这样可以通过域名访问或启用HTTPS。

通过以上步骤,你可以在Linux系统上成功部署Java应用程序。根据具体需求,你可能还需要进行其他配置,如数据库连接、安全设置等。

0