环境
Linux
系统CentOS 7
准备
安装Docker
- 执行
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装docker
,其他安装方式参考 CentOS Docker 安装 - 执行
sudo systemctl start docker
启动docker
- 执行
sudo systemctl enable docker
添加docker
开机启动
安装Nginx
- 既然已经安装了
Docker
,那就可以使用镜像的方式部署Nginx
- 服务器任意位置创建
nginx-deploy
目录,用来存放Nginx
部署文件 - 在
nginx-deploy
目录中创建jnpf3.4.5.conf
文件,内容如下:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 3000;
server_name localhost;
root /home/deploy/front/jnpf-web;
index index.html;
# 前端主项目伪静态
location / {
try_files $uri $uri/ /index.html;
}
# 前端大屏项目伪静态
location /DataV {
try_files $uri $uri/ /DataV/index.html;
}
# 前端报表项目伪静态
location /Report/icons/{
try_files $uri $uri/ /Report/icons/;
}
#设置上传文件的大小
client_max_body_size 100m;
#添加头部信息
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#请求头总长度大于128k时使用large_client_header_buffers设置的缓存区
client_header_buffer_size 128k;
#指令参数4为个数,128k为大小,默认是8k。申请4个128k。
large_client_header_buffers 4 128k;
# api
location /api/ {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers *;
proxy_pass http://localhost:30000;
if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){ }
}
# websocket
location /websocket {
proxy_pass http://localhost:30000/api/message/websocket;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 600s;
}
# Start 报表接口配置
location /ReportServer/ {
proxy_pass http://localhost:30007/;
}
# 文件预览(jnpf-file-preview)
location /FileServer {
proxy_pass http://localhost:30090;
}
location ~ /FileServer/*.*\.(js|css)?$ {
proxy_pass http://localhost:30090;
}
# End 报表接口配置
}
server {
listen 3001;
server_name localhost;
root /home/deploy/front/jnpf-app;
index index.html;
# 移动端
location /m {
#root /usr/share/nginx/jnpf-app3.4.1;
#index index.html;
try_files $uri $uri/ /home/deploy/front/jnpf-app/index.html;
}
# 前端主项目伪静态
location / {
try_files $uri $uri/ /index.html;
}
# 前端大屏项目伪静态
location /DataV {
try_files $uri $uri/ /DataV/index.html;
}
# 前端报表项目伪静态
location /Report/icons/{
try_files $uri $uri/ /Report/icons/;
}
#设置上传文件的大小
client_max_body_size 100m;
#添加头部信息
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#请求头总长度大于128k时使用large_client_header_buffers设置的缓存区
client_header_buffer_size 128k;
#指令参数4为个数,128k为大小,默认是8k。申请4个128k。
large_client_header_buffers 4 128k;
# api
location /api/ {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers *;
proxy_pass http://localhost:30000;
if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){ }
}
# websocket
location /websocket {
proxy_pass http://localhost:30000/api/message/websocket;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 600s;
}
# Start 报表接口配置
location /ReportServer/ {
proxy_pass http://localhost:30007/;
}
# 文件预览(jnpf-file-preview)
location /FileServer {
proxy_pass http://localhost:30090;
}
location ~ /FileServer/*.*\.(js|css)?$ {
proxy_pass http://localhost:30090;
}
# End 报表接口配置
}
- 在
nginx-deploy
目录中创建Dockerfile
文件,内容如下:
#基础镜像
FROM nginx:1.23.3
#jnpf的配置文件
COPY jnpf3.4.5.conf /etc/nginx/conf.d/
#开放端口
EXPOSE 80
- 在
nginx-deploy
目录中创建deploy.sh
部署脚本,内容如下:
#!/bin/bash
#镜像名称
CONTAINER_IMAGE=nginx:master-$(date +%Y%m%d%H%M)
#容器名称
CONTAINER_NAME=nginx
#构建镜像
docker build -t $CONTAINER_IMAGE .
#停止之前的容器
docker stop $CONTAINER_NAME || true && docker rm -f $CONTAINER_NAME || true
#运行新的容器,/home/deploy/front是JNPF前端项目地址
docker run --network=host -d -p 80:80 -v /home/deploy/front:/home/deploy/front --name $CONTAINER_NAME $CONTAINER_IMAGE
- 切换到
nginx-deploy
目录执行sh deploy.sh
部署脚本,等待执行完成 - 执行
docker ps -a
查看Nginx
容器,内容如下:
[root@localhost nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8707820ba373 nginx:master-202301111033 "/docker-entrypoint.…" 25 hours ago Up 25 hours nginx
- 访问
http://服务器ip
,如果显示欢迎页面说明Nginx
安装成功,如果访问不到,可能是开启了防火墙 - 执行
systemctl status firewalld.service
查看防火墙,显示active(running)
说明开启了防火墙 - 执行
systemctl stop firewalld.service
关闭防火墙 - 执行
systemctl disable firewalld.service
关闭防火墙开机启动 - 再次访问
http://服务器ip
,显示欢迎页面
部署
部署jnpf-java-boot
- 服务器任意位置创建
jnpf-java-boot-deploy
目录,用来存放jnpf-java-boot
部署文件 - 在
jnpf-java-boot-deploy
目录中创建Dockerfile
文件,内容如下:
FROM openjdk:8
ADD jnpf-admin-3.4.5-RELEASE.jar jnpf-boot.jar
ADD jnpf-resources /data/jnpf-resources
EXPOSE 30000
ENTRYPOINT ["java","-jar", "/jnpf-boot.jar"]
- 在
jnpf-java-boot-deploy
目录中创建deploy.sh
部署脚本,内容如下:
#!/bin/bash
tag=jnpf/jnpf-admin3.4.5:master_$(date +%Y%m%d%H%M)
psName=jnpf-admin-3.4.5
docker build -t "$tag" .
docker stop $psName || true && docker rm -f $psName || true
docker run -d -p 30000:30000 --name $psName $tag
- 将
jnpf-resources
文件夹复制到jnpf-java-boot-deploy
目录中 -
将项目打包后的文件
jnpf-admin-3.4.5-RELEASE.jar
复制到jnpf-java-boot-deploy
目录中 - 切换到
jnpf-java-boot-deploy
目录执行sh deploy.sh
部署脚本,等待执行完成
部署jnpf-datareport
- 服务器任意位置创建
jnpf-datareport-deploy
目录,用来存放jnpf-datareport
部署文件 - 在
jnpf-datareport-deploy
目录中创建Dockerfile
文件,内容如下:
FROM openjdk:8
ADD jnpf-datareport-3.4.4-RELEASE.jar app.jar
EXPOSE 30007
ENTRYPOINT ["java","-jar", "/app.jar"]
- 在
jnpf-datareport-deploy
目录中创建deploy.sh
部署脚本,内容如下:
#!/bin/bash
tag=jnpf/jnpf-datareport3.4.5:master_$(date +%Y%m%d%H%M)
psName=jnpf-datareport-3.4.5
docker build -t "$tag" .
docker stop $psName || true && docker rm -f $psName || true
docker run -d -p 30007:30007 --name $psName $tag
-
将项目打包后的文件
jnpf-datareport-3.4.4-RELEASE.jar
复制到jnpf-datareport-deploy
目录中 -
切换到
jnpf-datareport-deploy
目录执行sh deploy.sh
部署脚本,等待执行完成
部署jnpf-scheduletask
- 服务器任意位置创建
jnpf-scheduletask-deploy
目录,用来存放jnpf-scheduletask
部署文件 - 在
jnpf-scheduletask-deploy
目录中创建Dockerfile
文件,内容如下:
FROM openjdk:8
ADD xxl-job-admin-1.0-RELEASE.jar app.jar
EXPOSE 30020
ENTRYPOINT ["java","-jar", "/app.jar"]
- 在
jnpf-scheduletask-deploy
目录中创建deploy.sh
部署脚本,内容如下:
#!/bin/bash
tag=jnpf/jnpf-scheduletask3.4.5:master_$(date +%Y%m%d%H%M)
psName=jnpf-scheduletask-3.4.5
docker build -t "$tag" .
docker stop $psName || true && docker rm -f $psName || true
docker run -d -p 30020:30020 --name $psName $tag
-
将项目打包后的文件
xxl-job-admin-1.0-RELEASE.jar
复制到jnpf-scheduletask-deploy
目录中 -
切换到
jnpf-scheduletask-deploy
目录执行sh deploy.sh
部署脚本,等待执行完成
部署jnpf-file-preview
- 文件预览服务没有部署,因为之前
JNPF
旧版的jnpf-file-preview
服务可以用,如果需要部署方式同上
部署管理端页面jnpf-web
、jnpf-web-datareport
、jnpf-web-datascreen
- 按照官方文档配置端口并构建项目,构建后的
jnpf-web
目录结构如下:
├── jnpf-web # 存放测试或生产环境的前端
│── DataV # 大屏(`jnpf-datascreen`)打包后文件存放目录
│── Report # 报表(`jnpf-datareport`)html下的文件
└── 主项目前端打包后的文件 # 主项目(`jnpf-web`)打包后存放在根目录
- 将文件夹
jnpf-web
中的内容复制到/home/deploy/front/jnpf-web
目录下
部署移动端页面jnpf-app
- 将项目构建的文件复制到
/home/deploy/front/jnpf-app
目录下 - 最终
/home/deploy/front
目录结构如下:
├── front
├── jnpf-app # 移动端文件夹
└── jnpf-web # 管理端文件夹
│── DataV # 大屏
│── Report # 报表
└── 主项目前端打包后的文件 # 主项目(`jnpf-web`)打包后存放在jnpf-web目录
部署完成
- 执行
docker ps -a
查看容器,内容如下:
[root@localhost nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d674d01b114d jnpf/jnpf-admin3.4.5:master_202301111201 "java -jar /jnpf-boo…" 26 hours ago Up 26 hours 0.0.0.0:30000->30000/tcp, :::30000->30000/tcp jnpf-admin-3.4.5
4f6a9f3d5626 jnpf/jnpf-datareport3.4.5:master_202301111045 "java -jar /app.jar" 27 hours ago Up 27 hours 0.0.0.0:30007->30007/tcp, :::30007->30007/tcp jnpf-datareport-3.4.5
8707820ba373 nginx:master-202301111033 "/docker-entrypoint.…" 28 hours ago Up 28 hours nginx
3fcbadf01bfd jnpf/jnpf-scheduletask3.4.5:master_202301110916 "java -jar /app.jar" 29 hours ago Up 29 hours 0.0.0.0:30020->30020/tcp, :::30020->30020/tcp jnpf-scheduletask-3.4.5
bfd9831db378 jnpf/jnpf-file-preview3.4.1:master_202301101736 "java -jar /app.jar" 45 hours ago Up 45 hours 0.0.0.0:30090->30090/tcp, :::30090->30090/tcp jnpf-file-preview-3.4.1
-
执行
chmod -R 777 /home/deploy/front/*
修改前端项目的读写权限,避免因权限造成访问失败 -
到此部署完成,管理端地址
http://主机ip:3000
,移动端地址http://主机ip:3001
,默认管理员用户名admin
密码123456