精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring Boot打包不同環境配置與Shell腳本部署

開發 后端
本篇和大家分享的是 Spring Boot 打包并結合 Shell 腳本命令部署,重點在分享一個shell 程序啟動工具,希望能便利工作。

本篇和大家分享的是 Spring Boot 打包并結合 Shell 腳本命令部署,重點在分享一個shell 程序啟動工具,希望能便利工作;

  •  profiles指定不同環境的配置
  •  maven-assembly-plugin打發布壓縮包
  •  分享shenniu_publish.sh程序啟動工具
  •  linux上使用shenniu_publish.sh啟動程序

我把 Spring Boot 相關的技術文章整理成了 PDF,關注微信關注號 Java后端,回復 666 下載這一本技術棧手冊。

profiles指定不同環境的配置

通常一套程序分為了很多個部署環境:開發,測試,uat,線上 等,我們要想對這些環境區分配置文件,可以通過兩種方式:

  •  通過application.yml中編碼指定 profile.active=uat 方式指定
  •  通過mvn中profiles來區分不同環境對應的配置文件夾,人工可以手動在idea勾選生成不同環境的包(推薦)

這里我們要講的是第二種,首先在mvn中配置如下內容: 

  1. <profiles>  
  2.  2 <profile>  
  3.  3 <id>node</id>  
  4.  4 <properties>  
  5.  5 <!--傳遞給腳本的參數值-->  
  6.  6 <activeProfile>node</activeProfile> 
  7.  7 <package-name>${scripts_packageName}</package-name>  
  8.  8 <boot-main>${scripts_bootMain}</boot-main>  
  9.  9 </properties>  
  10. 10 <activation>  
  11. 11 <activeByDefault>true</activeByDefault>  
  12. 12 </activation>  
  13. 13 </profile>  
  14. 14 <profile>  
  15. 15 <id>node1</id>  
  16. 16 <properties>  
  17. 17 <activeProfile>node1</activeProfile>  
  18. 18 <package-name>${scripts_packageName}</package-name>  
  19. 19 <boot-main>${scripts_bootMain}</boot-main>  
  20. 20 </properties> 
  21. 21 </profile>  
  22. 22 <profile>  
  23. 23 <id>node2</id>  
  24. 24 <properties>  
  25. 25 <activeProfile>node2</activeProfile>  
  26. 26 <package-name>${scripts_packageName}</package-name>  
  27. 27 <boot-main>${scripts_bootMain}</boot-main>  
  28. 28 </properties>  
  29. 29 </profile> 
  30. 30 </profiles> 

節點粗解:

id:用來指定不同環境配置文件所在的目錄,如下我這里:

properties:該節點中的節點是可作為參數傳遞給其他配置文件,如我這里的package-name節點值就可以在另外的assembly.xml或者shell腳本文件中通過${package-name}獲取到,如下:

activeByDefault:指定默認環境配置文件夾

maven-assembly-plugin打發布壓縮包

對于springboot程序打包,可以分為jar和war,這里是jar包;有場景是咋們配置文件或者第三方等依賴包不想放到工程jar中,并且把這些文件壓縮成一個zip包,方便上傳到linux;此時通過maven-assembly-plugin和maven-jar-plugin就可以做到,mvn的配置如: 

  1. <plugin>  
  2.  2 <groupId>org.apache.maven.plugins</groupId>  
  3.  3 <artifactId>maven-jar-plugin</artifactId>  
  4.  4 <version>2.6</version>  
  5.  5 <configuration>  
  6.  6 <archive>  
  7.  7 <addMavenDescriptor>false</addMavenDescriptor>  
  8.  8 <manifest>  
  9.  9 <addClasspath>true</addClasspath>  
  10. 10 <classpathPrefix>lib/</classpathPrefix>  
  11. 11 <mainClass>${scripts_bootMain}</mainClass>  
  12. 12 </manifest>  
  13. 13 </archive>  
  14. 14 <!--打包排除項-->  
  15. 15 <excludes>  
  16. 16 <exclude>**/*.yml</exclude>  
  17. 17 <exclude>**/*.properties</exclude>  
  18. 18 <exclude>**/*.xml</exclude>  
  19. 19 <exclude>**/*.sh</exclude>  
  20. 20 </excludes>  
  21. 21 </configuration>  
  22. 22 <executions>  
  23. 23 <execution>  
  24. 24 <id>make-a-jar</id>  
  25. 25 <phase>compile</phase>  
  26. 26 <goals>  
  27. 27 <goal>jar</goal>  
  28. 28 </goals>  
  29. 29 </execution>  
  30. 30 </executions>  
  31. 31 </plugin>  
  32. 32  
  33. 33 <plugin>  
  34. 34 <groupId>org.apache.maven.plugins</groupId>  
  35. 35 <artifactId>maven-assembly-plugin</artifactId>  
  36. 36 <version>2.4</version>  
  37. 37 <!-- The configuration of the plugin -->  
  38. 38 <configuration>  
  39. 39 <!-- Specifies the configuration file of the assembly plugin -->  
  40. 40 <descriptors>  
  41. 41 <descriptor>${project.basedir}/src/main/assembly/assembly.xml</descriptor>  
  42. 42 </descriptors>  
  43. 43 </configuration>  
  44. 44 <executions>  
  45. 45 <execution>  
  46. 46 <id>make-assembly</id>  
  47. 47 <phase>package</phase>  
  48. 48 <goals>  
  49. 49 <goal>single</goal>  
  50. 50 </goals>  
  51. 51 </execution>  
  52. 52 </executions>  
  53. 53 </plugin> 

