Linux环境部署web项目(前后端分离、jar包、war包部署、Nginx)
jar包和War包的区别
jar包可以直接通过命令运行,jar包中的依赖含有Tomcat服务器组件依赖(Springboot项目)
java -jar xxx.jar
war包的运行需要依赖外部的Tomcat服务器,将war包路径配置到Tomcat目录webapps目录下,运行Tomcat即可,所以在开发项目中,如果将来是需要配置在外部Tomcat服务器中运行的项目,需要在依赖中将Tomcat依赖排除。
前端项目的部署(部署在Nginx中)
1.项目在Linux环境打包
下载依赖
npm install --unsafe-perm --rgistory=http://registory.npm.taobao.org
生产环境打包,生成一个dist目录,目录结构中包含了index.HTML和static目录
npm run build:prod
2.部署在Nginx服务器上(前提:主机已经部署好了Nginx)
在Nginx的配置文件中更改配置选项
location{
root: dist目录路径
}
user root //防止权限问题出现
3.Nginx路径映射(前端服务与后端服务联机)
location{
代理头(代码后续网上找)
proxy-pass http://后端服务器主机IP:服务端口;(单机)
proxy-pass http://集群名;(集群)
}
集群配置
upstream 集群名{
server 后端服务主机名1:端口 weight=5;//权重,可不用配置
server 后端服务主机名2:端口 weight=3;//权重,可不用配置
}
后端项目的部署(单体)
jar包模式:后端项目打包命令
主机安装maven
mvn package;
在新建的target目录中包含打包好的jar包,保存jar包即可
执行命令,&意思是后台执行
nohup java -jar xxx.jar &
项目就已经启动了
war包模式:后端项目打包命令
主机安装Tomcat
mvn package;
注意:
1.在开发项目时,pom文件中packaging标签打war包
2.包依赖是排除Tomcat依赖
3.根目录下创建新类,继承于SpringBootServletInitializer类,重写configure方法
public class ApplicationServer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(启动类.class);
}
}
在新建的target目录中包含打包好的war包,保存war包即可
将war包保存在Tomcat的安装目录下的webapps目录下,
更改Tomcat配置文件(conf文件夹中的server.xml),在Host标签中添加Context标签,改成根目录访问(XXX是war包名,不加后缀)
<Host>
<Context path="/" docBase="....webapps/xxx" reloadable="false">
</Host>
启动Tomcat服务器
service tomcat start
项目就已经启动了
后端项目的部署(集群)
很简单,就是将相同的单体项目部署在不同的主机即可。