项目上线部署发布

服务器与操作系统:
服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵
服务器从硬件上等同于电脑PC,而服务器跟PC都是由CPU、内存、主板、硬盘、电源等组成
但服务器的性能要远远超过PC,因为它要保证全年无休

在这里插入图片描述

操作系统:操作系统是作为应用程序与计算机硬件之间的一个接口
没有安装操作系统的计算机,被称为裸机, 如果想在裸机上运行自己的程序,就需要使用机器语言
安装操作系统之后,就可以配置一些高级语言的环境,进行高级语言的开发
Linux操作系统
Linux系统是最具稳定性的系统
Linux是天生就比Windows更具安全性
免费,Linux服务器在应用开发上更能节约成本
后台项目部署:
安装虚拟机:
可以到54章博客进行查看
安装软件环境
可以到55章博客进行查看

在这里插入图片描述

查看Java版本:
//java -version
查看tomcat是否能够正常启动:
# 进入到tomcat目录
cd /usr/tomcat/
# 启动tomcat
./bin/startup.sh 
# 关闭tomcat
./bin/shutdown.sh
关闭防火墙:
#查看已经开放的端口,一般都没有开放:
firewall-cmd --list-ports #firewall-cmd防火墙的命令,firewall可以称之为防火墙
#开启端口
   firewall-cmd --zone=public --add-port=8080/tcp --permanent
#命令含义:
   –zone #作用域
    –add-port=8080/tcp #添加端口,格式为:端口/通讯协议
   –permanent #永久生效,没有此参数重启后失效
#重启防火墙
firewall-cmd --reload               #重启firewall
#关闭防火墙
systemctl stop firewalld.service    #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动,Linux一般默认是设置的这个,所以当你操作了systemctl stop firewalld.service这个命令时,一般下次启动Linux,就不需要再次执行了
systemctl start firewalld  	        #开启firewall
systemctl enable firewalld.service  #开启firewall开机启动
#上面命令中,后面的service可以省略
firewall-cmd --state  #查看默认防火墙状态(关闭后显示not running,开启后显示running)
其实mysql -u用户名 -p密码,中的用户名和密码可以与对应的-u和-p不用空格隔开
登录MySQL,检查数库连接是否正常:
-- 创建用户
CREATE USER 'JiuYuan'@'%' IDENTIFIED BY 'JiuYuan@123';
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'JiuYuan'@'%' IDENTIFIED BY 'JiuYuan@123';
-- 刷新
FLUSH PRIVILEGES;
使用SQLYog连接Linux上的MySQL, 导入SQL脚本 创建项目所需的数据库:

在这里插入图片描述

项目打包 发布:
对应的项目可以看之前的博客,在59章博客最后面,前后端项目都有
修改项目的数据库配置文件,数据库的IP,用户名,密码都要修改
修改 Constants常量类中的项目URL
//生产环境地址
public static final String LOCAL_URL = "http://192.168.52.100:8080";
修改后启动项目,测试一下 保证数据库连接没有问题

在这里插入图片描述

检查pom.xml文件,打包方式必须是war,编译版本为JDK11
<packaging>war</packaging>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>
执行打包命令:
//清除target文件夹
clean 
//打包,跳过测试
package
复制出target目录下的 war包:

在这里插入图片描述

这个war包,解压后,就是对应项目的内容,就是上面的lagou_edu_home-1.0-SNAPSHOT
修改一下项目名称(大多数情况下,如果代码里面有针对项目名的,最好是直接剩下项目名称,防止错误的发生,也可以简便访问):

在这里插入图片描述

上传到tomcat中,启动测试:

在这里插入图片描述

//启动服务器
./bin/startup.sh
//查看日志
tail -f logs/catalina.out
//日志的错误,并不绝对,注意看访问是否可以
//访问接口
http://192.168.52.100:8080/lagou_edu_home/course?methodName=findCourseList
war包存放在服务器中,启动服务器或者访问时都会解压对应war包(一般若存在对应解压后的名称文件,那么不会操作)
前端项目部署:
修改配置文件:
前端项目的配置文件有两个(如果没有,那么就需要每个文件自己修改地址了),一个是开发环境的配置文件,一个是生产环境的配置文件

在这里插入图片描述

