返回文章列表
高并发项目
VMware宝塔面板Linux环境搭建

01搭建环境、导入项目

1. 下载虚拟机

前往 VMware 官网下载 VMware Workstation Pro 17 安装包,按默认选项完成安装即可。安装完成后准备一台 CentOS 7 虚拟机,并确保虚拟机与宿主机之间网络连通(建议选择 NAT 模式)。

2. 在虚拟机中安装宝塔 Linux

宝塔面板是一款简单好用的 Linux/Windows 服务器运维管理面板,可以大幅降低服务器管理门槛。进入宝塔官网 https://www.bt.cn/,点击"立即免费安装",复制对应 Linux 系统的安装命令。

打开虚拟机终端,粘贴安装命令并运行,过程中会提示:

Do you want to install Bt-Panel to the /www directory now?(y/n):

直接输入 y 回车。安装结束后会输出面板信息,需要记录下内网面板地址、username、password。

接下来安装端口扫描工具并确认 SSH 端口可用:

yum install nmap
nmap 127.0.0.1

确认输出中包含 22/tcp open ssh。然后浏览器访问刚刚记录的内网面板地址,使用 username、password 登录。登录后会弹出运行环境选择窗口,选择 LNMP(推荐),点击"一键安装",等待 Nginx、MySQL、PHP 等组件安装完成。

为方便后续容器对外访问端口,需关闭防火墙和 SELinux:

systemctl stop firewalld
setenforce 0
systemctl status firewalld   # 应为 inactive (dead)
getenforce                    # 应为 Permissive

同时在宝塔面板"安全"菜单中关闭防火墙,放行后续需要用到的端口(如 3306、8080、18080、18081)。

3. 部署 MySQL(基于 Docker)

本项目的 MySQL 部署完全基于 Docker 完成。宝塔面板自带 Docker 管理入口(左侧菜单可见 Docker),如果没有,可在"软件商店"中搜索并安装 Docker。

3.1 Docker 基本概念

动手部署前,先了解 Docker 的几个核心概念:

  • 镜像(Image):将应用所需的函数库、依赖、配置等与应用一起打包得到的文件包,是一个只读模板。
  • 容器(Container):Docker 在运行镜像时创建的隔离运行环境,每个容器都是相互独立的进程。
  • 镜像仓库(Repository):存储和管理镜像的服务,Docker 官方维护的公共仓库 Docker Hub 是目前最大的镜像仓库,包含 MySQL、Nginx、Java 等常见应用镜像。

Docker 安装应用时会自动搜索并下载应用镜像,运行镜像时创建容器,从而实现应用的快速部署。相比传统手动安装 MySQL 需要下载安装包、卸载冲突依赖、按顺序执行多条 rpm 命令,Docker 只需要一条 docker run 命令即可完成。

镜像与容器关系

3.2 Docker 常用命令

Docker 命令主要分为操作镜像和操作容器两类。

镜像相关命令:

docker pull <镜像名>              # 拉取镜像
docker images                     # 查看本地镜像列表
docker rmi <镜像名或ID>            # 删除本地镜像
docker save -o file.tar <镜像名>   # 导出镜像为文件
docker load -i file.tar           # 从文件导入镜像
docker build -t <镜像名>:<tag> .   # 基于 Dockerfile 构建镜像
docker push <镜像名>               # 推送镜像到仓库

容器相关命令:

docker run         # 创建并运行容器
docker ps          # 查看运行中的容器
docker ps -a       # 查看所有容器(含已停止)
docker start <容器名>  # 启动已停止的容器
docker stop <容器名>   # 停止运行中的容器
docker rm <容器名>     # 删除容器
docker logs <容器名>   # 查看容器日志
docker exec -it <容器名> bash  # 进入运行中的容器

Docker 常用命令

镜像名称一般分两部分组成:[repository]:[tag],例如 mysql:5.7。其中 repository 是镜像名,tag 是版本号。未指定 tag 时默认使用 latest,代表最新版本镜像。

3.3 创建 Docker 网络

为了让多个容器(如 mysql、hmall 后端、nginx 前端)之间能够通过容器名互相访问,需要先创建一个自定义网络。在终端执行:

docker network create hm-net

查看是否创建成功:

docker network ls

加入同一自定义网络的容器可以直接用容器名(例如 mysql)作为主机名访问,避免使用易变的容器 IP,便于后续配置 jdbc:mysql://mysql:3306/... 这样的连接串。

3.4 上传 MySQL 配置与初始化文件

点击宝塔面板"文件",进入根目录 /root/,将课前资料中的 mysql 文件夹拖拽进去。该文件夹包含两个子目录:

  • conf:MySQL 自定义配置文件,挂载后覆盖容器内默认配置。
  • init:MySQL 初始化 SQL 脚本,容器首次启动时会自动执行其中所有 .sql 文件,用于创建数据库、表及初始数据。

3.5 创建并运行 MySQL 容器

在终端中执行以下命令(终端默认位于 /root 目录,因此可直接使用绝对路径挂载):

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  --network hm-net \
  mysql

由于本地不存在 mysql 镜像,Docker 会自动从 Docker Hub 拉取 mysql:latest,下载完成后输出一串容器 ID 表示容器已启动。

命令参数详解:

参数 说明
-d 让容器在后台运行
--name mysql 给容器命名为 mysql,名称必须唯一
-p 3306:3306 端口映射,宿主机 3306 映射到容器内 3306
-e KEY=VALUE 设置环境变量,如时区、root 密码
-v 本地目录:容器内目录 数据卷挂载,将宿主机目录映射到容器内
--network hm-net 将容器加入 hm-net 自定义网络
mysql 指定运行的镜像名,默认 tag 为 latest

3.6 数据卷挂载

-v 参数实现宿主机目录与容器内目录的映射,方便我们在宿主机直接编辑容器内文件,也方便迁移和持久化容器产生的数据。

数据卷映射

需要注意本地目录写法:

  • 本地目录必须以 / 或 ./ 开头,否则会被识别为数据卷名而非本地目录。
  • -v mysql:/var/lib/mysql 会被识别为一个名为 mysql 的数据卷。
  • -v ./mysql:/var/lib/mysql 会被识别为当前目录下的 mysql 目录。

数据卷本身的常见命令:

docker volume ls              # 查看所有数据卷
docker volume rm <卷名>        # 删除指定数据卷
docker volume inspect <卷名>   # 查看数据卷详情
docker volume prune           # 清除未使用的数据卷

4. 本地连接数据库

使用 Navicat 等数据库图形化工具连接容器中的 MySQL:

  • 主机:填写宝塔虚拟机的内网 IP,例如 172.22.129.22
  • 端口:3306
  • 用户名:root
  • 密码:上面 MYSQL_ROOT_PASSWORD 环境变量设置的值

点击"测试连接",提示成功后保存即可。连接后可看到 init 目录中 SQL 脚本创建的数据库与表结构。

5. 启动后端和前端

5.1 启动后端 hmall

项目资料中 hmall 为后端服务。启动前需确认 application.yaml 中的数据库 URL 和密码与刚刚部署的 MySQL 一致:host 指向虚拟机 IP(或同网络容器名 mysql),端口 3306,密码 123。配置无误后启动 SpringBoot 主类即可。

5.2 启动前端 hmall-nginx

前端项目 hmall-nginx 是一个 Nginx 静态资源服务。进入 hmall-nginx 目录,在该目录下打开命令行窗口,执行:

start nginx.exe

浏览器访问 http://localhost:18080,看到商城首页即部署成功。项目登录账号为 Jack,密码为 123。