启航电商ERP系统部署说明文档
一、服务器环境部署
-
Ubuntu:24.04 LTS
lsb_release -a
-
MySQL:8.0
-
Redis:7.0
-
Docker:
-
Nacos:2.2.0
1.1 MySQL
以ubuntu系统为例
- 1、更新系统:
sudo apt update
-
2、安装依赖:
sudo apt install wget lsb-release gnupg
-
3、添加 MySQL APT 仓库:
-
你需要下载并添加 MySQL APT 仓库。请使用以下命令:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
-
这里使用的是当前 MySQL 8 的 APT 配置包的最新版本。下载完成后,安装它:
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
-
更新秘钥
wget -qO - https://dev.mysql.com/doc/refman/8.0/en/checking-gpg-signatures.html | sudo apt-key add -
-
4、再次更新包列表:
sudo apt update
-
5、安装 MySQL 8:
sudo apt install mysql-server
-
6、启动 MySQL 服务:
sudo systemctl start mysql
-
7、运行安全配置脚本:
sudo mysql_secure_installation
-
8、登录 MySQL 确保它运行正常:
mysql -u root -p
(首次登录密码为空) -
9、设置root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Andy_123';
FLUSH PRIVILEGES;
- 10、允许远程登录
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Andy_123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- 11、配置 MySQL 监听远程连接
编辑 MySQL 配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
,找到 bind-address
行,并将其修改为 0.0.0.0
以允许从所有 IP 访问
bind-address = 0.0.0.0
- 重启 MySQL 服务:
sudo systemctl restart mysql
1.2 Docker
1.2.1 使用国内镜像安装 Docker
-
1、更新系统包列表:
sudo apt-get update
-
2、安装依赖:
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
-
3、添加阿里云 Docker 的 GPG 密钥:
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
-
4、添加阿里云 Docker 的 APT 源:
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
-
5、更新系统包列表:
sudo apt-get update
-
6、安装 Docker:
sudo apt-get install -y docker-ce
-
7、查看版本:
docker --version
-
8、动 Docker 并设置为开机自启
sudo systemctl start docker
sudo systemctl enable docker
1.2.2 配置Docker国内源
-
编辑 Docker 配置文件:
vim /etc/docker/daemon.json
-
添加配置内容(暂时可用):
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
]
}
-
保存并关闭文件(在
nano
中使用Ctrl + X
然后按Y
确认)。 -
重启Docker:
sudo systemctl restart docker
-
验证配置是否生效:
docker info
1.3 Redis7
- 更新:
sudo apt update
1.3.1、安装 Redis 7
Redis 7 可能不在默认的 Ubuntu 存储库中,因此你可能需要添加 Redis 官方的 PPA(个人包档案)来安装最新版本。以下是步骤:
添加 Redis 官方 PPA
- 1、安装
software-properties-common
(如果尚未安装):sudo apt install software-properties-common
- 2、添加 Redis PPA:
sudo add-apt-repository ppa:redislabs/redis
- 3、更新包列表:
sudo apt update
- 4、安装 Redis 7:
sudo apt install redis
1.3.2、检查 Redis 版本
确认安装的 Redis 版本是否为 7:redis-server --version
1.3.3、配置 Redis
Redis 配置文件通常位于 /etc/redis/redis.conf
。你可以根据需要编辑该文件来调整 Redis 的配置:
sudo vim /etc/redis/redis.conf
常见的配置项包括:
bind
:设置 Redis 监听的 IP 地址。port
:设置 Redis 监听的端口。requirepass
:设置 Redis 的访问密码。
1.3.4、启动和管理 Redis 服务
- 1、检查服务文件:Redis 的服务文件通常应该位于
/lib/systemd/system/redis-server.service
。检查该文件是否存在:
ls /lib/systemd/system/redis-server.service
- 2、如果文件存在,你可以重新加载系统服务文件并尝试启动服务:
sudo systemctl daemon-reload
- 3、设置 Redis 服务开机启动:
sudo systemctl enable redis-server
- 4、启动:
sudo systemctl start redis-server
1.3.5、连接
redis-cli -h 127.0.0.1 -p 6379
二、应用环境部署
2.1 Docker Nacos
2.1.1 运行Nacos
-
拉取最新的 Nacos 镜像:
docker pull nacos/nacos-server:v2.2.0
-
启动镜像:
docker run -d \
--name my_nacos2.2.0 \
--network host \
-e MODE=standalone \
nacos/nacos-server:v2.2.0
2.2.2 配置Nacos DataID
-
添加 DataID:
qihangniu-erp.yaml
-
配置格式选择
YAML
-
配置内容(注意修改成自己的配置,包括mysql、redis、minio(minio如果不需要自己添加图片可以不需要))
``` spring: redis: host: 127.0.0.1 port: 6379 database: 0 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms datasource: driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/qihangniu-erp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: Andy_123
# mybatis 日志 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启sql日志 ```
2.2 数据库导入
-
创建数据库
qihangniu-erp
-
导入项目文件夹
docs\sql\qihangniu-erp.sql
数据库脚本
数据库脚本中包含演示数据,演示之后请清空数据。
二、Java项目部署
2.1 打包环境
- Java:17
- Maven:3.8
2.2 项目打包
maven clean package
2.3 项目部署到服务器并使用Docker运行
上传文件打包文件到服务器
所有微服务原始路径:/opt/qihangerp
- 上传文件:
scp -P 22 -r D:/projects/publish/qihangerp/erp ubuntu@43.136.106.156:/opt/qihangerp
1、 gateway
网关微服务,网关端口8088必须要能访问,前端通过8088端口其他微服务
-
进入服务器文件夹
/opt/qihangerp/erp/gateway
-
构建 Docker 镜像:
docker build -t gateway .
-
运行 Docker 容器:
docker run --name gateway \
--network host \
-e SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=qihangerp@123 \
-d gateway
2.5.2 sys-api
系统及认证微服务
-
构建 Docker 镜像:
docker build -t sys-api .
-
运行 Docker 容器:
docker run --name sys-api \
--network host \
-e SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos \
-d sys-api
2.5.3 oms-api
OMS模块微服务
-
构建 Docker 镜像:
docker build -t oms-api .
-
运行 Docker 容器:
docker run --name oms-api \
--network host \
-e SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos \
-d oms-api
2.5.4 wms-api
仓库模块微服务
- 构建 Docker 镜像:
docker build -t wms-api .
- 运行 Docker 容器:
docker run --name wms-api \
--network host \
-e SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos \
-d wms-api
2.5.5 tao-api
SCM模块微服务
- 构建 Docker 镜像:
docker build -t scm-api .
- 运行 Docker 容器:
docker run --name scm-api \
--network host \
-e SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos \
-d scm-api
2.5.6 pdd-api
拼多多模块微服务
- 构建 Docker 镜像:
docker build -t pdd-api .
- 运行 Docker 容器:
docker run --name pdd-api \
--network host \
-e SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR=127.0.0.1:8848 \
-e SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos \
-e SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos \
-d pdd-api
三、前端项目部署
3.1 配置vue项目
- 打开
vue
项目根目录下的vue.config.js
- 配置代理(配置后端api端口转发,这里的端口就是gateway网关项目的访问端口)
devServer: {
host: '0.0.0.0',
port: port,
open: true,
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: `http://localhost:8088`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
}
},
- 编译打包
npm run build:prod
- 打包之后会有个文件夹
dist
3.2 Nginx部署
3.2.1 拉取nginx镜像
docker pull nginx
3.2.2 上传文件
- 上传文件:
/opt/qihangerp/nginx/dist
scp -P 22 -r D:/projects/publish/qihangerp/erp/dist ubuntu@43.136.106.156:/opt/qihangerp/nginx/
3.2.3 创建挂载目录
- nginx_logs :日志文件目录
/opt/qihangerp/nginx/nginx_logs
- nginx_conf :配置文件目录
/opt/qihangerp/nginx/nginx_conf
- nginx_web :项目文件目录(这里可以存放web文件)
/opt/qihangerp/nginx/dist
赋权限:
chmod 777 /opt/qihangerp/nginx/nginx_logs
chmod 777 /opt/qihangerp/nginx/nginx_conf
chmod 777 /opt/qihangerp/nginx/dist
创建容器并挂载目录
挂载操作会直接将两个文件夹内容同步,若是直接用宿主机的空文件夹直接挂载到容器内部的配置文件目录上,会造成nginx容器配置文件目录被同步为空文件夹,进而导致容器启动失败。故我们需要先启动一遍容器,将初始配置拷贝出来。
启动容器并拷贝出nginx初始配置
- 创建容器
docker run -itd --name nginx -p 80:80 nginx
- 复制容器配置文件到宿主机
docker cp nginx:/etc/nginx /opt/qihangerp/nginx/nginx_conf
删除容器
- 删除容器
docker rm -f nginx
修改Nginx配置
# 前端web配置
location / {
#root /opt/qihangerp/nginx/dist;
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
# 增加后台api转发
=======
##### 修改Nginx配置(增加vue404、增加后台api转发)
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8088/;
}
重新运行容器并挂载目录
docker run -itd --name nginx --network host \
-v /opt/qihangerp/nginx/dist:/usr/share/nginx/html \
-v /opt/qihangerp/nginx/nginx_conf/nginx:/etc/nginx \
-v /opt/qihangerp/nginx/nginx_logs:/var/log/nginx nginx
访问web
http://ip