Java部署到远程服务 war包/jar包


Java项目部署(后端)

前言jar包和war包启动区别

  • jar包:执行SpringBootApplication的run方法,启动IOC容器,然后创建嵌入式Servlet容器

  • war包: 先是启动Servlet服务器,服务器启动Springboot应用(springBootServletInitizer),然后启动IOC容器

一、Liunx war包部署:

1.部署环境:

  • jdk
  • tomcat
  • 其余环境自行配置(诸如:redis,activeMq,mySql)

2.将项目打成war包并使用工具上传

  • 1.如果是springboot/springCloud项目需要修改启动类下面的 pom.xml文件

    • 修改打包方式 (不存在可以自定义添加)

         <packaging>war</packaging>
      
    • 移除tomcat依赖

         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                 <exclusion>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-tomcat</artifactId>
              </exclusion>
         </exclusions>
         </dependency>
      
    • 添加支持 外部tomcat 依赖,用于编译和测试

        	<dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-tomcat</artifactId>
           <!-- 该包只在编译和测试的时候使用 -->
            <scope>provided</scope>
        </dependency>
      
    • 配置启动类Springboot和springCloud的启动类:继承*SpringBootServletInitializer,重写configure,让war包支持tomcat启动

        @Configuration
        @EnableAutoConfiguration
        @ComponentScan
        public class StartApplication extends SpringBootServletInitializer{
              public static void main(String[] args) {
                  SpringApplication.run(StartApplication.class, args);
              }
              
              @Override
              protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
                  return builder.sources(StartApplication.class);
              }
              
        }
      

注:

  • 为了避免资源无法访问可以在pom.xml中设置如下操作
<build>
      <!-- 应与application.properties(或application.yml)中context-path保持一致 -->
    <finalName></finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    <!-- 配置java版本-->
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.7</source>
            <target>1.7</target>
            <fork>true</fork>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  • 4.使用maven 的intall指令打成war包(采用项目名即父类模块 install 这样可以不用考虑顺序一键完成所有项目打包)

  • 5.将打好的war上传到tomcat 的webapps目录下即可(可以使用WinScp连接服务进行拖拽上传)

3.修改tomcat信息:(修改 tomcat下的conf/server.xml文件)

  • 1.修改tomcat的端口号:将8080端口修改为 80(修改后如下)

     <Connector port="80" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443" />
    
  • 2.配置虚拟路径

       <Host name="localhost"  appBase="/alidata/www/"
             unpackWARs="true" autoDeploy="true">
        <Context path="/" docBase="/alidata/www/shop" debug="0"/>
        <Context path="/file" docBase="/alidata/www/image" debug="0"/>
       	<Context path="/solr" docBase="/alidata/www/solr" debug="0"/>
         <!-- SingleSignOn valve, share authentication between web applications
              Documentation at: /docs/config/valve.html -->
         <!--
         <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
         -->
         <!-- Access log processes all example.
              Documentation at: /docs/config/valve.html
              Note: The pattern used is equivalent to using pattern="common" -->
         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                prefix="localhost_access_log" suffix=".txt"
                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
       </Host>
    
 <Host name="localhost"  appBase="/alidata/www/"/>
  • name:对应的是你项目的域名; 默认localhost即可;域名可以直接给外网配置域名即可。
  • appBase :war包的存放位置:默认为:webapps在tomcat的webapps中,如果不想存储在tomcat 的webapps文件中可以再此处修改;tomcat运行后自动部署的文件配置指的就是此处。
  <Context path="/file" docBase="E:/goods" debug="0" reloadable="true" crossContext="true" />
  • path: 浏览器访问路径:本地 —— localhost:端口+path
  • docBase: path路径访问的根目录文件:本地 —— localhost:端口+path 代表浏览器访问 本地的 E盘下的goods

注:Context 标签可以配置多个,前提是path唯一 并且服务气的内存足够大可以保证项目运行,即多个虚拟路径,Context虚拟路径;第一个Context支持 ip+"/" 也支持 ip +path值;亦或 域名+ / or 域名 + path值

4、注意事项:

注:前后端不分离的项目或者项目前端页面是tomcat进行虚拟映射配置需要注意。例如:项目名叫
path="/file" 使用file作为虚拟路径,在页面 Css和Js引入
中存在如何引入:

<link href="/file/css/perfect-scrollbar.min.css" rel="stylesheet" type="text/css" />

则上传到服务的tomcat前需要修改为

<link href="/file/file/css/perfect-scrollbar.min.css" rel="stylesheet" type="text/css" />

因为至第一个/file 表示的是前端页面存放的位置,E:/goods目标引入文件在 E:/goods/shop 虚拟路径/file替代了 E:/goods

  • 解决方法 起一个和Css等引入路径不冲突的变量为 虚拟路径名称
  • 上传前修改前端页面中 Css等文件的引用路径,即增加一个 tomcat中配置的path名称

二、Windows 服务部署 war

操作过程大致如上

三、Linux服务部署 jar(推荐用于 springBoot,springCloud项目部署)

1.服务环境配置

  • jdk
  • 其余环境自行配置(诸如:redis,activeMq,mySql)

2.项目直接使用 mvn指令 install 打成jar包

3.使用远程连接软件(如WinScp等)拖拽上传

4.使用指令进行项目启动

  java  -jar sparrow.jar 

含义:启动sparrow.jar项目,窗口被锁定。关闭指令框者服务关闭

推荐使用如下指令:

nohup java -jar sparrow.jar > sparrow.txt 2>&1 &

含义: 不断执行 java sparrow.jar项目并将完整日志输入到sparrow.txt文件中

  • nohup 是linux不断执行的意思可以保证jar启动后可以再后台一直运行(即管理指令框项目不会关闭)
  • sparrow.txt 标准日志输出的文件位置

  • 2>&1 也就表示将错误重定向到标准输出上(不加上 日志输出不完整)

注:如果服务内存过小可以指定Xms(分配堆最小内存)和Xmx(最大内存) 实现服务内存资源性能最大化。

nohup java -Xms128m -Xmx512m -jar sparrow.jar > sparrow.txt 2>&1 &
  • Xms分配堆最小内存,默认为物理内存的1/64;-Xmx分配最大内存,默认为物理内存的1/4。

四、Windows部署 jar包

1.服务环境配置

  • jdk
  • 其余环境自行配置(诸如:redis,activeMq,mySql)

2.项目直接使用 mvn指令 install 打成jar包

3.使用远程连接软件(如WinScp等)拖拽上传

4.打开cmd: doc界面运行如下指令,进行项目启动(doc界面不能关闭)

  java  -jar sparrow.jar 	

注:如果想要保证项目在后台运行,可以执行百度


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM