springboot-部署到centos7

環境

系統:centos7 64位html

安裝jdk

第一步:下載java

先進入官網:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmllinux

 

方法一:下載安裝包到本地,再上傳到服務器git

根據系統選擇相應版本,服務器是centos7 64位的,因此選擇下載linux x64的安裝包github

 

 

 

下載成功後,使用xtfp 5將安裝包上傳到/usr/local(根據本身習慣,選擇目錄)目錄下web

 

 

 

方法二:wget下載spring

複製安裝包下載路徑:數據庫

 

  

執行wget命令:apache

wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz

 以下圖所示:vim

 

 第一種下載方法要先下載到本地,再使用工具上傳到centos7服務器上, 比較耗時,推薦使用wget方式來下載安裝包。 

 

 

第二步:解壓

切換到安裝包保存目錄:

cd /usr/local/

 

解壓到當前目錄:

tar -zxvf jdk-8u161-linux-x64.tar.gz

 

 

第三步:配置環境變量

打開系統環境變量配置文件:

vim /etc/profile

 

在profile文件末尾加上以下內容:

## JAVA JAVA_HOME=/usr/local/jdk1.8.0_161 JRE_HOME=/usr/local/jdk1.8.0_161/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH

 

輸入:wq保存退出。

 

第四步:配置文件生效

爲了使得配置文件當即生效,執行以下命令

source /etc/profile

 

 

第五步:測試jdk是否安裝成功

查看jdk版本信息:

java -version

 

控制檯輸出以下信息,表示安裝成功:

 

安裝tomcat

第一步:下載

tomcat下載方式與jdk下載方式相似,也是有兩種方法。

 先進入tomcat官網:https://tomcat.apache.org/download-80.cgi

方法一:先從官網下載到本地,再上傳到服務器

選擇下載tomcat8.5.30版本,以下圖:

 

下載成功後,使用xtfp 5將安裝包上傳到/usr/local(根據本身習慣,選擇目錄)目錄下

 

  

方法二:wget下載

wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.30/bin/apache-tomcat-8.5.30.tar.gz

 

 

第二步:解壓

 切換到tomcat下載目錄:

cd /usr/local

 

解壓到當前目錄:

tar -zxvf apache-tomcat-8.5.30.tar.gz

 

第三步:啓動

 切換到解壓後的tomcat的bin目錄下:

cd /usr/local/apache-tomcat-8.5.30/bin

 

執行啓動命令:

./startup.sh

 

查看tomcat啓動日誌:

tail -f ../logs/catalina.out

發現啓動耗時太長,解決方法可參考此篇文章:https://blog.csdn.net/u013939884/article/details/72860358

我本身是經過修改JRE中的java.security文件爲 securerandom.source=file:/dev/urandom來解決該問題。

 

第四步:測試

 訪問網址:http://ip:8080/,訪問時將ip替換爲本身的服務器ip,出現以下畫面,表示tomcat啓動成功。

 

備註:若是tomcat啓動成功,可是該頁面又訪問不了,請檢查8080端口是否開放。 

 

演示項目

如下部署方式均基於maven構建的springboot項目,項目名稱springboot-helloworld,開發工具爲IntelliJ IDEA,如下檢查爲idea。

 項目目錄結構

 

代碼

 ServletInitializer類:該類用於已tomcat方式啓動springboot

package com.lnjecit.springboothelloworld; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringbootHelloworldApplication.class); } } 

 

HelloWorldController類:

package com.lnjecit.springboothelloworld.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @author * @create 2018-04-16 16:06 **/ @RequestMapping("/helloWorld") @RestController public class HelloWorldController { @RequestMapping("/sayHello") public String sayHello(@RequestParam("name") String name) { return "Hi, " + name; } }

 

以war包方式部署 

步驟:

第一步:將項目打包方式修改成war

 

 

 

第二步:在idea中Terminal控制檯執行maven打包命令

mvn clean package -Dmaven.test.skip=true

命令執行完畢後,在target目錄下生成了war包,以下圖:

 

 第三步:使用xftp將war包上傳到服務器/usr/local/apache-tomcat-8.5.30/webapps目錄下

先將該目錄下的ROOT目錄刪除,而後將springboot-helloworld-0.0.1-SNAPSHOT.war重命名爲ROOT.war

 

 第四步:啓動tomcat

 第五步:測試

在瀏覽器中輸入:http://ip:8080/helloWorld/sayHello?name=李白 ip改成本身服務器的ip

 

到這裏就部署成功了。

 

可是這樣每次以war包方式打包,war包比較大,咱們解壓解壓以後,能夠看到文件總共13.7M,lib包也是13.7M,而classes文件夾只有2.69kb

 

  

能夠看到lib包的大小佔到了90%以上,實際代碼容量很是小,每次都從新打war包,其實是比較麻煩的,也沒有必要。因此在部署實際項目的時候,若是決定要以war包方式部署項目,我一般在pom依賴沒有改變的時候,只會將項目target目錄下的classes目錄覆蓋服務器上的classes目錄便可,以下圖:

