在将 Java 项目部署到一个空白服务器(如刚创建的 Linux 云服务器)时,通常需要安装以下软件和依赖。具体需求可能因项目类型(如 Spring Boot、普通 Java Web 应用等)略有不同,但以下是通用且常见的步骤:
一、基础系统环境
-
操作系统
- 推荐:Ubuntu Server / CentOS / Debian(常见于云服务)
-
更新系统包
# Ubuntu/Debian sudo apt update && sudo apt upgrade -y # CentOS/RHEL sudo yum update -y -
常用工具(可选但推荐)
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、微服务等),可进一步细化部署方案。
云小栈