购买云服务器后配置 Java 项目运行环境,通常包括以下几个核心步骤。以下以 Ubuntu 20.04/22.04 和 CentOS 7/8 为例(其他发行版逻辑类似),假设你已拥有服务器 IP、用户名(如 root 或普通用户)及 SSH 登录权限。
一、基础准备:连接服务器 & 更新系统
# 通过 SSH 登录(Windows 可用 PowerShell / Git Bash;macOS/Linux 用终端)
ssh root@你的服务器IP
# 更新软件包列表(Ubuntu/Debian)
sudo apt update && sudo apt upgrade -y
# 或 CentOS/RHEL
sudo yum update -y # CentOS 7
# 或
sudo dnf update -y # CentOS 8+
二、安装 JDK(推荐 OpenJDK 17 或 21,根据项目需求)
✅ Ubuntu/Debian
# 安装 OpenJDK 17(通用稳定版)
sudo apt install openjdk-17-jdk -y
# 验证安装
java -version
javac -version
💡 若需特定版本(如 JDK 8):
sudo apt install openjdk-8-jdk -y
✅ CentOS/RHEL
# 安装 OpenJDK 17(EPEL 源可能需先启用)
sudo yum install java-17-openjdk-devel -y
# 验证
java -version
javac -version
🔔 提示:生产环境建议从 Adoptium 或 Oracle 下载官方 JDK 包手动安装,避免依赖包冲突。
三、配置环境变量(可选但推荐)
编辑 ~/.bashrc 或 /etc/profile.d/java.sh:
nano ~/.bashrc
添加以下内容(以 JDK 17 为例):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
保存后生效:
source ~/.bashrc
✅ 验证:
echo $JAVA_HOME
java -version
📌 注意:不同发行版 JDK 路径略有差异,可通过
update-alternatives --config java(Ubuntu)或alternatives --config java(CentOS)查看。
四、上传并部署 Java 项目
方式 1:直接上传 JAR/WAR 包(推荐)
# 本地打包项目为可执行 JAR(确保包含所有依赖)
# Maven: mvn clean package -DskipTests
# Gradle: ./gradlew bootJar
# 将本地 jar 上传到服务器(使用 scp 或 SFTP)
scp target/your-app.jar root@你的服务器IP:/opt/app/
# 或在服务器上解压源码 + 编译(适合有源码的情况)
# 例如:git clone your-repo.git && cd your-repo && mvn clean package
方式 2:使用 Docker(更隔离、易迁移)
# Dockerfile 示例
FROM eclipse-temurin:17-jre-alpine
COPY target/your-app.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
构建并运行:
docker build -t my-java-app .
docker run -d -p 8080:8080 --name my-app my-java-app
五、启动 Java 应用(后台运行)
✅ 推荐:使用 nohup + & 或 systemd
方法 A:简单后台运行(适合测试)
cd /opt/app
nohup java -Xms512m -Xmx1G -jar your-app.jar > app.log 2>&1 &
tail -f app.log # 实时查看日志
方法 B:创建 systemd 服务(生产环境强烈推荐)
sudo nano /etc/systemd/system/my-java-app.service
内容示例:
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -Xms512m -Xmx1G -jar your-app.jar
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable my-java-app
sudo systemctl start my-java-app
# 查看状态与日志
sudo systemctl status my-java-app
journalctl -u my-java-app -f
六、防火墙与安全组配置
🔐 云服务器安全组(控制台操作)
在云厂商控制台(阿里云/腾讯云/AWS 等)开放端口(如 8080、80、443)。
🔥 服务器内部防火墙(如需)
Ubuntu (UFW)
sudo ufw allow 8080/tcp
sudo ufw enable
CentOS (firewalld)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
七、补充建议(生产环境必备)
| 类别 | 建议 |
|---|---|
| 监控 | 集成 Prometheus + Grafana,或云厂商自带监控(如阿里云 CloudMonitor) |
| 日志 | 使用 logback-spring.xml + ELK/云日志服务(SLS/CLS)集中管理 |
| 备份 | 定期备份数据库、配置文件、JAR 包至 OSS/S3 |
| HTTPS | 使用 Nginx 反向X_X + Let’s Encrypt 免费证书 |
| 自动重启 | 已在 systemd 中设置 Restart=on-failure |
| 资源限制 | 通过 -Xms/-Xmx 控制 JVM 内存,避免 OOM |
✅ 快速检查清单
- [ ] JDK 版本正确且可执行
- [ ] 环境变量配置无误
- [ ] 项目已上传/编译成功
- [ ] 应用能后台稳定运行
- [ ] 安全组 & 防火墙已放行对应端口
- [ ] 日志输出正常,无报错堆栈
- [ ] (可选)Nginx 反向X_X + HTTPS 已配置
需要我根据你的具体场景(如:Spring Boot 微服务、多实例集群、K8s 部署、MySQL 配套安装等)提供定制化方案吗?欢迎补充细节 😊
云知识