值得注意的地方如下幾點:

  •  mainClass節點:用來指定啟動main函數入口類路徑,如這里的:com.sm.EurekaServerApplication
  •  excludes節點:排除主jar包中配置等一些列后綴文件,因為我們要包這些配置文件放到主包外面
  •  descriptor節點:用來指定assembly插件對應的assembly.xml配置文件

有了上面mvn配置,我們還需要assembly.xml的配置,這里提取了結合shell腳本發布程序的配置: 

  1. <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd  
  3. http://maven.apache.org/ASSEMBLY/2.0.0 ">  
  4.     <id>${activeProfile}</id>  
  5.     <!--打包成一個用于發布的zip文件-->  
  6.     <formats>  
  7.         <format>zip</format>  
  8.     </formats>  
  9.     <!--true:zip中生成一級目錄(此處屏蔽,配合腳本需要profiles后綴)-->  
  10.     <includeBaseDirectory>false</includeBaseDirectory>  
  11.     <dependencySets>  
  12.         <dependencySet> 
  13.              <!--打包進zip文件的lib目錄-->  
  14.             <useProjectArtifact>false</useProjectArtifact>  
  15.             <outputDirectory>${package-name}-${activeProfile}/lib</outputDirectory> 
  16.             <unpack>false</unpack>  
  17.         </dependencySet>  
  18.     </dependencySets>  
  19.     <fileSets>  
  20.         <!-- 配置文件打包進zip文件的conf目錄 -->  
  21.         <fileSet> 
  22.              <directory>${project.basedir}/src/main/profiles/${activeProfile}</directory>  
  23.             <outputDirectory>${package-name}-${activeProfile}/conf</outputDirectory>  
  24.             <includes>  
  25.                 <include>**/*</include>  
  26.                 <!--<include>*.xml</include>-->  
  27.                 <!--<include>*.properties</include>-->  
  28.                 <!--<include>*.yml</include>-->  
  29.             </includes>  
  30.         </fileSet>  
  31.         <!--啟動腳本打包進zip文件--> 
  32.          <fileSet>  
  33.             <directory>${project.basedir}/src/main/scripts</directory>  
  34.             <outputDirectory></outputDirectory> 
  35.              <includes>  
  36.                 <include>**/*</include>  
  37.             </includes>  
  38.             <!-- 文件文件權限為777 -->  
  39.             <fileMode>777</fileMode>  
  40.             <!-- 目錄權限為777 -->  
  41.             <directoryMode>777</directoryMode>  
  42.             <!--腳本中參數變量為pom中的值 關鍵-->  
  43.             <filtered>true</filtered>  
  44.         </fileSet>  
  45.         <!-- 項目編譯出來的jar打包進zip文件 -->  
  46.         <fileSet>  
  47.             <directory>${project.build.directory}</directory>  
  48.             <outputDirectory>${package-name}-${activeProfile}/</outputDirectory>  
  49.             <includes>  
  50.                 <include>*.jar</include>  
  51.             </includes>  
  52.         </fileSet>  
  53.     </fileSets>  
  54. </assembly> 

