bash脚本入门指南
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
在云计算时代,Java 作为企业级应用开发的“常青树”,其与云服务器的深度融合已成为现代开发者的核心竞争力,无论是初创团队快速上线 MVP,还是大型企业构建弹性伸缩、高可用的分布式系统,掌握 Java 云服务器的完整部署流程,都是迈向高效运维与架构升级的关键一步。
本文将以主流云平台(阿里云、腾讯云、AWS)为实践场景,手把手带你完成从环境初始化、安全加固、性能调优,到自动化部署、监控告警、灾备策略的全流程闭环操作,助你打造稳定、安全、高效的 Java 云端服务生态。
选型先行:合理选择云服务器实例
没有最好的配置,只有最合适的方案。
- ✅ 轻量级项目(如 Spring Boot 微服务、个人博客):推荐 1核2G + 40GB SSD 系统盘起步,性价比高,适合开发测试。
- ✅ 中大型应用(高并发 Web、API 网关、数据处理):建议 4核8G 起步,搭配高性能 SSD 或 ESSD 云盘,保障 I/O 吞吐。
- ✅ 内存密集型或 JVM 应用:优先选择内存优化型实例(如阿里云 ecs.r6、AWS r5),避免频繁 Full GC 导致服务抖动。
📌 操作系统推荐:
- Ubuntu 22.04 LTS:社区活跃、包管理便捷、对 OpenJDK 支持极佳。
- CentOS Stream 9(替代 CentOS 7/8):Red Hat 官方持续更新,企业级稳定性首选。
- 避免使用已停止维护的老版本系统,以防安全漏洞无法修复。
环境搭建:夯实基础运行环境
安装 Java 运行时(OpenJDK 推荐)
sudo apt update && sudo apt upgrade -y sudo apt install openjdk-17-jdk -y java -version # 验证安装成功
⚠️ 如需 Oracle JDK(商用许可限制),请前往官网下载并手动配置:
export JAVA_HOME=/usr/lib/jvm/java-17-oracle export PATH=$JAVA_HOME/bin:$PATH echo 'export JAVA_HOME=/usr/lib/jvm/java-17-oracle' >> ~/.bashrc source ~/.bashrc
安装构建工具 Maven / Gradle
推荐使用 Maven 管理依赖与生命周期:
sudo apt install maven -y mvn -v # 查看版本确认安装
💡 小贴士:国内用户可配置阿里云 Maven 镜像加速下载: 编辑
~/.m2/settings.xml,添加<mirror>节点指向https://maven.aliyun.com/repository/public
可选:部署独立 Web 容器(Tomcat/Nginx)
虽然 Spring Boot 内嵌 Tomcat,但在生产环境中,我们仍建议:
- 使用 Nginx 作反向代理,实现负载均衡、静态资源缓存、SSL 终止;
- 或部署 独立 Tomcat,便于多应用隔离管理。
sudo apt install tomcat9 nginx -y sudo systemctl enable --now tomcat9 nginx
安全加固:筑牢云端第一道防线
云服务器默认安全组策略较严格,必须按需开放端口:
| 端口 | 用途 | 建议策略 |
|---|---|---|
| 22 | SSH 远程登录 | 仅限办公 IP 白名单访问 |
| 80/443 | HTTP/HTTPS 服务 | 全网开放,配合 WAF 防护 |
| 8080 | Spring Boot 应用端口 | 可通过 Nginx 代理隐藏 |
| 3306 | MySQL 数据库 | 仅允许本机或内网访问 |
🔒 最佳实践:
- 禁用 root 直接登录:
PermitRootLogin no- 创建专用运维账户:
adduser deployer- 启用密钥认证 + 禁用密码登录
- 开启云平台“主机防火墙”或部署
ufw增强本地防护
项目部署:从上传到进程守护
上传应用包(JAR/WAR)
推荐使用 scp 或 rsync 上传:
scp target/myapp.jar user@your-server-ip:/home/user/app/
编写启动脚本 start.sh
#!/bin/bash nohup java -jar \ -Dspring.profiles.active=prod \ -Dserver.port=8080 \ -Xms512m -Xmx2g \ myapp.jar > app.log 2>&1 & echo $! > app.pid echo "应用已启动,PID: $(cat app.pid)"
赋予执行权限并运行:
chmod +x start.sh ./start.sh
(强烈推荐)使用 systemd 实现进程守护
创建服务文件 /etc/systemd/system/myapp.service:
[Unit] Description=My Java Spring Boot Application After=network.target [Service] Type=simple User=appuser Group=appuser WorkingDirectory=/home/appuser/app ExecStart=/usr/bin/java -jar -Xms512m -Xmx2g myapp.jar Restart=always RestartSec=10 SuccessExitStatus=143 [Install] WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable myapp sudo systemctl start myapp sudo systemctl status myapp # 查看运行状态
可观测性建设:监控 + 日志 + 健康检查
部署不是终点,稳定运行才是目标。
✅ 监控体系搭建
- Prometheus + Grafana:实时监控 JVM 内存、GC 频率、线程池、接口 QPS。
- Spring Boot Actuator:暴露
/actuator/health、/actuator/metrics等端点供采集。 - Node Exporter:采集服务器 CPU、内存、磁盘、网络指标。
✅ 日志集中管理
- 使用 ELK Stack(Elasticsearch + Logstash + Kibana)或更轻量的 Loki + Promtail + Grafana。
- 配置日志轮转(logrotate),防止磁盘爆满。
- 关键错误日志设置企业微信/钉钉告警推送。
自动化与持续交付(CI/CD)
告别手动部署,拥抱 DevOps!
- 使用 Jenkins 或 GitLab CI/CD 构建流水线:
代码提交 → 自动编译 → 单元测试 → 打包 → 上传服务器 → 重启服务
- 配置 Webhook 触发构建,实现分钟级发布。
- 结合 Ansible 或 Shell 脚本 实现多服务器批量部署。
🎯 示例 GitLab CI 片段:
deploy_prod: stage: deploy script: - scp target/*.jar user@$SERVER:/app/ - ssh user@$SERVER "systemctl restart myapp" only: - main
备份与灾备:数据无价,预防胜于抢救
- 🗃️ 每日定时备份:数据库快照 + 应用配置 + 日志归档
- ☁️ 异地存储:上传至对象存储(OSS/COS/S3),设置生命周期自动清理
- 🔄 恢复演练:每季度模拟故障恢复,确保备份有效
示例备份脚本 + crontab:
# backup.sh tar -czf /backup/app_$(date +%Y%m%d).tar.gz /home/appuser/app/ aws s3 cp /backup/app_*.tar.gz s3://my-backup-bucket/ # 添加定时任务 0 2 * * * /home/scripts/backup.sh >/dev/null 2>&1
成本优化:花小钱办大事
- 💰 计费模式灵活切换:


