1. 简介

目录分为两个部分,”01资料”主要是相关文档和录屏介绍,”02项目”是前后端的代码和压缩包。

接下来主要会修改相关的配置文件。

2. 准备环境

在服务器上安装好nginx、mysql8(必须mysql8)、redis。

2.1 安装nginx

nginx作用:发布前端文件(静态文件)

  1. # 使用源码编译安装的方式来安装nginx
  2. 1、安装nginx需要的依赖
  3. yum -y install gcc-c++ pcre-devel zlib-devel
  4. 2、上传nginx源代码到/opt目录
  5. 3、解压缩
  6. cd /opt
  7. tar zxvf nginx-1.19.1.tar.gz
  8. 4、安装
  9. cd /opt/nginx-1.19.1
  10. ./configure && make && make install
  11. 5、启动nginx
  12. /usr/local/nginx/sbin/nginx
  13. 至此,nginx安装完毕
  14. 注:
  15. 1、确认是否安装并启动成功,可以访问http://ip(ip为你linux机器的ip地址),看到welcome即可。
  16. 2nginx对外服务端口默认为80
  1. 注:如果不成功
  2. 1、关闭防火墙: systemctl stop firewalld
  3. 2、如果没有IP地址:
  4. 修改网络的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33
  5. 关闭网络管理的服务: service NetworkManager stop
  6. 开机不自动启动服务: chkconfig NetworkManager off
  7. 重启网络服务: service network restort 如启动失败,需要重启计算机。 如果还是没有网络

前后端分离项目部署文档 - 图1

2.2 安装docker

  1. 1、卸载旧版本(如果安装过旧版本的话)
  2. yum remove docker docker-common docker-selinux docker-engine
  3. 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
  4. yum install -y yum-utils device-mapper-persistent-data lvm2
  5. 3、设置yum
  6. # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  7. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  8. 4、安装docker引擎
  9. yum install -y docker-ce
  10. 5、启动docker并把docker加入开机启动
  11. systemctl start docker
  12. systemctl enable docker
  13. 6、配置docker镜像加速器
  14. vi /etc/docker/daemon.json
  15. 然后添加如下内容:
  16. {"registry-mirrors": ["http://hub-mirror.c.163.com","https://reg-mirror.qiniu.com"]}
  17. 7、重启docker
  18. systemctl restart docker
  19. 至此,docker安装完毕。

2.3 docker安装mysql8

  1. 1、拉取镜像文件
  2. docker pull mysql:8.0
  3. 2、运行MySQL容器(把容器的3306端口映射到linux主机的3307端口,最后连接mysql通过3307端口来连接。因为主机的3306端口可能被占用)
  4. docker run -d -p 3307:3306 --privileged=true -v /docker/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wch@1234 --name mysql8 mysql:8.0 --lower_case_table_names=1
  5. # docker run -d -p 3307:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=123456 --name mysql8 mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
  6. # docker run -di --name=mysql8 -v /docker/mysql8/data:/var/lib/mysql -v /docker/mysql8/conf/my.cnf:/etc/mysql/my.cnf --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=baihe@1234 mysql --lower_case_table_names=1
  7. 3、查看容器id
  8. docker ps -a
  9. 注意:此命令显示所有docker容器
  10. docker ps
  11. # 此命令显示正在运行的docker容器
  12. 如下图,有两个容器id,一个为redis,一个为mysql8
  13. 4、进入mysql8容器
  14. docker exec -it 容器id bash (注:容器id通过docker ps -a获取,每个人执行命令出来的结果不一样)
  15. docker exec -it mysql8 bash
  16. 5、在容器中操作mysql,使用mysql客户端
  17. mysql -uroot -p
  18. 回车,输入密码baihe@1234,进入
  19. 6、修改远程连接密码
  20. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'baihe@1234';
  21. 7、退出mysql
  22. exit
  23. 8、退出容器
  24. exit
  25. 9、使用navicat去连接mysql8.注意端口为.能连接成功则表示mysql8正常。

备注:mysql5.7授权命令

  1. Grant all on *.* to 'root'@'%' identified by 'root用户的密码' with grant option;
  2. flush privileges;
  3. vmtsji9700@sandbox.com/111111

2.4 docker安装redis

  1. 1、拉取镜像文件
  2. docker pull redis
  3. 2、创建一个目录用于存储redis的文件
  4. mkdir -p /docker/redis/data
  5. 3、把目录访问权限设置为任何人都可以访问
  6. chmod -R 777 /docker/redis/data
  7. 4、切换目录
  8. cd /docker/redis
  9. 5、下载redis.conf配置文件
  10. wget http://download.redis.io/redis-stable/redis.conf
  11. 6、修改配置文件
  12. vi redis.conf
  13. 75行前面加上# - 注释掉 bind 127.0.0.1
  14. 94yes修改为no - protected-mode yes 修改为protected-mode no
  15. 7、保存退出
  16. 8、启动redis容器
  17. # -p 端口映射。第一个6379指的是linux的端口,第二个6379指的是docker容器的端口
  18. docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf
  19. 9、进入客户端
  20. docker exec -it redis /bin/bash
  21. docker exec -it 容器id redis-cli

3. his项目后端配置

3.1、修改配置文件,对com-medical-hospital-1.0-SNAPSHOT.jar点右键,使用压缩文件打开。切记:不要双击!不要双击!不要双击!( com-medical-hospital-1.0-SNAPSHOT.jar\BOOT-INF\classes\application.properties )

前后端分离项目部署文档 - 图2

3.2、打开后进入BOOT-INF\classes。application.properties即为项目的配置文件。其中可以配置服务端口,数据库链接,redis链接

前后端分离项目部署文档 - 图3