重點節點介紹:

  •  formats節點:把配置文件和jar包等壓縮成什么文件格式,這里可以有:zip,tar等
  •  fileMode節點:指定scripts目錄下腳本文件(這里是:shenniu_publish.sh)在linux上文件權限為777
  •  filtered節點:腳本中參數變量為pom的profiles中properties的值(該配置,是把mvn中屬性值映射生成到sh文件中,如:${package-name})

完成上面配置后,此時我們可以通過idea上勾選切換不同環境來打zip包,如圖:

分享shenniu_publish.sh程序啟動工具

上面步驟完成了zip格式的發布包,我們再分享下啟動程序的shell腳本,該腳本具有的功能如:

  •  解壓zip+啟動jar包
  •  啟動jar包
  •  停止對應jar運行
  •  重啟jar程序

目前該shell中封裝了兩種啟動jar命令的方式:

  •  java -cp
  •  java -jar

如圖命令格式:

 來看全部的shell代碼: 

  1. #!/usr/bin/env bash  
  2. #可變參數變量  
  3. languageType="javac" #支持 java,javac,netcore 發布  
  4. #參數值由pom文件傳遞  
  5. baseZipName="${package-name}-${activeProfile}" #壓縮包名稱 publish-test.zip的publish  
  6. packageName="${package-name}" #命令啟動包名 xx.jar的xx  
  7. mainclass="${boot-main}" #java -cp啟動時,指定main入口類;命令:java -cp conf;lib\*.jar;${packageName}.jar ${mainclass}  
  8. #例子  
  9. baseZipName="publish-test" #壓縮包名稱 publish-test.zip的publish  
  10. packageName="publish" #命令啟動包名 publish.jar的xx   
  11. #固定變量  
  12. basePath=$(cd `dirname $0`/; pwd)  
  13. baseZipPath="${basePath}/${baseZipName}.zip"  #壓縮包路徑  
  14. baseDirPath="${basePath}" #解壓部署磁盤路徑  
  15. pid= #進程pid  
  16. #解壓 
  17. function shenniu_unzip()  
  18.      echo "解壓---------------------------------------------"  
  19.     echo "壓縮包路徑:${baseZipPath}"  
  20.     if [ ! `find ${baseZipPath}` ]  
  21.     then  
  22.         echo "不存在壓縮包:${baseZipPath}"  
  23.     else  
  24.         echo "解壓磁盤路徑:${baseDirPath}/${baseZipName}"  
  25.         echo "開始解壓..."  
  26.         #解壓命令  
  27.         unzip -od ${baseDirPath}/${baseZipName} ${baseZipPath}  
  28.         #設置執行權限  
  29.         chmod +x ${baseDirPath}/${baseZipName}/${packageName}  
  30.         echo "解壓完成。"  
  31.     fi  
  32.  
  33. #檢測pid 
  34. function getPid()  
  35.  
  36.     echo "檢測狀態---------------------------------------------"  
  37.     pid=`ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}'`  
  38.     if [ ${pid} ]  
  39.     then  
  40.         echo "運行pid:${pid}"  
  41.     else  
  42.         echo "未運行" 
  43.     fi  
  44.  
  45. #啟動程序  
  46. function start()  
  47.  
  48.     #啟動前,先停止之前的  
  49.     stop  
  50.     if [ ${pid} ]  
  51.     then  
  52.         echo "停止程序失敗,無法啟動"  
  53.     else  
  54.         echo "啟動程序---------------------------------------------"  
  55.         #選擇語言類型  
  56.         read -p "輸入程序類型(java,javac,netcore),下一步按回車鍵(默認:${languageType}):" read_languageType  
  57.         if [ ${read_languageType} ]  
  58.         then  
  59.             languageType=${read_languageType} 
  60.          fi  
  61.         echo "選擇程序類型:${languageType}"  
  62.         #進入運行包目錄  
  63.         cd ${baseDirPath}/${baseZipName}  
  64.         #分類啟動  
  65.         if [ "${languageType}" == "javac" ]  
  66.         then  
  67.             if [ ${mainclass} ]  
  68.             then  
  69.                 nohup java -cp conf:lib\*.jar:${packageName}.jar ${mainclass} >${baseDirPath}/${packageName}.out 2>&1 &  
  70.                #nohup java -cp conf:lib\*.jar:${packageName}.jar ${mainclass} >/dev/null 2>&1 &  
  71.             fi  
  72.         elif [ "${languageType}" == "java" ]  
  73.         then  
  74.             nohup java -jar ${baseDirPath}/${baseZipName}/${packageName}.jar >/dev/null 2>&1 &  
  75.             # java -jar ${baseDirPath}/${baseZipName}/${packageName}.jar  
  76.         elif [ "${languageType}" == "netcore" ]  
  77.         then  
  78.             #nohup dotnet run ${baseDirPath}/${baseZipName}/${packageName} >/dev/null 2>&1 &  
  79.             nohup ${baseDirPath}/${baseZipName}/${packageName} >/dev/null 2>&1 &  
  80.         fi  
  81.         #查詢是否有啟動進程  
  82.         getPid  
  83.         if [ ${pid} ]  
  84.         then  
  85.             echo "已啟動"  
  86.             #nohup日志  
  87.             tail -n 50 -f ${baseDirPath}/${packageName}.out  
  88.         else  
  89.             echo "啟動失敗"  
  90.         fi  
  91.     fi  
  92.  
  93. #停止程序  
  94. function stop()  
  95.  
  96.     getPid  
  97.     if [ ${pid} ]  
  98.     then  
  99.         echo "停止程序---------------------------------------------"  
  100.         kill -9 ${pid}  
  101.         getPid  
  102.         if [ ${pid} ]  
  103.         then  
  104.             #stop  
  105.             echo "停止失敗"  
  106.         else  
  107.             echo "停止成功"  
  108.         fi  
  109.     fi  
  110.  
  111. #啟動時帶參數,根據參數執行  
  112. if [ ${#} -ge 1 ]  
  113. then  
  114.     case ${1} in  
  115.         "start")  
  116.             start  
  117.         ;;  
  118.         "restart")  
  119.             start  
  120.         ;;  
  121.         "stop")  
  122.             stop  
  123.         ;;  
  124.         "unzip")  
  125.             #執行解壓  
  126.             shenniu_unzip  
  127.             #執行啟動  
  128.             start  
  129.         ;;  
  130.         *)  
  131.             echo "${1}無任何操作"  
  132.         ;;  
  133.     esac  
  134. else  
  135.     echo "  
  136.     command如下命令:  
  137.     unzip:解壓并啟動  
  138.     start:啟動  
  139.     stop:停止進程  
  140.     restart:重啟  
  141.     示例命令如:./shenniu_publish start  
  142.     "  
  143. fi 

