前言

​ 大学期间创新项目基地的项目,因为我服务器寄了,同组同学用这个项目作毕设,我就将其迁到导师的服务器上,做个记录,以免之后还要用

首先要确保项目还能正常启动,后端的Maven没用到私服,前端node版本为20、采用JeecgBoot(前端Vue3版源码)

本地启动

1. 数据准备

1. MySQL

​ 原始数据在机房服务器的WaterQuality数据库里

2. Redis

Redis部署在导师的服务器上,用的是docker-compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '1.0'
services:
redis:
image: redis
restart: always
hostname: redis
container_name: redis
privileged: true
ports:
- 6379:6379
environment:
TZ: Asia/Shanghai
volumes:
- ./data:/data
- ./conf/redis.conf:/etc/redis/redis.conf
- ./logs:/logs
command: ["redis-server","/etc/redis/redis.conf"]

像下面一样建好文件目录,redis.conf下载地址:Redis配置文件示例

image-20240322211546695

修改redis.conf中的bindrequirepass

  • bind 127.0.0.1 -::1改为bind 0.0.0.0
  • # requirepass foobared去掉#,将footbared改为自己的密码

然后启动docker-compose,记得开启服务器防火墙

1
2
# 启动docker compose
docker compose up -d

2. 爬虫

如果改了数据库,要修改insertData()方法的参数

1. 上传

Maven打包完后,将其和所需要的浏览器驱动复制到Windows服务器(需装JdkEdge)中,然后先Java -jar pachong-1.0.jar测试一下,注意要先将报错重启的代码注释掉

image-20240321154611314

如果驱动报错,先找到浏览器的设置,查看浏览器版本后,去官网更新驱动,更新完需重新打包

2. 定时任务

创建定时任务,按图一步步来就行

image-20240321154455600

image-20240321155018352

image-20240321155047450

image-20240321155121835

3. 后端

主要就是改MySQLRedis,将这些配置改好就能正常启动

4. 前端

​ 找到package.json,安装npm就可以直接启动dev

image-20240321160003989

全部配好就可以启动进入系统了

5. 修改数据源

进入系统后,系统的大屏或报表可能会出现异常,需要重新进入报表设计器进行配置。

随便点进一个报表,修改云服务器里的驱动数据源地址用户名密码

image-20240320192921459

image-20240320193009846

背景图在[WaterQuality]\jeecg-boot-master\background\background.jpg

云服务器部署

1. Dockerfile

主要修改暴露的端口和项目地址

1. 后端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FROM anapsix/alpine-java:8_server-jre_unlimited

MAINTAINER jeecgos@163.com

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#RUN mkdir -p /jeecg-boot/config/jeecg/

WORKDIR /jeecg-boot

EXPOSE 8090

#ADD ./src/main/resources/jeecg ./config/jeecg
ADD ./target/jeecg-system-start-3.4.4.jar ./

CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-start-3.4.4.jar

2. 前端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
FROM nginx
MAINTAINER jeecgos@163.com
VOLUME /tmp
ENV LANG en_US.UTF-8
RUN echo "server { \
listen 8091; \
location /jeecgboot/ { \
proxy_pass http://{{后端地址}}:8090/jeecg-boot/; \
proxy_redirect off; \
proxy_set_header Host jeecg-boot-system; \
proxy_set_header X-Real-IP \$remote_addr; \
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; \
} \
#解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
location / { \
root /var/www/html/; \
index index.html index.htm; \
if (!-e \$request_filename) { \
rewrite ^(.*)\$ /index.html?s=\$1 last; \
break; \
} \
} \
access_log /var/log/nginx/access.log ; \
} " > /etc/nginx/conf.d/default.conf \
&& mkdir -p /var/www \
&& mkdir -p /var/www/html

ADD dist/ /var/www/html/
EXPOSE 8091
EXPOSE 443

2. 部署

idea有个docker插件,可以远程连接构建镜像、运行容器之类的

1. idea远程部署

安装好插件后,Dockerfile文件会有个启动的标志,点击Edit Run Configuration,其中Build为构建镜像,Run为启动容器,右侧的Modify可以添加一些选项,如端口、挂载等等

image-20240321215530558

2. 手动上传

手动上传要将打包好的文件上传至服务器相应位置

以后端为例,Dockerfile里标明了jar包的位置为ADD ./target/jeecg-system-start-3.4.4.jar ./

image-20240321215938765

然后在Dockerfile所处的路径下,构建镜像,并以后台模式启动容器(要指定对应端口)

1
2
3
4
5
# 构建镜像
docker bulid . -t waterquality_back

# 后台启动容器
docker run --name waterquality_back -p 8090:8090 -d waterquality_back

前端一样操作即可

3. docker-compose远程部署

在尝到idea远程连接docker的甜头后,果断写了docker-compose,直接一键远程部署😋

手写了个docker-compose.yml,放在项目根目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
version: '1.0'
services:
jeecg-boot-vue3:
networks:
- waterquality
build:
context: ./jeecgboot-vue3-master
dockerfile: Dockerfile
restart: always
container_name: waterquality-front
image: waterquality-front
hostname: waterquality-front
ports:
- 8091:8091

jeecg-boot-system:
networks:
- waterquality
build:
context: ./jeecg-boot-master/jeecg-module-system/jeecg-system-start
dockerfile: Dockerfile
restart: always
container_name: waterquality-back
image: waterquality-back
hostname: waterquality-back
ports:
- 8090:8090

networks:
waterquality:
driver: bridge
The character [_] is never valid in a domain name.

我之前写容器名用的是waterquality_back,域名也用的是这个,结果报错了

image-20240322220455445

这个错误是Java中的java.lang.IllegalArgumentException,它表明某个地方使用了不允许在域名中出现的字符。根据报错信息来看,是因为域名中包含了下划线字符[_],而根据域名规范,域名中不允许出现下划线。

所以现在改成了waterquality-back

我这里用了networks,所以前端的项目地址改为容器名加端口号就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
FROM nginx
MAINTAINER jeecgos@163.com
VOLUME /tmp
ENV LANG en_US.UTF-8
RUN echo "server { \
listen 8091; \
location /jeecgboot/ { \
proxy_pass http://waterquality-back:8090/jeecg-boot/; \
proxy_redirect off; \
proxy_set_header Host waterquality-back; \
proxy_set_header X-Real-IP \$remote_addr; \
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; \
} \
#解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
location / { \
root /var/www/html/; \
index index.html index.htm; \
if (!-e \$request_filename) { \
rewrite ^(.*)\$ /index.html?s=\$1 last; \
break; \
} \
} \
access_log /var/log/nginx/access.log ; \
} " > /etc/nginx/conf.d/default.conf \
&& mkdir -p /var/www \
&& mkdir -p /var/www/html

ADD dist/ /var/www/html/
EXPOSE 8091
EXPOSE 443

点击左上角的双箭头后,一键部署

Docker Compose execution failed

image-20240321193612093

第一次用需要下载Docker Desktop,下载好后,点击setting->Build, Execution, Deployment->Docker->Tools将下方配置好就行

image-20240322214303047