一、服务器基础环境准备
1.1 安装宝塔面板
-
连接服务器:使用 SSH 工具(如 Xshell、Putty 或腾讯云/阿里云的 Web Shell)连接你的服务器。
-
执行安装命令 :
根据你的操作系统,复制并执行以下命令
-
CentOS/RedHat/Fedora:
# CentOS/RedHat/Fedora yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh # Ubuntu/Debian wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh安装完成后,务必保存终端输出的面板访问地址、用户名和密码。
1.2 安全初始化
-
修改面板默认端口 :登录宝塔面板 → 面板设置 → 端口改为
18888或其他高位端口。 -
开启BasicAuth认证:面板设置 → 开启BasicAuth,增加一层访问保护。
-
配置防火墙 :在宝塔左侧 「安全」 菜单中,只放行必要端口(SSH、80、443、面板端口),微服务内部端口(如8081-8090)不要添加到放行列表。
-
服务器安全组:在云服务商控制台同步放行上述端口。
二、基础环境软件安装
在宝塔面板左侧点击 「软件商店」,搜索并安装以下软件:
| 软件 | 版本建议 | 安装方式 | 用途 |
|---|---|---|---|
| Nginx | 最新稳定版 | 软件商店一键安装 | Web服务器/反向代理 |
| MySQL | 5.7 或 8.0 | 软件商店一键安装 | 业务数据库 |
| OpenJDK | 1.8 / 11 / 17 | 在「Java项目」中安装更佳 | Java运行环境 |
| Docker管理器 | 最新版 | 软件商店安装插件 | 容器化管理 |
| Jenkins | 最新LTS版 | ① 软件商店直接安装 ② Docker方式安装(推荐) | CI/CD持续集成/自动化部署 |
| Nacos | 最新稳定版 | ① 软件商店搜索安装 ② Docker管理器拉取镜像运行 ③ 手动上传安装包部署 | 服务注册发 |
2.1 配置Java环境
-
点击左侧 「网站」 → 切换到 「Java项目」 选项卡。
-
点击 「Java环境管理」 → 「JDK管理」,选择需要的版本(如OpenJDK 17)点击安装。
2.2 配置MySQL数据库
-
点击左侧 「数据库」 → 「添加数据库」。
-
填写数据库名、用户名、密码,务必与Spring Boot配置文件一致。
-
访问权限选择 「本地服务器」(服务同机部署)。
-
点击 「提交」 完成创建。
-
(可选)点击 「导入」,上传项目的SQL初始化脚本。
三、部署微服务Docker容器化部署
Docker部署能让环境更标准化,便于迁移和扩展。
3.1 安装Docker环境
方案一:通过宝塔插件安装
-
进入 「软件商店」 ,搜索 「Docker管理器」 并安装。
-
安装完成后,左侧菜单会出现 「Docker」 入口。
方案二:命令行安装(推荐,版本更新)
# 安装Docker
curl -fsSL https://get.docker.com | bash
# 启动Docker
systemctl start docker
systemctl enable docker
# 验证安装
docker --version
3.2 编写Dockerfile
在项目根目录创建Dockerfile(以user-service为例):
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY target/user-service.jar /app/app.jar
EXPOSE 8081
ENTRYPOINT ["java", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]
3.3 构建镜像
方式一:命令行构建
# 在项目目录执行
docker build -t user-service:1.0.0 .
方式二:宝塔Docker界面构建
-
进入 「Docker」 → 「镜像」 → 「构建镜像」。
-
选择Dockerfile所在目录,填写镜像名和标签,点击构建。
3.4 运行容器
方式一:命令行运行
docker run -d --name user-service -p 8081:8081 user-service:1.0.0
方式二:宝塔Docker界面运行
-
进入 「Docker」 → 「容器」 → 「创建容器」。
-
选择镜像,配置端口映射(主机端口:容器端口),挂载卷(如有需要),点击提交。
3.5 使用Docker Compose编排多服务
创建 /home/docker-compose/docker-compose.yml
version: '3.8'
services:
# 注册中心
consul:
image: consul:1.15
ports:
- "8500:8500"
command: agent -dev -client=0.0.0.0
# 用户服务
user-service:
image: user-service:1.0.0
ports:
- "8081:8081"
depends_on:
- consul
environment:
- SPRING_PROFILES_ACTIVE=prod
- SPRING_CLOUD_CONSUL_HOST=consul
# 订单服务
order-service:
image: order-service:1.0.0
ports:
- "8082:8082"
depends_on:
- consul
environment:
- SPRING_PROFILES_ACTIVE=prod
- SPRING_CLOUD_CONSUL_HOST=consul
# 网关
gateway:
image: gateway:1.0.0
ports:
- "8080:8080"
depends_on:
- consul
environment:
- SPRING_PROFILES_ACTIVE=prod
- SPRING_CLOUD_CONSUL_HOST=consul
启动所有服务:
cd /home/docker-compose
docker-compose up -d
docker-compose ps
docker-compose logs -f user-service
3.6 配置Nginx代理Docker容器
与JAR部署类似,在宝塔 「Java项目」 或 「网站」 中配置反向代理,目标地址指向Docker映射的端口(如 http://127.0.0.1:8080)。
四、服务注册与发现(Consul/Nacos)
4.1 通过Docker安装Consul
docker run -d \
--name consul \
-p 8500:8500 \
-p 8600:8600/udp \
consul:1.15 agent -dev -client=0.0.0.0
访问 http://your-server-ip:8500 可查看Consul UI。
4.2 微服务配置(Spring Boot)
在 application-prod.yml 中配置:
spring:
cloud:
consul:
host: localhost # 如果用Docker Compose,写服务名如 consul
port: 8500
discovery:
service-name: ${spring.application.name}
health-check-path: /actuator/health
health-check-interval: 10s
prefer-ip-address: true
4.3 通过宝塔管理
onsul容器可以在宝塔的 「Docker」 → 「容器」 中查看状态、查看日志、重启或停止。
五、CI/CD自动化部署(Jenkins)
5.1 安装Jenkins
方式一:通过宝塔软件商店安装
-
进入 「软件商店」 ,搜索 「Jenkins」 并安装。
-
安装完成后,在左侧菜单会出现Jenkins入口,点击进入配置。
方式二:通过Docker安装(推荐)
docker run -d \
--name jenkins \
-p 8088:8080 \
-p 50000:50000 \
-v /home/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts
访问 http://your-server-ip:8088,查看初始密码:
docker logs jenkins | grep -A 5 "Jenkins initial setup"
5.2 配置Jenkins
-
浏览器访问Jenkins,输入初始密码完成初始化。
-
安装推荐插件(Git、Maven、Docker Pipeline等)。
-
配置全局工具:
-
JDK :配置路径
/usr/lib/jvm/java-17-openjdk-amd64 -
Maven:让Jenkins自动安装或指定已安装路径
-
Git :系统Git路径
/usr/bin/git
-
5.3 创建Pipeline流水线
在项目代码仓库根目录创建 Jenkinsfile:
pipeline {
agent any
environment {
APP_NAME = 'user-service'
DOCKER_IMAGE = 'user-service'
DOCKER_TAG = "${env.BUILD_NUMBER}"
DEPLOY_SERVER = 'your-server-ip'
}
stages {
stage('代码拉取') {
steps {
git 'https://gitlab.com/your-project/user-service.git'
}
}
stage('Maven构建') {
steps {
sh 'mvn clean package -DskipTests'
}
}
stage('构建Docker镜像') {
steps {
sh "docker build -t ${DOCKER_IMAGE}:${DOCKER_TAG} ."
sh "docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:latest"
}
}
stage('部署到服务器') {
steps {
sh """
# 停止并删除旧容器(如存在)
ssh javaapp@${DEPLOY_SERVER} "docker stop ${APP_NAME} || true"
ssh javaapp@${DEPLOY_SERVER} "docker rm ${APP_NAME} || true"
# 推送镜像(如使用私有仓库)
# docker push registry.you.com/${DOCKER_IMAGE}:${DOCKER_TAG}
# 运行新容器
ssh javaapp@${DEPLOY_SERVER} "docker run -d --name ${APP_NAME} -p 8081:8081 ${DOCKER_IMAGE}:${DOCKER_TAG}"
"""
}
}
}
post {
success {
echo '🎉 部署成功!'
}
failure {
echo '❌ 部署失败,请检查日志。'
}
}
}
5.4 配置Webhook自动触发
-
在Jenkins任务中,勾选 「Build Triggers」 → 「GitHub hook trigger for GITScm polling」。
-
在GitLab/GitHub仓库中设置Webhook,URL为
http://jenkins-server:8080/github-webhook/。 -
代码推送后,Jenkins会自动拉取代码、构建、打包、部署。
5.5 宝塔面板中的管理
Jenkins容器可以在宝塔 「Docker」 中查看和管理,包括:
-
查看容器状态和日志
-
重启、停止容器
-
进入容器终端执行命令
六、运维监控与日志管理
6.1 日志查看
-
Java项目日志 :在宝塔 「Java项目」 中点击 「日志」 查看。
-
Docker容器日志 :在 「Docker」 → 「容器」 中点击 「日志」。
-
Nginx访问日志 :在宝塔 「网站」 中点击对应站点查看。
-
应用日志文件 :在 「文件」 管理中进入
/home/javaapp/app/logs/查看。
6.2 性能监控
-
宝塔面板首页:实时查看CPU、内存、磁盘、网络状态。
-
MySQL监控 :在 「数据库」 中查看慢查询日志和性能状态。
-
Docker资源 :在 「Docker」 → 「容器」 中查看各容器的资源占用。
6.3 定时备份
在宝塔 「计划任务」 中设置:
| 任务类型 | 执行周期 | 备份内容 |
|---|---|---|
| 备份数据库 | 每日凌晨 | MySQL全部数据库 |
| 备份网站文件 | 每日凌晨 | /www/wwwroot/ 下全部代码 |
| 备份Docker数据卷 | 每日凌晨 | /home/docker-data/ 等 |
| 释放内存 | 每周 | 清理系统缓存 |
七、完整架构总览
┌─────────────────────────────────────────────────────────────┐
│ 用户访问 │
│ ↓ │
│ Nginx (宝塔管理) :80/443 │
│ ↓ 反向代理 │
│ ┌─────────────────────────┐ │
│ │ Gateway 网关 :8080 │ │
│ └───────────┬─────────────┘ │
│ │ Feign调用 │
│ ┌───────────────┼───────────────┐ │
│ ↓ ↓ ↓ │
│ User服务 Order服务 Product服务 │
│ :8081 :8082 :8083 │
│ │ │ │ │
│ └───────────────┼───────────────┘ │
│ ↓ │
│ Consul/Nacos (服务注册发现) │
│ ↓ │
│ MySQL (业务数据) │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 宝塔面板管理界面 │ │
│ │ Java项目 | Docker | 数据库 | 文件 | 计划任务 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Jenkins CI/CD 自动化流水线 │ │
│ │ 代码提交 → 自动构建 → Docker镜像 → 自动部署 │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