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