3.3、双击application.properties,使用记事本打开。注意:如果按照文档以上各步骤来做,此文件可以不用修改

前后端分离项目部署文档 - 图4

3.4、修改后保存,关闭,选择是

3.5、发布后端项目

  1. 1linux创建目录
  2. mkdir -p /home/his
  3. 2、上传修改后的com-medical-hospital-1.0-SNAPSHOT.jar包到/home/his
  4. 3、切换目录
  5. cd /home/his
  6. 4、启动后端项目
  7. nohup java -jar com-medical-hospital-1.0-SNAPSHOT.jar &
  8. 注意:
  9. nohup:表示程序运行的日志输出到nohup.out文件
  10. java -jar com-medical-hospital-1.0-SNAPSHOT.jar :表示使用java命令来执行com-medical-hospital-1.0-SNAPSHOT.jar
  11. -jar 制定文件类型为jar
  12. &:表示在后台运行命令,不挂断运行命令,当账户退出或终端关闭或CTRL+C时,程序仍然运行
  13. 5、查看后端服务日志
  14. tail -f nohup.out
  15. ctrl+c退出

4. his前端配置

注:前端需要自己编译,编译工具为node,请自行安装。node-v12.19.0-x64.msi或node-v16.3.0-x64.msi

4.1、打开 02_项目\pro_hosiptal\src\main.js,修改baseURL的值为服务器IP(linux机器ip),端口和后端jar包里的server.port一致即可。注意:这里不能填写localhost或127.0.0.1,必须填写具体IP。

4.2、在windows上安装nodejs工具,以便后续生成前端文件,一直下一步即可。

4.3、打开cmd,进入pro_hosiptal目录,运行命令:npm run build

4.4、等待,最后出现“Build complete.”即可。

4.5、此时再进入pro_hosiptal目录,dist目录被重新生成,这就是可运行的前端文件。

4.6、进入dist目录。把目录中所有的文件和文件夹上传到linux的/usr/local/nginx/html目录中即可。

4.7、至此,整个项目部署完毕。测试方式,浏览器输入http://ip ,(linux的ip地址)

用户名:yz01

密码:123456

注:水务系统的后端接口地址配置修改在“02_项目\water\src\components\axios\request.js”此文件中

5. 虚拟机重启后的项目启动

注意:虚拟机重启后如果ip地址有变更,则”4、前端配置“需要重新做一次,后端服务不用修改。

  1. 1、获取mysql8redis容器id
  2. docker ps -a
  3. 2、启动mysql8redis容器
  4. docker start mysql8的容器id
  5. docker start redis的容器id
  6. 3、启动java后端服务
  7. cd /home/his
  8. nohup java -jar com-medical-hospital-1.0-SNAPSHOT.jar &
  9. 4、启动nginx
  10. /usr/local/nginx/sbin/nginx
  11. 5、关闭防火墙:
  12. systemctl stop firewalld
  13. 6、浏览器访问测试即可

6、java环境变量设置(备用)

先检查机器是否有自带的jdk

rpm -qa | grep jdk

使用以下命令删除所有openjdk

rpm -e —nodeps java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64

删除完后再执行以下步骤

  1. 1、下载jdk-8u281-linux-x64.tar.gz
  2. 2、上传jdk-8u281-linux-x64.tar.gzlinux的/usr/local目录
  3. 3、解压缩
  4. cd /usr/local
  5. tar zxvf jdk-8u281-linux-x64.tar.gz
  6. 4、修改profile文件
  7. vim /etc/profile
  8. 在文件的最后增加如下行
  9. JAVA_HOME=/usr/local/jdk1.8.0_281
  10. export PATH=$JAVA_HOME/bin:$PATH
  11. 5、重新加载profile文件
  12. source /etc/profile
  13. 6、测试
  14. 分别执行javajavac命令看到有Usage *****输出,则表示配置成功。

7、nginx配置(备用)

  1. server { #此处发布医疗项目前端,对外端口80
  2. listen 80;
  3. server_name localhost;
  4. location / {
  5. root html;
  6. index index.html index.htm;
  7. }
  8. error_page 500 502 503 504 /50x.html;
  9. location = /50x.html {
  10. root html;
  11. }
  12. }
  13. server { #此处发布车辆管理项目,对外端口81
  14. listen 81;
  15. listen localhost:81;
  16. location / {
  17. root cars;
  18. index index.html index.htm;
  19. }
  20. }
  21. server { # 此处发布水务管理系统,对外端口82
  22. listen 82;
  23. listen localhost:82;
  24. location / {
  25. root water;
  26. index index.html index.htm;
  27. }
  28. }

8、docker容器时区修改为跟宿主机一致

docker容器时间用的是世界时间,即UTC,而国内的linux系统默认是中国标准时间CST,所以两者时间相差8小时,为了统一时间,docker容器需要执行以下命令来修改时间

  1. 1、先进入容器
  2. docker exec -it mysql8 bash
  3. 2、删除docker容器的时间文件
  4. mv /etc/localtime /etc/localtime.bak
  5. 3、设置中国时区
  6. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

9、错误解决

WARNING: IPv4 forwarding is disabled. Networking will not work.

vi /etc/sysctl.conf

添加net.ipv4.ip_forward=1至末尾

重启network服务 systemctl restart network

docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql8 (92e83a95c8c287d423c3f2cf39ba7f8358a5ed4e18ca2efc9194dd803f71be9f): (iptables failed: iptables —wait -t nat -A DOCKER -p tcp -d 0/0 —dport 3307 -j DNAT —to-destination img172.17.0.3:3306 ! -i docker0: iptables: No chain/target/match by that name.

重启docker服务

systemctl restart docker