温馨提示×

CentOS Java如何进行远程部署

小樊
45
2025-12-17 09:46:58
栏目: 编程语言

CentOS 上 Java 应用的远程部署全流程

一 准备与连接

  • 准备一台 CentOS 7/8 云服务器,安装 JDK 8/11/17(推荐 OpenJDK),并准备应用包(Spring Boot 打包为 JAR,传统 Web 应用打包为 WAR)。
  • 通过 SSH 远程连接服务器:ssh username@服务器公网IP
  • 安装 JDK 示例:sudo yum install -y java-1.8.0-openjdk-devel;验证:java -versionjavac -version
  • 如需图形化传文件,可用 WinSCP/Xftp;命令行上传可用 SCPscp your-app.jar user@ip:/home/youruser/
  • 云上还需在控制台安全组放行对应端口(如 8080/80/443)。

二 部署 Spring Boot JAR(最常见)

  • 打包:在本地使用 Maven 执行 mvn clean package,产物在 target/xxx.jar
  • 上传:将 JAR 传到服务器目录(如 /home/youruser/app/)。
  • 启动与后台运行:
    • 前台:java -jar app.jar
    • 后台:nohup java -jar app.jar > app.log 2>&1 &
  • 指定环境:java -jar app.jar --spring.profiles.active=prod
  • 远程访问:确保应用监听 0.0.0.0(Spring Boot 默认),并在云安全组与系统防火墙放行 8080
  • 常用运维:
    • 查看进程:ps -ef | grep java
    • 查看日志:tail -f app.logtail -f nohup.out
    • 停止应用:kill -9 <PID>(先 ps 拿到 PID)

三 部署 WAR 到 Tomcat

  • 安装 Tomcat(示例 9.x):
    • 下载并解压:wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.53/bin/apache-tomcat-9.0.53.tar.gz && tar -xvf apache-tomcat-9.0.53.tar.gz -C /usr/local/
    • 启动:/usr/local/apache-tomcat-9.0.53/bin/startup.sh
  • 部署应用:将 WAR 复制到 webapps/,Tomcat 会自动解压部署,访问 http://ip:8080/应用名
  • 可选反向代理(Nginx,端口 80/443):
    • 安装:sudo yum install -y nginx
    • 配置示例:
      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;
        }
      }
      
    • 生效:sudo systemctl restart nginx

四 网络与防火墙放行

  • firewalld(CentOS 7/8 常用):
    • 放行端口:sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
    • 重新加载:sudo firewall-cmd --reload
    • 查看已放行:sudo firewall-cmd --list-ports
  • 云安全组:在云厂商控制台放行对应端口(如 8080/80/443),否则外网无法访问。
  • Spring Boot 监听地址:在 application.properties 设置 server.address=0.0.0.0,确保可从外部访问。

五 生产可用性与自动化建议

  • 进程托管:使用 systemd 管理 JAR,示例 /etc/systemd/system/app.service
    [Unit]
    Description=My Java App
    After=network.target
    
    [Service]
    Type=simple
    User=youruser
    ExecStart=/usr/bin/java -jar /home/youruser/app/app.jar --spring.profiles.active=prod
    Restart=always
    StandardOutput=journal
    StandardError=journal
    
    [Install]
    WantedBy=multi-user.target
    
    • 常用命令:sudo systemctl daemon-reloadsudo systemctl start appsudo systemctl enable appsudo journalctl -u app -f
  • 自动化与交付:结合 Jenkins + Docker 实现构建、镜像推送与远程部署;Docker 化可提升环境一致性与回滚效率。
  • 数据库远程:如应用连接云上 MySQL,需放行 3306,并确保数据库用户权限与网络可达。

0