将 Java 微服务发布到云服务器涉及多个方面的配置,确保服务能够稳定、安全、高效地运行。以下是详细的配置清单和建议:
一、云服务器基础环境配置
-
选择合适的云服务商
- 阿里云、腾讯云、华为云、AWS、Azure、Google Cloud 等。
-
操作系统
- 推荐使用 Linux(如 Ubuntu 20.04/22.04、CentOS 7/8、Alibaba Cloud Linux)。
- 确保系统更新及时:
sudo apt update && sudo apt upgrade或yum update。
-
Java 运行环境
- 安装 JDK(推荐 OpenJDK 11 或 17,LTS 版本):
sudo apt install openjdk-17-jdk # Ubuntu/Debian sudo yum install java-17-openjdk # CentOS/RHEL - 验证安装:
java -version javac -version
- 安装 JDK(推荐 OpenJDK 11 或 17,LTS 版本):
-
设置 JAVA_HOME 环境变量
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH建议写入
/etc/profile或用户.bashrc文件中。
二、微服务部署方式
方式1:直接运行 JAR 包(Spring Boot 示例)
- 将微服务打包为可执行 JAR:
mvn clean package - 上传 JAR 到服务器(使用
scp、rsync或 SFTP 工具):scp target/myapp.jar user@your-server-ip:/opt/app/ - 启动服务:
nohup java -jar myapp.jar --spring.profiles.active=prod > app.log 2>&1 & -
使用
systemd更好地管理服务(推荐):
创建/etc/systemd/system/myapp.service:[Unit] Description=My Java Microservice After=network.target [Service] User=myuser ExecStart=/usr/bin/java -jar /opt/app/myapp.jar --spring.profiles.active=prod SuccessExitStatus=143 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target启用并启动:
systemctl daemon-reload systemctl enable myapp systemctl start myapp
方式2:Docker 容器化部署(推荐)
- 编写
Dockerfile:FROM openjdk:17-jre-slim COPY target/myapp.jar /app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"] - 构建并推送镜像:
docker build -t myapp:latest . docker tag myapp:latest your-registry/myapp:v1 docker push your-registry/myapp:v1 - 在云服务器上拉取并运行:
docker run -d -p 8080:8080 --name myapp myapp:latest - 可结合 Docker Compose 或 Kubernetes 管理多个微服务。
三、网络与安全配置
-
防火墙设置
- 开放所需端口(如 8080、9090、80、443):
sudo ufw allow 8080/tcp # Ubuntu sudo firewall-cmd --permanent --add-port=8080/tcp # CentOS sudo firewall-cmd --reload
- 开放所需端口(如 8080、9090、80、443):
-
云平台安全组
- 在阿里云、腾讯云等控制台配置安全组规则,允许外部访问指定端口。
-
反向X_X(Nginx)
-
安装 Nginx 并配置反向X_X:
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; } } - 支持 HTTPS(使用 Let’s Encrypt 免费证书)。
-
四、数据库与中间件连接
-
数据库配置
- 可使用云数据库(如 RDS)或自建 MySQL/PostgreSQL。
- 修改微服务配置文件(
application-prod.yml):spring: datasource: url: jdbc:mysql://rds-host:3306/mydb?useSSL=false&serverTimezone=UTC username: user password: password
-
Redis、MQ 等中间件
- 使用云 Redis、RabbitMQ、Kafka 服务,或自行部署。
五、监控与日志
-
日志管理
- 日志输出到文件,配合
logrotate管理大小。 - 使用 ELK(Elasticsearch + Logstash + Kibana)或 Loki + Grafana 集中收集日志。
- 日志输出到文件,配合
-
健康检查与监控
- Spring Boot Actuator 提供
/actuator/health端点。 - 配合 Prometheus + Grafana 监控 JVM、请求量、响应时间等。
- Spring Boot Actuator 提供
六、高可用与扩展(进阶)
-
负载均衡
- 使用 Nginx、HAProxy 或云负载均衡器(SLB)分发流量。
-
多实例部署
- 多台服务器部署相同微服务,避免单点故障。
-
自动伸缩(Auto Scaling)
- 结合云平台的弹性伸缩策略,根据 CPU/内存自动增减实例。
-
服务注册与发现(如 Eureka、Nacos、Consul)
- 适用于大规模微服务架构。
七、CI/CD 自动化(推荐)
- 使用 Jenkins、GitLab CI、GitHub Actions 实现自动化构建、测试、部署。
- 示例流程:
Git Push → CI 构建 → 单元测试 → 打包 → SCP/Docker Push → 云服务器部署
总结:最小必要配置清单
| 项目 | 说明 |
|---|---|
| 操作系统 | Ubuntu/CentOS 最新版 |
| JDK | OpenJDK 11/17 |
| 防火墙 | 开放应用端口 |
| 安全组 | 云平台配置允许访问 |
| 启动方式 | systemd 或 Docker |
| 反向X_X | Nginx(可选) |
| 数据库 | RDS 或本地安装 |
| 日志 | 文件输出 + 定期归档 |
| 备份 | 定期备份代码、数据、配置 |
如果你提供具体的技术栈(如 Spring Cloud、Dubbo、是否使用 Kubernetes),我可以给出更精准的配置建议。
云服务器