我们先修改一下开发环境文件的后端服务器访问地址,然后进行一下测试
/*
.env.development 文件
VUE_APP_API_BASE = http://192.168.52.100:8080/lagou_edu_home
*/
修改生产环境的配置文件(可以理解为打包):
/*
.env.production 文件
VUE_APP_API_BASE = http://192.168.52.100:8080/lagou_edu_home
*/
上面的基本都是在对应时期进行生效
比如执行npm run serve命令,会自动加载.env.development文件和.env文件
执行npm run build 就加载了.env和.env.production,使得都去对应服务器获取数据
注意:.env文件无论是开发还是生成都会加载
虚拟机的ip地址,最开始是没有的,如127.0.0.1,显示的其实是主机的
只有主机有,因为虚拟机就是文件(镜像文件)组成的软件,无法获得真正主机的东西
所以说,虚拟机基本就是凭空出现的机子,主要用来远程访问
前端项目打包:
修改 vue.config.js 配置文件:
复制下面内容即可:
module.exports = {
  // relative path for dev
  publicPath: process.env.NODE_ENV === "production" ? "/edu-boss/" : "./",
  // for gh-pages
  indexPath: "index.html", //入口文件
  assetsDir: "static", //文件放置位置
  lintOnSave: process.env.NODE_ENV !== "production",
  productionSourceMap: false,
  css: {
    // sourceMap: process.env.NODE_ENV !== 'production'
 },
  devServer: {
    open: true,
    port: 8081
 }
};

执行下面的打包命令:
//npm run build
在项目下会生成一个 dist 目录:

在这里插入图片描述

在本地tomcat的webapps目录下,创建一个edu-boss文件夹,将dist目录中的文件拷贝到里面

在这里插入图片描述

启动本地tomcat,访问前端项目路径为:
//http://localhost:8081/edu-boss/
//其中8081端口是该tomcat的访问路径
前端项目发布:
验证没有问题后,将edu-boos项目压缩,上传到tomcat服务器
//复制一份tomcat
cp -r /usr/tomcat/ /usr/tomcat2
//上传 edu-boss.zip ,并解压,注意各有各的解压方式,但基本都是取出
//windows有些会帮你创建对应文件夹,实际上还是取出,只不过有些操作会自动帮你创建文件夹并放入
unzip edu-boss.zip 
//删除edu-boss.zip
rm -rf edu-boss.zip
修改tomcat2里的conf里的server.xml 配置文件,修改3个端口,避免与tomcat1冲突

在这里插入图片描述

其中8444端口或者除了上面两个端口外的某些配置端口,如8009端口
若不改的话,虽然可能有报错提示(8009端口一样会有报错提示),但可以运行,但可能在某些时候会产生冲突,即最好设置不一样的
在部署后端项目的tomcat1的 webapps目录下创建一个 upload文件夹,保存图片

在这里插入图片描述

运行前端项目:
//进入tomcat2,启动项目
./bin/startup.sh 
//动态查看日志
tail -f logs/catalina.out 
运行后端项目:
//进入tomcat1,启动项目
./bin/startup.sh 
//动态查看日志
tail -f logs/catalina.out 
前后端都启动后,进行测试,还有,如果出现了tomcat启动要等待许久,可以看这个博客:https://my.oschina.net/u/3251146/blog/1936229,最后:如果需要启动jar包并且后台启动,可以使用如下:“java -jar xxx.jar >out.log &”(一般包括&)
注意:启动的服务器的资源,会与服务器的名称进行关联,所以服务器的名称要小心改变,最好是关闭后,进行改变
否则之前运行的会访问不到了,还要注意的一点是:war包不能在tomcat运行时删除,否则会将相应的工程文件夹可能自动删除(你可以自己测试)
注意:linux的目录划分非常严谨,不像windows一样" / “和” \ “都可以,而linux必须要” / “,所以代码里面最好使用” / "
最后说一下一个插件:copilot
在vs code里面可以搜索到对应插件,可能需要版本支持
要注意的是要有github一个账号,网上搜索,可以注册,这个插件申请使用地址https://copilot.github.com/
最后会发邮件给你,那么就可以使用了,一个使用方法,注释后,回车等待,ctrl+enter出现多余结果(注意等待)
注意:不同的会话,操作同一个虚拟机时,对于命令操作所占端口是不同的(因为不能是一样的)
所以说启动操作一般会出现多个不同端口的服务启动,但关闭操作基本会将对应所以关联的端口一起关闭了
最后要注意:打包进行复制时,最后将对应名称改成原来复制项目的名称
Logo

更多推荐