加油
努力

部署Java项目到空白服务器时必须安装哪些软件和依赖?

在将 Java 项目部署到一个空白服务器(如刚创建的 Linux 云服务器)时,通常需要安装以下软件和依赖。具体需求可能因项目类型(如 Spring Boot、普通 Java Web 应用等)略有不同,但以下是通用且常见的步骤:


一、基础系统环境

  1. 操作系统

    • 推荐:Ubuntu Server / CentOS / Debian(常见于云服务)
  2. 更新系统包

    # Ubuntu/Debian
    sudo apt update && sudo apt upgrade -y
    
    # CentOS/RHEL
    sudo yum update -y
  3. 常用工具(可选但推荐)

    sudo apt install -y curl wget vim git net-tools htop

二、Java 运行环境(JRE/JDK)

大多数 Java 项目需要 Java 环境运行。

1. 安装 OpenJDK(以 OpenJDK 17 为例)

# Ubuntu/Debian
sudo apt install -y openjdk-17-jdk

# CentOS/RHEL
sudo yum install -y java-17-openjdk-devel

2. 验证安装

java -version
javac -version

3. 设置 JAVA_HOME 环境变量(重要!)

编辑配置文件:

sudo vim /etc/environment

添加:

JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"

然后加载:

source /etc/environment
echo $JAVA_HOME

注意路径可能因系统版本而异,可通过 update-alternatives --config java 查看实际路径。


三、构建工具(如需从源码编译)

如果项目是以源码形式上传(如 Git 仓库),还需要构建工具:

1. Maven

sudo apt install -y maven
mvn -version

2. Gradle(可选)

wget https://services.gradle.org/distributions/gradle-8.5-bin.zip -P /tmp
sudo unzip -d /opt/gradle /tmp/gradle-8.5-bin.zip

然后配置环境变量(类似 JAVA_HOME)。


四、Web 服务器或应用服务器(视项目而定)

情况1:Spring Boot 内嵌 Tomcat(最常见)

  • 不需要额外安装 Tomcat,直接运行 JAR 即可。
  • 示例启动命令:
    nohup java -jar myapp.jar > app.log 2>&1 &

情况2:传统 WAR 包部署

需要安装外部 Servlet 容器:

安装 Tomcat
sudo apt install -y tomcat9 tomcat9-admin

然后将 WAR 文件放入 /var/lib/tomcat9/webapps/


五、数据库(根据项目需要)

常见数据库及安装方式:

数据库 安装命令
MySQL sudo apt install -y mysql-server
PostgreSQL sudo apt install -y postgresql
Redis sudo apt install -y redis-server
MongoDB 添加源后安装

安装后需配置用户、密码、远程访问(注意安全)。


六、反向X_X(可选但推荐)

用于暴露服务、支持 HTTPS、负载均衡等。

Nginx 安装

sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

配置示例(/etc/nginx/sites-available/myapp):

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;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

七、防火墙配置

开放必要端口(如 80, 443, 8080):

# Ubuntu 使用 ufw
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22
sudo ufw enable

# CentOS 使用 firewalld
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

八、守护进程管理(推荐)

避免程序退出后服务中断。

使用 systemd 管理 Java 服务

创建服务文件:

sudo vim /etc/systemd/system/myapp.service

内容示例:

[Unit]
Description=My Java Application
After=network.target

[Service]
Type=simple
User=ubuntu
ExecStart=/usr/bin/java -jar /home/ubuntu/myapp.jar
Restart=always
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

九、其他可能依赖

  • SSL 证书(Let’s Encrypt + Certbot)
  • 监控工具(如 Prometheus、Zabbix)
  • 日志轮转(logrotate)
  • 备份脚本

总结:最小必要安装清单

软件/组件 是否必须 说明
Java (JDK/JRE) ✅ 必须 运行 Java 程序
Maven/Gradle ⚠️ 按需 源码编译时需要
Tomcat ⚠️ 按需 WAR 包部署才需要
Nginx ✅ 推荐 反向X_X、HTTPS
数据库 ⚠️ 按需 项目依赖才安装
systemd ✅ 推荐 服务守护
防火墙配置 ✅ 必须 开放端口

最佳实践建议

  • 使用 Docker 容器化部署可简化依赖管理。
  • 使用 CI/CD 工具(如 Jenkins、GitHub Actions)自动化部署流程。
  • 做好权限控制、日志管理和安全加固。

如有具体项目类型(如 Spring Boot、微服务等),可进一步细化部署方案。

云服务器