将 Java 微服务发布到云服务器,通常需要进行一系列的配置和部署操作。以下是详细的步骤和所需配置,适用于常见的云平台(如阿里云、腾讯云、AWS、Azure 等)。
一、前期准备
1. 微服务打包
- Maven/Gradle 构建:确保你的微服务项目可以通过
mvn package或gradle build打包成一个可运行的 JAR 文件。 - Spring Boot 示例:
mvn clean package输出文件一般在
target/your-app.jar
二、云服务器环境配置
1. 选择云服务器(ECS / EC2)
- 推荐系统:Ubuntu 20.04 LTS / CentOS 7+ / Amazon Linux 2
- 配置建议:
- 至少 2核4G(根据业务规模调整)
- 安全组开放端口(如8080)
2. 安装 Java 运行环境
# Ubuntu 安装 OpenJDK 11 或 17
sudo apt update
sudo apt install openjdk-11-jdk -y
验证安装:
java -version
javac -version
如果使用 Spring Boot 内嵌 Tomcat,则无需额外安装 Tomcat。
三、部署微服务
1. 上传 JAR 文件
可以使用以下方式上传你的微服务 JAR 包到云服务器:
-
scp命令:scp your-app.jar user@your-server-ip:/home/user/ -
使用 FTP/SFTP 工具(FileZilla)
2. 启动微服务
nohup java -jar your-app.jar > app.log 2>&1 &
nohup表示后台运行并忽略挂断信号- 日志输出到
app.log
3. 查看日志
tail -f app.log
四、配置安全组和防火墙
1. 开放访问端口
- 在云平台控制台中找到“安全组”或“防火墙”
- 添加规则允许入站流量:
- 协议:TCP
- 端口范围:8080(或你实际使用的端口)
- 源IP:0.0.0.0/0(或限制特定 IP)
2. 防火墙设置(Linux)
如果系统有防火墙(如 UFW):
sudo ufw allow 8080/tcp
sudo ufw enable
sudo ufw status
五、域名绑定与反向(可选)
1. 绑定域名
- 购买域名并解析 A 记录指向云服务器公网 IP
2. 使用 Nginx 反向(推荐)
安装 Nginx:
sudo apt install nginx
配置 /etc/nginx/sites-available/default:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重启 Nginx:
sudo systemctl restart nginx
六、持久化运行 & 自启动(生产级)
1. 使用 systemd 管理服务
创建服务文件 /etc/systemd/system/myapp.service:
[Unit]
Description=My Spring Boot Application
After=syslog.target
[Service]
User=ubuntu
ExecStart=/usr/bin/java -jar /home/ubuntu/your-app.jar
SuccessExitStatus=143
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
查看状态:
systemctl status myapp
journalctl -u myapp
七、数据库与中间件连接(如有)
如果你的微服务依赖数据库、Redis、RabbitMQ 等:
- 数据库可以部署在同一台服务器或使用云数据库服务(如 RDS)
- 修改
application.yml中的数据库连接信息为公网地址或内网地址 - 注意防火墙是否允许数据库端口(如 3306)
八、监控与日志(进阶)
- 使用
top,htop,jstat,jvisualvm监控资源 - 日志分析工具:ELK Stack(Elasticsearch + Logstash + Kibana)
- 使用 Prometheus + Grafana 实现性能监控
九、自动部署(DevOps)
- Jenkins / GitHub Actions / GitLab CI 实现自动化构建和部署
- Docker + Kubernetes 容器化部署(适合多服务场景)
总结:Java 微服务上云关键点
| 步骤 | 内容 |
|---|---|
| 1 | 微服务打包成可执行 JAR |
| 2 | 云服务器安装 Java 和相关组件 |
| 3 | 上传 JAR 并运行 |
| 4 | 配置安全组和防火墙 |
| 5 | 域名绑定和 Nginx 配置 |
| 6 | 使用 systemd 管理服务 |
| 7 | 配置数据库连接 |
| 8 | 监控日志和性能 |
| 9 | 可选:自动化部署 |
如果你提供具体的微服务架构(比如是否使用 Spring Cloud、Nacos、Sentinel、Docker 等),我可以给出更详细的部署方案。欢迎继续提问!
PHPWP博客