目录
一、申请服务器的IP
(1)阿里云申请IP
(2)设置服务器的密码
(3)远程终端——MobaXterm
二、Docker
(1)安装Docker
(2)镜像加速
(3)删除镜像/容器指令
删除镜像
删除容器
三、MySQL
(1)拉取MySQL镜像
(2)阿里云服务器开放端口权限
(4)导入sql文件
四、Springboot
(1)创建目录
(2)在本地配置application.yml
(3)在本地打包jar发送到服务器
(4)如需在本地对jar进行加密编译(代码混淆)
(5)编写Dockerfile
(6)构建springboot容器
(7)运行容器
五、Vue
(1)在本地修改配置
(2)构建静态文件
(3)dist移动至服务器
(4)拉取nginx的Docker镜像
(5)编写nginx.conf
(6)运行docker
(7)浏览器输入url测试
一、申请服务器的IP
(1)阿里云申请IP
例如申请的IP为8.146.208.150(已失效,仅为演示),服务器是ubuntu的linux服务器
(2)设置服务器的密码
密码是xxxx,用户是root
(3)远程终端——MobaXterm
使用MobaXterm为例:
然后输入密码xxxx
二、Docker
以ubuntu服务器为例:
【Docker】在 Ubuntu 上安装 Docker 的详细指南_ubuntu安装docker-CSDN博客
(1)安装Docker
sudo apt update
#检查系统版本
lsb_release -a
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
#启动docker
sudo systemctl start docker
#启动linux时自动启动
sudo systemctl enable docker
(2)镜像加速
vim /etc/docker/daemon.json
输入以下:
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
然后输入:wq
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
(3)删除镜像/容器指令
删除镜像
sudo docker rmi -f hospital-image
sudo docker rmi -f hospital-ui
删除容器
sudo docker rm -f hospital-spring
sudo docker rm -f hospital-vue
三、MySQL
(1)拉取MySQL镜像
#拉取mysql8.0.22版本
sudo docker pull mysql:8.0.22
#查看所有镜像
docker images
#运行mysql8.0容器
#容器名字mysql8.0
# --restart=always表示 Docker 容器会在退出时自动重启
# 暴露的端口7255
# 密码123456
sudo docker run -d \
--restart=always \
--name=mysql8.0 \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 7255:3306 \
mysql:8.0.22
#查看所有运行的容器
docker ps
(2)阿里云服务器开放端口权限
开放7211前端端口,开放7233后端端口,开放7255数据库MySQL的端口
(3)navicat连接服务器
看到绿色的线说明连接成功了
(4)导入sql文件
四、Springboot
(1)创建目录
hospital-backend存放后端代码
hospital-nginx存放前端
Imgdata存放该后端项目产生的文件
(2)在本地配置application.yml
server:
port: 7233 #后端的端口
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://8.146.208.150:7255/hospital3?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true #后端IP+服务器端口+数据库名
username: root
password: 123456 #数据库密码
mybatis-plus:
mapper-locations: classpath*:mybatis/*.xml
configuration:
map-underscore-to-camel-case: true
bear:
#image-address: /home/ubuntu/hosptal/Imgdata/ #图片和视频保存的本地路径
image-address: /root/hosptal/Imgdata/
mmbt-ip: 8.146.208.150 #mmbt模型的服务器IP
mmbt-port: 7266 #mmbt模型的服务器port
cnn-gcn-ip: 8.146.208.150 #cnn-gcn模型的服务器IP
cnn-gcn-port: 7267 #cnn-gcn模型的服务器port
(3)在本地打包jar发送到服务器
Hospital-1.0-SNAPSHOT.jar上传到/root/hosptal/hospital-backend/
(4)如需在本地对jar进行加密编译(代码混淆)
在pom.xml中引入classfinal-maven-plugin插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>net.roseboy</groupId>
<artifactId>classfinal-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<password>123456</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
<packages>com.bear.hospital</packages>
<cfgfiles>application.yml</cfgfiles>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>classFinal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
验证运行生成的 Hospital-1.0-SNAPSHOT-encrypted.jar
java -javaagent:Hospital-1.0-SNAPSHOT-encrypted.jar -jar Hospital-1.0-SNAPSHOT-encrypted.jar
输入pom.xml设置密码的123456
然后Hospital-1.0-SNAPSHOT-encrypted.jar移入服务器
(5)编写Dockerfile
vim /root/hosptal/hospital-backend/Dockerfile
# 使用jdk11版本
FROM openjdk:11-jdk
# 在镜像中创建一个目录存放我们的应用
VOLUME /root/hosptal/temp
# 将jar包添加到容器中并更名为hospital.jar
ADD *.jar hospital.jar
# 暴露容器内的端口给外部访问
EXPOSE 7233
CMD ["java", "-jar", "/hospital.jar"]
#如果是加密的编译文件
#CMD ["java", "-javaagent:/hospital.jar", "-jar", "/hospital.jar"]
然后输入:wq
文件在目录中的存放:
(6)构建springboot容器
# .的意思是在当前目录下搜索有没有dockerfile文件
# hospital-image是容器名
sudo docker build -t hospital-image .
(7)运行容器
# 运行容器
# hospital-spring是容器名字,hospital-image是镜像名字
sudo docker run -d -p 7233:7233 --name hospital-spring hospital-image
# 查看后端程序运行日志
sudo docker logs hospital-spring
五、Vue
(1)在本地修改配置
port: 8091, proxy: "http://localhost:9999"
这些都是不要紧的,属于vue的动态代理,但是打包后的dist是静态项目
(2)构建静态文件
在本地对vue项目进行构建dist
npm run build
点击index.html是可以直接跳转到网页的
(3)dist移动至服务器
移动到/root/hosptal/hospital-nginx/html/目录
(4)拉取nginx的Docker镜像
sudo docker pull nginx
sudo docker images
(5)编写nginx.conf
在/root/hosptal/hospital-nginx/目录下创建nginx.conf:
vim /root/hosptal/hospital-nginx/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/json;
sendfile on;
keepalive_timeout 65;
server {
listen 7211; #注意这里是前端端口
# server_name 8.146.208.150; #注意这里是服务器IP
location / {
root /usr/share/nginx/html/dist; #注意这里
index index.html index.htm;
}
location /admin {
proxy_pass http://8.146.208.150:7233/admin; #注意这里是后端反向代理
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 X-Forwarded-Proto $scheme;
}
location /doctor {
proxy_pass http://8.146.208.150:7233/doctor;
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 X-Forwarded-Proto $scheme;
}
location /notice {
proxy_pass http://8.146.208.150:7233/notice;
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 X-Forwarded-Proto $scheme;
}
location /patient {
proxy_pass http://8.146.208.150:7233/patient;
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 X-Forwarded-Proto $scheme;
}
location /consultation {
proxy_pass http://8.146.208.150:7233/consultation;
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 X-Forwarded-Proto $scheme;
}
location /model {
proxy_pass http://8.146.208.150:7233/model;
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 X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
然后输入:wq
(6)运行docker
# 容器的名字hospital-nginx,镜像的名字nginx
# 暴露的端口7211
# 把[html文件夹]和[nginx.conf文件]挂载
docker run -d \
--name hospital-nginx \
--restart=always \
-p 7211:7211 \
-v /root/hosptal/hospital-nginx/html:/usr/share/nginx/html \
-v /root/hosptal/hospital-nginx/nginx.conf:/etc/nginx/nginx.conf \
nginx
(7)浏览器输入url测试
输入8.146.208.150:7211
前端部署成功
输入账号,登录
说明前后端联调成功