這樣能夠大幅度的提高項目部署速度,尤爲是在網速比較慢的時候。

 只有當pom依賴有改動,才從新打一個完整的war包部署到服務器上。

 

以jar包方式部署

完整jar包

第一步:將項目打包方式修改成jar

 

 

第二步:在idea中Terminal控制檯執行maven打包命令

mvn clean package -Dmaven.test.skip=true

 

命令執行完畢後,在target目錄下生成了jar包,以下圖:

 第三步:使用xftp將jar包上傳到服務器/usr/local/springboot-helloworld目錄下

 

第四步:運行jar包

先切換到jar包所在目錄:

cd /usr/local/springboot-helloworld/

 

運行jar:

java -jar springboot-helloworld-0.0.1-SNAPSHOT.jar

 

出現以下信息表示啓動成功:

 

第五步:測試

在瀏覽器中輸入:http://ip:8080/helloWorld/sayHello?name=李白 ip改成本身服務器的ip

 

 

到這裏就部署成功了。

 

缺點:

一、打包後,配置文件和依賴包都在jar包內部,配置文件沒法修改。而實際項目中,開發環境的配置與服務器環境配置並不徹底一致,例如數據庫信息,日誌信息保存路徑等,想要修改配置文件也沒法修改

二、項目依賴包通常不會有變化,可是每次打包都會把依賴包打包到jar包內

三、控制檯頁面一關閉,springboot服務也關閉

 

Jar包、配置文件、依賴包分開打包

 

因爲每次以jar包方式部署會有上面說的缺點,爲了解決這些問題,能夠將jar包、配置文件、依賴包分開打包。分開打包後,有以下好處:

一、能夠實現當依賴包有變化時,才從新打包依賴包

二、配置文件也能夠修改

三、因爲依賴包和jar包分離,能夠減小jar文件大小。jar文件減小,能夠縮短上傳到服務器的時間

 

 第一步:pom文件修改以下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lnjecit</groupId>
    <artifactId>springboot-helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot-helloworld</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>-->

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>*.properties</exclude>
                        <exclude>*.yml</exclude>
                    </excludes>
                    <archive>
                        <manifest>
                            <!-- 爲依賴包添加路徑, 這些路徑會寫在MANIFEST文件的Class-Path下 -->
                            <mainClass>com.lnjecit.springboothelloworld.SpringbootHelloworldApplication</mainClass>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <!-- 打包時 MANIFEST.MF文件不記錄的時間戳版本 -->
                            <useUniqueVersions>false</useUniqueVersions>
                        </manifest>
                        <manifestEntries>
                            <!-- 在Class-Path下添加配置文件的路徑 -->
                            <Class-Path>config/</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-xmls</id>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target/config</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${basedir}/src/main/resources</directory>
                                    <includes>
                                        <include>*.properties</include>
                                        <include>*.yml</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/lib/</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


</project>

 

第二步:在idea中Terminal控制檯執行maven打包命令

mvn clean package -Dmaven.test.skip=true

 

命令執行完畢後,在target目錄下生成了jar包、config、lib三部分,以下圖:

 

 第三步:使用xftp將jar包上傳到服務器/usr/local/springboot-helloworld/deploy目錄下

 

第四步:運行jar包

先切換到jar包所在目錄:

cd /usr/local/springboot-helloworld/deploy/

 

springboot默認啓動端口爲8080,爲了測試分開打包後能夠修改配置文件,在application.properties文件中修改啓動端口爲8081

 

運行jar:

java -jar springboot-helloworld-0.0.1-SNAPSHOT.jar

 

 在控制檯能夠看到啓動端口變成了8081,以下圖:

 

測試:

在瀏覽器中輸入:http://ip:8081/helloWorld/sayHello?name=阿飛 ip改成本身服務器的ip

 

demo下載地址:https://github.com/linj6/springboot-learn/tree/master/springboot-helloworld

以jar包方式啓動還有一個問題,當springboot服務啓動端口關閉,服務也中止了。後面介紹將springboot設置爲後臺服務,啓動窗口關閉後,服務依然運行。

 

Jar包運行

普通運行

java -jar springboot-helloworld-0.0.1-SNAPSHOT.jar

 

指定端口運行

java -jar springboot-helloworld-0.0.1-SNAPSHOT.jar --server.port=8082

 

後臺運行

方法一:

nohup java -jar springboot-helloworld-0.0.1-SNAPSHOT.jar &

 

啓動後再當前目錄生成一個nohup.out文件

 

 

查看啓動後的服務:

ps -ef | grep java

 

 

關閉服務:

kill -9 3730

 

 

方法二: 

nohup java -jar demo.jar & > log.file 2>&1 &

 

 

springboot項目部署方式介紹完了,我的推薦使用將jar、配置文件、依賴包分開打包的方式來部署項目。

相關文章
相關標籤/搜索