1. 简介
目录分为两个部分,”01资料”主要是相关文档和录屏介绍,”02项目”是前后端的代码和压缩包。
接下来主要会修改相关的配置文件。
2. 准备环境
在服务器上安装好nginx、mysql8(必须mysql8)、redis。
2.1 安装nginx
nginx作用:发布前端文件(静态文件)
# 使用源码编译安装的方式来安装nginx
1、安装nginx需要的依赖
yum -y install gcc-c++ pcre-devel zlib-devel
2、上传nginx源代码到/opt目录
3、解压缩
cd /opt
tar zxvf nginx-1.19.1.tar.gz
4、安装
cd /opt/nginx-1.19.1
./configure && make && make install
5、启动nginx
/usr/local/nginx/sbin/nginx
至此,nginx安装完毕
注:
1、确认是否安装并启动成功,可以访问http://ip(ip为你linux机器的ip地址),看到welcome即可。
2、nginx对外服务端口默认为80
注:如果不成功
1、关闭防火墙: systemctl stop firewalld
2、如果没有IP地址:
修改网络的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33
关闭网络管理的服务: service NetworkManager stop
开机不自动启动服务: chkconfig NetworkManager off
重启网络服务: service network restort 如启动失败,需要重启计算机。 如果还是没有网络
2.2 安装docker
1、卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
3、设置yum源
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装docker引擎
yum install -y docker-ce
5、启动docker并把docker加入开机启动
systemctl start docker
systemctl enable docker
6、配置docker镜像加速器
vi /etc/docker/daemon.json
然后添加如下内容:
{"registry-mirrors": ["http://hub-mirror.c.163.com","https://reg-mirror.qiniu.com"]}
7、重启docker
systemctl restart docker
至此,docker安装完毕。
2.3 docker安装mysql8
1、拉取镜像文件
docker pull mysql:8.0
2、运行MySQL容器(把容器的3306端口映射到linux主机的3307端口,最后连接mysql通过3307端口来连接。因为主机的3306端口可能被占用)
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
# 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
# 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
3、查看容器id
docker ps -a
注意:此命令显示所有docker容器
docker ps
# 此命令显示正在运行的docker容器
如下图,有两个容器id,一个为redis,一个为mysql8
4、进入mysql8容器
docker exec -it 容器id bash (注:容器id通过docker ps -a获取,每个人执行命令出来的结果不一样)
docker exec -it mysql8 bash
5、在容器中操作mysql,使用mysql客户端
mysql -uroot -p
回车,输入密码baihe@1234,进入
6、修改远程连接密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'baihe@1234';
7、退出mysql
exit
8、退出容器
exit
9、使用navicat去连接mysql8.注意端口为.能连接成功则表示mysql8正常。
备注:mysql5.7授权命令
Grant all on *.* to 'root'@'%' identified by 'root用户的密码' with grant option;
flush privileges;
vmtsji9700@sandbox.com/111111
2.4 docker安装redis
1、拉取镜像文件
docker pull redis
2、创建一个目录用于存储redis的文件
mkdir -p /docker/redis/data
3、把目录访问权限设置为任何人都可以访问
chmod -R 777 /docker/redis/data
4、切换目录
cd /docker/redis
5、下载redis.conf配置文件
wget http://download.redis.io/redis-stable/redis.conf
6、修改配置文件
vi redis.conf
75行前面加上# - 注释掉 bind 127.0.0.1
94行yes修改为no - 把protected-mode yes 修改为protected-mode no
7、保存退出
8、启动redis容器
# -p 端口映射。第一个6379指的是linux的端口,第二个6379指的是docker容器的端口
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
9、进入客户端
docker exec -it redis /bin/bash
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 )
3.2、打开后进入BOOT-INF\classes。application.properties即为项目的配置文件。其中可以配置服务端口,数据库链接,redis链接
3.3、双击application.properties,使用记事本打开。注意:如果按照文档以上各步骤来做,此文件可以不用修改
3.4、修改后保存,关闭,选择是
3.5、发布后端项目
1、linux创建目录
mkdir -p /home/his
2、上传修改后的com-medical-hospital-1.0-SNAPSHOT.jar包到/home/his
3、切换目录
cd /home/his
4、启动后端项目
nohup java -jar com-medical-hospital-1.0-SNAPSHOT.jar &
注意:
nohup:表示程序运行的日志输出到nohup.out文件
java -jar com-medical-hospital-1.0-SNAPSHOT.jar :表示使用java命令来执行com-medical-hospital-1.0-SNAPSHOT.jar
-jar 制定文件类型为jar。
&:表示在后台运行命令,不挂断运行命令,当账户退出或终端关闭或CTRL+C时,程序仍然运行
5、查看后端服务日志
tail -f nohup.out
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、获取mysql8和redis容器id
docker ps -a
2、启动mysql8和redis容器
docker start mysql8的容器id
docker start redis的容器id
3、启动java后端服务
cd /home/his
nohup java -jar com-medical-hospital-1.0-SNAPSHOT.jar &
4、启动nginx
/usr/local/nginx/sbin/nginx
5、关闭防火墙:
systemctl stop firewalld
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、下载jdk-8u281-linux-x64.tar.gz
2、上传jdk-8u281-linux-x64.tar.gz到linux的/usr/local目录
3、解压缩
cd /usr/local
tar zxvf jdk-8u281-linux-x64.tar.gz
4、修改profile文件
vim /etc/profile
在文件的最后增加如下行
JAVA_HOME=/usr/local/jdk1.8.0_281
export PATH=$JAVA_HOME/bin:$PATH
5、重新加载profile文件
source /etc/profile
6、测试
分别执行java和javac命令看到有Usage *****输出,则表示配置成功。
7、nginx配置(备用)
server { #此处发布医疗项目前端,对外端口80
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server { #此处发布车辆管理项目,对外端口81
listen 81;
listen localhost:81;
location / {
root cars;
index index.html index.htm;
}
}
server { # 此处发布水务管理系统,对外端口82
listen 82;
listen localhost:82;
location / {
root water;
index index.html index.htm;
}
}
8、docker容器时区修改为跟宿主机一致
docker容器时间用的是世界时间,即UTC,而国内的linux系统默认是中国标准时间CST,所以两者时间相差8小时,为了统一时间,docker容器需要执行以下命令来修改时间
1、先进入容器
docker exec -it mysql8 bash
2、删除docker容器的时间文件
mv /etc/localtime /etc/localtime.bak
3、设置中国时区
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 172.17.0.3:3306 ! -i docker0: iptables: No chain/target/match by that name.
重启docker服务
systemctl restart docker