正如上面小節說的,shell中的參數 package-name,activeProfile,boot-main 都是由mvn中profiles的properties中提供,是可變的參數,腳本代碼本身不需要人工去修改,只需要變的是mvn的參數即可;其實在我們生成zip包的時候,shell中的參數就被替換了,可以看zip中shell文件內容如:

把生成的zip上傳到linux上,通過命令解壓: 

  1. 1 unzip -od eureka-server-0.0.1-node eureka-server-0.0.1-node.zip 

其實shell腳本中包含有解壓命令,但是我在打包時放在了zip中,所以只能通過手動解壓了,當然可以調整;此時進入加壓目錄如此:

注:這里第一次執行./shenniu_publish.sh腳本時候,提示了錯誤信息;是由于我是在windows上編輯的這個腳本,其空格等和linux上不一樣,所以運行會有問題,要解決可以使用vim命令在linux把該文件轉成linux格式,如下命令: 

  1. 1 vim shenniu_publish.sh  
  2. 2 set ff=unix  
  3. 3 :wq 

執行完后,再來運行腳本./shenniu_publish.sh,此時有如下提示:

此刻我們文件是解壓狀態,因此只需要start命令啟動程序即可:

到這里shenniu_publish.sh腳本使用就完成了,只要腳本沒有提示錯誤,基本都能啟動jar服務;其他restart和stop命令也如此執行就行:

可以去研究下shell代碼,希望該腳本能給你帶來效率和好的學習思路,下面是測試用例git地址,腳本在eureka-server項目中:https://github.com/shenniubuxing3/springcloud-Finchley.SR2 

 

責任編輯:龐桂玉 來源: java版web項目
相關推薦

2021-09-01 11:10:55

Spring BootShellJava

2025-02-07 08:39:32

Shell部署測試

2024-12-06 09:27:28

2023-11-28 07:36:41

Shell腳本部署

2023-11-01 15:07:51

環境配置方式

2024-11-01 08:10:00

Vue開發

2024-08-14 17:02:22

Docker容器

2025-02-07 10:52:00

2020-11-05 10:40:07

Spring Boot多模塊Java

