问题处理:
1.vue基于轮播图的报错:依赖
在Vue 2底下,轮播图要安装的版本:npm install vue-awesome-swiper@3 --save-dev,切记!! 报错: !!vue-style-loader!css-loader?{"sourceMap":true}!../../node_modules/vue-loader/lib/style-compiler/index?{"vue":true,"id":"data-v-97503b26","scoped":true,"hasInlineConfig":false}!stylus-loader?{"sourceMap":true}!../../node_modules/vue-loader/lib/selector*
css样式把stylus删了
npm install stylus --save-dev npm install stylus-loader css-loader style-loader --save-dev
《MathChina》项目部署文档简介
本文档的目的:辅助我们的工作人员能够利用文档对一个崭新的、已经配置好CentOS 7镜像的实体服务器和云服务器,独立完成MathChina前后端项目的布置。
备注:请将本文中所有0.0.0.0的ip换成实际地址!!
Windows环境操作下列步骤,需要安装的软件:
- IDEA开发工具
- VS Code
- Xshell个人学生版(社区版)
- Xftp个人学生版(社区版)
云服务器配置及其需求环境
前后端及其服务相关接口简介
前后端接口逻辑
前端在Nginx下访问接口80(http协议)http://0.0.0.0/
前端向后端POST(上传)的接口为8088,地址http://0.0.0.0/index/login
前端Vue版本:
Vue-CLI 4 + Vue 2.x + Element-UI(现在Vue 3.x + Element-UI Plus已经成熟,后期更新)
后端SpringBoot版本:
在pom.xml版本管理中,2.3.0.RELEASE
服务器相关软件版本:
- 操作系统:CentOS 7.6
- Docker容器:Docker 1.13.1 + docker-compose 1.27.4 + docker-compose version 3
- MySQL:8
- Nginx:1.19.6
- Redis:6.0.10
前端POST地址
前端页面访问:http://0.0.0.0/
前端登录POST后端:http://0.0.0.0:8088/index/login
前端POST数据类型&后端返回数据类型
后端不能利用@RequestBody处理前端的application/x-www-form-urlencoded
@RequestBody处理application/json,本项目处理方法是利用HttpServletRequest来接收application/x-www-form-urlencoded,也就是form-data,取出parameter之后转成String处理
响应回前端之后,我们就处理json中的message,打印在前端
后端对于跨域请求的配置CorsConfig及其@CrossOrigin
后端建立名为config的package,建立CorsConfig.java
package com.mathwork.pack.config;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
/**
* @author: 实验室
* @Date: 2021-1-15 11:33:26
* @Description:
*/
@Configuration
public class CorsConfig {
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
// 设置你要允许的网站域名,如果全允许则设为 *
config.addAllowedOrigin("*");
// 如果要限制 HEADER 或 METHOD 请自行更改
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
// 这个顺序很重要哦,为避免麻烦请设置在最前
bean.setOrder(0);
return bean;
}
}
之后在controller上面使用注解@CrossOrigin
注意:本CorsConfig.java只能在SpringBoot低于2.3.0版本使用,高于此版本报错!
数据库的表名&相关字段
数据库名:mathdata
数据表名:mathkami
字段:(名称--类型)
bisai——varchar
timu——varchar
kahao——varchar
password——varchar
sign——varchar
begintime——datetime
deadtime——datetime
数据表名:mathdizhi
字段:(名称--类型)
bisai——varchar
timu——varchar
level——varchar
dizhi——varchar
code——varchar
服务器的前端环境布置
Nginx配置文件
该配置文件在服务器的目录:
/root/nginx/nginx.conf
文件名:nginx.conf
#user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html last;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
dist放入nginx-html下
我们在之前把root下面的nginx文件夹已经建好了,下面将Vue前端编译完成的dist目录下的文件全部放入nginx文件夹
首先,在nginx下面建立html文件夹
最后,将Vue编译(Vue源代码需要在CMD终端编译才能转换为浏览器能识别的Html和Css和Js)
npm run build
编译后的文件在Vue项目根目录的dist文件夹,下面的所有文件都是最终文件,原封不动放到nginx/html里面
服务器的后端环境布置
在windows环境,编译jar包之前,我们需要将application-pro.yml处理完毕
application-pro.yml编写
server:
port: 8088
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://0.0.0.0:3306/mathdata?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: wcq980220
redis-manager:
host: 0.0.0.0:6379
mybatis:
typeAliasesPackage: com.mathwork.pack.mapper
mapperLocations: classpath*:mapper/*Mapper.xml
编写完application-pro.yml,我们在后端项目的文件夹下面CMD执行
# 跳过测试打包
mvn clean package -Dmaven.test.skip=true
这样就打包完毕了!
如果不想执行CMD,则需要在IDEA的最右侧侧边栏,点击maven,再分别点击clean和package
服务器基本环境布置
docker安装
#安装
yum install docker
#检验安装是否成功
docker --version
#开机启动docker
chkconfig docker on
#启动
systemctl start docker
docker-compose安装
#使用daocloud安装(目前找不到文件)
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#使用github安装
sudo curl -L https://github.com/docker/compose/releases/download/2.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#给docker-compose加权限
sudo chmod +x /usr/local/bin/docker-compose
# 检查是否安装成功
docker-compose --version
阿里云docker镜像加速设置
cd /etc/docker
vim daemon.json
{
"registry-mirrors": ["https://fyib7jrj.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
注意:以上镜像为可选配置,你可以选择不添加该配置
在所有文件编写和放置到指定位置之后,运行命令
docker-compose up -d
如果失败,则要继续运行以下命令
sudo systemctl daemon-reload
sudo systemctl restart docker
之后重试
docker-compose up -d
docker配置文件编写
在服务器的root目录下面(可以利用Xftp操作)
-
新建文件夹nginx
-
新建文件Dockerfile,编写Dockerfile
-
新建文件docker-compose.yml,编写docker-compose.yml
-
打包后端文件进jar包,放入目录
编写Dockerfile
FROM java:8
EXPOSE 8080
ADD pack-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]
编写docker-compose.yml
version: "3"
services:
nginx:
image: nginx:latest
ports:
- 80:80
volumes:
- /root/nginx/html:/usr/share/nginx/html
- /root/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true
mysql:
image: mysql:latest
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=wcq980220
redis:
image: redis:latest
pack:
image: pack:latest
build: .
ports:
- 8088:8088
depends_on:
- mysql
- redis
最终在cd ~下(即root目录下)文件架构如下:
[root@VM-8-16-centos ~]# ls
docker-compose.yml Dockerfile nginx pack-0.0.1-SNAPSHOT.jar
最后一步,docker-compose up -d拉起来,就可以公网IP访问了
PS:如何删除正在使用的镜像和容器,并将新的拉起来
如上图所示,先运行
docker rm -f 容器id
再运行
docker rmi 镜像名称
随后再利用
docker-compose up -d
将新的pack:latest拉起来!