springcloud gateway 項目打包部署運行

新建一個springboot項目而後作了一個小demo跳轉到baidujava

pomlinux

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5     <parent>
 6         <groupId>com.drawnblue</groupId>
 7         <artifactId>pom</artifactId>
 8         <version>0.0.1-SNAPSHOT</version>
 9     </parent>
10     <groupId>com.drawblue</groupId>
11     <artifactId>gateway</artifactId>
12     <version>0.0.1-SNAPSHOT</version>
13     <name>gateway</name>
14     <description>Demo project for Spring Boot</description>
15 
16     <properties>
17         <java.version>1.8</java.version>
18     </properties>
19 
20     <dependencies>
21         <dependency>
22             <groupId>org.springframework.boot</groupId>
23             <artifactId>spring-boot-starter</artifactId>
24         </dependency>
25 
26         <dependency>
27             <groupId>org.springframework.boot</groupId>
28             <artifactId>spring-boot-starter-test</artifactId>
29             <scope>test</scope>
30         </dependency>
31 <!--        <dependency>
32             <groupId>org.springframework.boot</groupId>
33             <artifactId>spring-boot-starter-web</artifactId>
34         </dependency>-->
35         <dependency>
36             <groupId>org.springframework.cloud</groupId>
37             <artifactId>spring-cloud-starter-gateway</artifactId>
38             <version>2.1.2.RELEASE</version>
39         </dependency>
40         <dependency>
41             <groupId>org.springframework.cloud</groupId>
42             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
43             <version>0.9.0.RELEASE</version>
44         </dependency>
45         <dependency>
46             <groupId>org.springframework.boot</groupId>
47             <artifactId>spring-boot-starter-actuator</artifactId>
48         </dependency>
49     </dependencies>
50 
51     <build>
52         <plugins>
53             <plugin>
54                 <groupId>org.springframework.boot</groupId>
55                 <artifactId>spring-boot-maven-plugin</artifactId>
56                 <executions>
57                     <execution>
58                         <goals>
59                             <goal>repackage</goal>
60                         </goals>
61                     </execution>
62                 </executions>
63             </plugin>
64             <plugin>
65                 <groupId>org.apache.maven.plugins</groupId>
66                 <artifactId>maven-assembly-plugin</artifactId>
67                 <version>2.4</version>
68                 <executions>
69                     <execution>
70                         <id>bundle</id>
71                         <phase>package</phase>
72                         <goals>
73                             <goal>single</goal>
74                         </goals>
75                         <configuration>
76                             <descriptors>
77                                 <descriptor>${basedir}/src/main/assembly/assembly.xml</descriptor>
78                             </descriptors>
79                         </configuration>
80                     </execution>
81                 </executions>
82             </plugin>
83         </plugins>
84     </build>
85 
86 </project>

其中項目同其餘隨筆上的pom項目,因爲springcloud gateway 不能在tomcat運行,因此必定要註釋掉web依賴web

屬性文件:spring

spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.135.129:8848
    gateway:
      routes:
        - id: test-gateway
          uri: http://www.baidu.com
          predicates:
            - Path=/test/**
          filters:
          - StripPrefix=1
server:
  port: 8800

我將該項目註冊在nacos上,另外注意apache

- StripPrefix=1不加的話就會報錯,由於跳轉後有前綴致使跳轉錯誤不能跳轉到百度
本項目搞的是個demo,nacos上沒有其餘服務,因此啓動類上能夠不加任何註解去發現註冊到nacos上的服務
項目結構以下:

assembly.xml瀏覽器

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
    <!-- 不配置會報錯:Assembly ID must be present and non-empty -->
    <id>bin</id>
    <formats>
        <!--壓縮文件的類型-->
        <format>tar.gz</format>
    </formats>
    <!--指明打包後是否有分發包的最外層,若是不寫,默認是true-->
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <!--須要包含的文件與輸出的路徑-->
        <fileSet>
            <!--指明要對src/main/assembly/bin文件夾操做-->
            <directory>src/main/assembly/bin</directory>
            <!--指明通過assembly插件打包後bin目錄會放置在項目根目錄下-->
            <outputDirectory>bin</outputDirectory>
            <!--指明bin目錄下全部文件的權限爲755-->
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <includes>
                <include></include>
            </includes>
            <outputDirectory>conf</outputDirectory>
            <fileMode>0644</fileMode>
        </fileSet>
    </fileSets>
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
        </dependencySet>
    </dependencySets>
</assembly>

start.shtomcat

#!/bin/bash

cd `dirname $0`
BIN_DIR=`pwd`
cd ..
DEPLOY_DIR=`pwd`
SERVER_NAME=gateway
JAR_File=$DEPLOY_DIR/lib/gateway-0.0.1-SNAPSHOT.jar

echo " "

PIDS=`ps -ef | grep java | grep "$JAR_File" |awk '{print $2}'`
if [ -n "$PIDS" ]; then
    echo "ERROR: The server $SERVER_NAME already started!"
    echo "PID: $PIDS"
    echo " "
    exit 1
fi

LOGS_DIR=$DEPLOY_DIR/logs

if [ ! -d $LOGS_DIR ]; then
    mkdir $LOGS_DIR
fi

STDOUT_FILE=$LOGS_DIR/stdout.log

JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
JAVA_DEBUG_OPTS=""
if [ "$1" = "debug" ]; then
    JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
fi
JAVA_JMX_OPTS=""
if [ "$1" = "jmx" ]; then
    JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
fi
JAVA_MEM_OPTS=""
BITS=`java -version 2>&1 | grep -i 64-bit`
if [ -n "$BITS" ]; then
    JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
else
    JAVA_MEM_OPTS=" -server -Xms1g -Xmx1g -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
fi

echo -e "Starting the server $SERVER_NAME ...\c"
nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -jar $JAR_File -Ddubbo.application.logger=slf4j > $STDOUT_FILE 2>&1 &

echo "OK!"
PIDS=`ps -ef | grep java | grep "$JAR_File" | awk '{print $2}'`
echo "Server $SERVER_NAME startup, PID: $PIDS"
echo "STDOUT: $STDOUT_FILE"
echo " "

restart.shspringboot

#!/bin/bash
cd `dirname $0`
./stop.sh
./start.sh

stop.shbash

#!/bin/bash

cd `dirname $0`
cd ..
DEPLOY_DIR=`pwd`

SERVER_NAME=gateway
JAR_File=$DEPLOY_DIR/lib/gateway-0.0.1-SNAPSHOT.jar

echo " "

PIDS=`ps -ef | grep java | grep "$JAR_File" |awk '{print $2}'`
if [ -z "$PIDS" ]; then
    echo "ERROR: The server $SERVER_NAME does not started!"
    echo " "
    exit 1
fi

echo -e "Stopping the server $SERVER_NAME ...\c"
for PID in $PIDS ; do
    kill $PID > /dev/null 2>&1
done

COUNT=0
while [ $COUNT -lt 1 ]; do    
    echo -e ".\c"
    sleep 1
    
    PIDS=`ps -ef | grep java | grep "$JAR_File" |awk '{print $2}'`
    if [ -z "$PIDS" ]; then        
        COUNT=2         
    fi
done

echo "OK!"
echo " "

status.shapp

#!/bin/bash

cd `dirname $0`
cd ..
DEPLOY_DIR=`pwd`

SERVER_NAME=gateway
JAR_File=$DEPLOY_DIR/lib/gateway-0.0.1-SNAPSHOT.jar

echo " "

PIDS=`ps -ef | grep java | grep "$JAR_File" |awk '{print $2}'`
if [ -n "$PIDS" ]; then
    echo "The server $SERVER_NAME is running!"
    echo "PID: $PIDS"
    echo " "
    exit 1
fi

if [ -z "$PIDS" ]; then
    echo "The server $SERVER_NAME is stop!"
    echo " "
    exit 1
fi

stop.sh

#!/bin/bash

cd `dirname $0`
cd ..
DEPLOY_DIR=`pwd`

SERVER_NAME=gateway
JAR_File=$DEPLOY_DIR/lib/gateway-0.0.1-SNAPSHOT.jar

echo " "

PIDS=`ps -ef | grep java | grep "$JAR_File" |awk '{print $2}'`
if [ -z "$PIDS" ]; then
    echo "ERROR: The server $SERVER_NAME does not started!"
    echo " "
    exit 1
fi

echo -e "Stopping the server $SERVER_NAME ...\c"
for PID in $PIDS ; do
    kill $PID > /dev/null 2>&1
done

COUNT=0
while [ $COUNT -lt 1 ]; do    
    echo -e ".\c"
    sleep 1
    
    PIDS=`ps -ef | grep java | grep "$JAR_File" |awk '{print $2}'`
    if [ -z "$PIDS" ]; then        
        COUNT=2         
    fi
done

echo "OK!"
echo " "

打包後target目錄

部署項目

將tar.gz部署到linux上解壓,進入bin文件啓動,啓動後,開放端口,而後再從新加載一下

注意:啓動時候要確保nacos已經啓動且端口能夠訪問

而後查看nacos

瀏覽器中輸入:http://192.168.135.130:8800/test,回車

而後看到跳轉至百度頁面

 

相關文章
相關標籤/搜索