2025-09-26 05:00:00

2010-04-22 17:32:55

Aix shell

2025-01-03 16:27:35

SpringBoot代碼打包

2021-03-16 12:08:32

Python 服務器腳本

2025-08-15 07:39:11

2021-07-13 18:42:38

Spring Boot腳手架開發

2021-05-07 07:03:33

Spring打包工具

2020-02-24 22:50:15

Shell腳本MySQL

2021-12-08 09:00:00

數據庫Liquibase腳本

2024-08-09 08:52:26

2022-03-07 09:00:00

HTTPS證書中間件
點贊
收藏

51CTO技術棧公眾號

黄色成人在线观看| 亚洲GV成人无码久久精品| 伊人久久大香伊蕉在人线观看热v| 亚洲色图视频免费播放| 国产精品久久久久久久久久直播 | 91精品国产综合久久男男 | av电影在线观看| 国产另类ts人妖一区二区| 国产91精品黑色丝袜高跟鞋| 免费黄色激情视频| 欧美a级网站| 欧美军同video69gay| 国产原创中文在线观看| 日韩伦理在线电影| 91蜜桃在线免费视频| 91手机视频在线观看| 久久久久久不卡| 精品69视频一区二区三区Q| 中文字幕在线国产精品| 加勒比精品视频| 成人精品在线| 欧美性猛交xxxxxx富婆| 少妇av一区二区三区无码| 免费人成在线观看播放视频 | 精品三级在线观看| 亚洲第一狼人区| 在线免费av资源| 一区二区欧美国产| 在线视频91| 97超碰国产一区二区三区| 99国产精品国产精品毛片| 91在线高清视频| 一区二区乱子伦在线播放| 国产日韩一区| 久久久久久有精品国产| 中国毛片直接看| 97视频热人人精品免费| 国产亚洲欧美视频| 中文字幕在线看高清电影| 久久久精品国产**网站| 精品久久久久久无| 真实乱偷全部视频| 日韩欧美另类中文字幕| 日韩一区二区三区观看| 久久成年人网站| 91精品国产色综合久久不卡粉嫩| 欧美性感一类影片在线播放| 久草福利视频在线| 欧美国产日韩电影| 欧美视频在线观看一区二区| 亚洲 欧美 日韩系列| 992tv国产精品成人影院| 欧美在线一区二区三区| 特级西西444| 欧美日韩成人免费观看| 婷婷久久一区| 久久深夜福利免费观看| 日本精品在线免费观看| 性xxxx欧美老肥妇牲乱| 久久久999成人| 成年人二级毛片| 自产国语精品视频| 欧美区二区三区| 精品少妇theporn| 亚洲国产专区校园欧美| 欧美一区二粉嫩精品国产一线天| 青青草成人av| 久久一区国产| 国产精品一区二区三区久久久| 影音先锋国产在线| 久久激情五月婷婷| 亚洲iv一区二区三区| 性一交一乱一色一视频麻豆| 成人高清av在线| 久久精品欧美| 91吃瓜网在线观看| 一区二区三区在线观看动漫| 欧美视频在线观看视频| 一级毛片久久久| 欧美色老头old∨ideo| 欧美国产日韩另类 | 国产精品国产三级国产专区53 | 久久精品中文字幕电影| 久久久久久久久99| 亚洲伊人网站| 91老司机在线| 视频一区二区三区在线看免费看| 中文字幕电影一区| 国产aaa免费视频| 亚洲a∨精品一区二区三区导航| 正在播放亚洲一区| 国产熟女高潮一区二区三区| 第九色区aⅴ天堂久久香| 久久国产精品亚洲| 欧美男人亚洲天堂| 国产一区二区福利| 美女一区视频| av网站在线免费看推荐| 色婷婷久久久亚洲一区二区三区| www.色欧美| 亚洲另类av| 欧美激情国产高清| 最新国产中文字幕| 97久久人人超碰| 国产成年人在线观看| 9i看片成人免费高清| 777午夜精品免费视频| aaaaa一级片| 欧美日本亚洲韩国国产| 国产精品扒开腿做爽爽爽男男| 欧美一区二区三区成人片在线| 国产精品剧情在线亚洲| 大陆极品少妇内射aaaaa| 国产一区二区三区视频在线| 伊人久久免费视频| 青青国产在线观看| 国产乱子伦视频一区二区三区| 精品国产综合久久| 久久99亚洲网美利坚合众国| 欧美日韩国产成人在线免费| 免费看污片网站| 亚洲精品极品| 丁香五月网久久综合| 国产网站在线免费观看| 欧美日韩综合一区| 人人爽人人爽人人片| 国产日本精品| 精品日产一区2区三区黄免费 | 成人欧美一区二区三区在线| 成人亚洲性情网站www在线观看| 五月天中文字幕一区二区| 中文字幕第三区| 亚洲高清影视| 成人写真福利网| 日本视频在线免费观看| 91成人免费在线视频| 中文字幕在线观看的网站| 亚洲视频观看| 成人18视频| 日本无删减在线| 日韩美女视频一区二区在线观看| 亚洲AV成人无码精电影在线| 麻豆成人91精品二区三区| 午夜欧美一区二区三区免费观看| 成人免费看视频网站| 亚洲欧美福利视频| 亚洲色成人www永久网站| 26uuu精品一区二区| 无码人妻精品一区二区三区在线| 欧美交a欧美精品喷水| 97热精品视频官网| 天堂a√在线| 欧美性色视频在线| 成人在线一级片| 麻豆精品蜜桃视频网站| 一区二区三区四区| 国产乱码精品一区二区三区亚洲人| 久久精品在线视频| 亚洲av永久无码国产精品久久 | 中文字幕亚洲图片| 一级视频在线播放| 亚洲精品乱码久久久久久 | 国产精品色呦| 欧美性受xxx| av一本在线| 91精品国产综合久久精品 | 1024日韩| 欧美一区二区视频17c| 欧美一级做a| 欧美成人精品在线观看| 婷婷伊人综合中文字幕| 欧美性xxxxxx| 国产精品一区二区亚洲| 国产精品一区在线观看乱码| 国产h视频在线播放| 少妇一区二区视频| 91精品久久久久久久久久另类| av大全在线| 精品亚洲一区二区| 一道本在线视频| 亚洲一区二区三区自拍| 永久免费成人代码| 久久国产麻豆精品| 日本精品久久久久久久久久| 中文字幕亚洲影视| 97se亚洲综合| 欧美特黄aaaaaaaa大片| 久久偷看各类女兵18女厕嘘嘘| 日本免费网站在线观看| 在线免费观看不卡av| 久久久久久久福利| 国产亚洲精品资源在线26u| 欧美视频亚洲图片| 美女精品在线| 日本免费a视频| 欧美一区电影| 精品日本一区二区三区在线观看| 成人日韩视频| 国产精品99久久久久久久久久久久 | 野外做受又硬又粗又大视频√| 亚洲资源网站| 高清国产一区| 日韩伦理一区二区| 欧美在线观看网站| 91小视频xxxx网站在线| 亚洲系列中文字幕| 无码精品视频一区二区三区| 884aa四虎影成人精品一区| 国产精品第5页| 亚洲成人av在线电影| 婷婷社区五月天| 国产欧美一区二区精品性| 日本五十肥熟交尾| 国产成人在线电影| 五月婷婷之婷婷| 日韩高清一区在线| 黑鬼大战白妞高潮喷白浆| 欧美激情视频一区二区三区免费| 亚洲国产日韩美| 曰本一区二区三区视频| 国产日韩欧美精品| 五月亚洲婷婷| 亚洲最大福利视频网| 黄色成人在线观看网站| 国产成人鲁鲁免费视频a| 91豆花视频在线播放| 欧美成人精品一区二区三区| 免费在线午夜视频| xxxx欧美18另类的高清| 9191在线| 中文日韩在线观看| wwwww在线观看免费视频| 亚洲男人av在线| 欧美视频免费一区二区三区| 日韩成人av在线播放| 欧美 日韩 国产 在线| 欧美一级片在线观看| 国产乱人乱偷精品视频| 欧美精品黑人性xxxx| 国产美女自慰在线观看| 欧美美女网站色| 国产免费福利视频| 欧美一区二区视频观看视频| 99久久久国产精品无码网爆| 91精品国产一区二区| 国产视频在线一区| 日韩欧美色综合| 你懂的网站在线| 亚洲精品电影网| 亚洲欧美自偷自拍| 亚洲少妇激情视频| 成人精品一区二区三区免费| 伊人久久男人天堂| 黄色国产网站在线播放| 欧美日韩国产第一页| 超碰在线中文字幕| 欧美亚洲国产日韩2020| 伊伊综合在线| 国产精品一久久香蕉国产线看观看| 欧美激情福利| 97超级在线观看免费高清完整版电视剧| 亚洲综合影院| 九九九九九九精品| 国产精品午夜一区二区三区| 亚洲一区在线免费| 中文在线播放一区二区 | 欧美日韩在线视频免费观看| 欧美高跟鞋交xxxxxhd| 青青青免费在线视频| 国产精品久久久久久久av电影| 亚洲美女色播| 国产伦精品一区二区三区照片 | 亚洲日本成人女熟在线观看| √天堂资源地址在线官网| 久久久精品视频成人| 999精品网| 国产精品日本精品| 日韩精品一区二区三区中文在线| 精品视频在线观看| 国产精品久久天天影视| 一本久道高清无码视频| 视频一区二区中文字幕| 在线播放免费视频| 91在线精品一区二区| 三上悠亚在线观看视频| 亚洲国产一区二区三区青草影视| 中文字幕一区二区人妻视频| 欧美一级淫片007| 九九在线视频| 欧美日韩福利视频| 蜜桃视频成人m3u8| 国产99在线播放| 国产麻豆精品久久| japanese在线播放| 日韩**一区毛片| 午夜不卡久久精品无码免费| 国产精品三级视频| 亚洲精品视频在线观看免费视频| 欧美日韩另类国产亚洲欧美一级| 免费a视频在线观看| 色偷偷噜噜噜亚洲男人的天堂| mm视频在线视频| 97av自拍| 91蜜臀精品国产自偷在线| heyzo国产| 国产九色精品成人porny| 五月激情四射婷婷| 欧美日韩国产一中文字不卡| 国产视频一区二区三| 自拍偷拍亚洲精品| 亚洲天堂av影院| 成人高清在线观看| 国产精品国产一区| 天天插天天操天天射| 26uuu国产在线精品一区二区| 久艹视频在线观看| 欧美福利电影网| 9191在线| 国产精品久久久久久久久久久新郎| 精品人人人人| 免费在线黄网站| 国产在线播放一区| 国产一区在线观看免费| 在线欧美日韩国产| 国产精品秘入口| 欧美一区二区三区精品电影| 国产精品xxxav免费视频| 国产福利片一区二区| 久久精品国产第一区二区三区| 亚洲色成人网站www永久四虎| 婷婷久久综合九色国产成人 | 在线精品国产成人综合| 另类专区亚洲| 免费看成人午夜电影| av成人天堂| 好吊一区二区三区视频| 精品国产乱码久久久久久天美| 人妻无码一区二区三区久久99| 欧美激情日韩图片| 97精品久久| 免费av手机在线观看| 成人av手机在线观看| 91久久国产视频| 日韩精品在线观看一区二区| 北岛玲heyzo一区二区| 欧美一区二区视频在线| 日本一区中文字幕| 精品成人无码一区二区三区| 在线免费精品视频| 免费在线看黄| 91丝袜脚交足在线播放| 激情欧美国产欧美| 国产视频久久久久久| 色婷婷综合久久久中文字幕| 国产在线一二| 成人网在线视频| 欧美成人久久| 真人bbbbbbbbb毛片| 欧美性猛交xxxx久久久| 国产福利小视频在线观看| 国产精品主播视频| 欧美黄在线观看| 国产xxxxxxxxx| 欧美中文字幕久久| 成人黄色网址| 国内精品二区| 日韩成人一级大片| 欧美日韩午夜视频| 亚洲高清一二三区| 春暖花开亚洲一区二区三区| 亚洲一区高清| 成人综合在线网站| 黄色片中文字幕| 久久久久北条麻妃免费看| 成人福利一区| 欧美国产日韩在线播放| 亚洲欧洲在线观看av| 亚洲av无码一区二区三区dv| 欧美中文字幕视频| 久久久久久影院| 亚洲欧美在线不卡| 欧美午夜片在线观看| 色a资源在线| 日本在线高清视频一区| 国产成人综合亚洲网站| 国产91精品看黄网站在线观看| 日韩在线播放av| 香蕉一区二区| 天堂av.com| 91国产免费看| 色操视频在线| 亚洲在线不卡| 日本一级一片免费视频| 亚洲精品日韩丝袜精品| 免费高清视频在线一区| 丰满人妻一区二区三区53号| 91麻豆免费在线观看| 国产情侣激情自拍| 国产91在线视频| 在线观看一区|