精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩av一二三区| 91人人澡人人爽| 天天综合视频在线观看| 国产主播一区二区| 国产69精品99久久久久久宅男| 国产制服丝袜在线| 性欧美video另类hd尤物| 有码一区二区三区| 亚洲高清视频一区| 黑人精品一区二区| 日本亚洲天堂网| 久久久久国产精品www| 99久久精品免费视频| 粉嫩av国产一区二区三区| 亚洲成人一区在线| 亚洲午夜精品一区二区三区| 日本黄色三级视频| 激情av综合网| 国产成人亚洲综合91精品| 国产亚洲精品久久777777| 国产欧美日韩精品一区二区三区| 精品欧美一区二区在线观看 | 国产精品扒开腿做爽爽爽软件| 亚洲精品成人久久| 欧美日韩理论片| 肉色欧美久久久久久久免费看| 亚洲老司机在线| 亚欧精品在线| 牛牛影视精品影视| 不卡高清视频专区| 99re国产视频| 国产男男gay网站| 日产欧产美韩系列久久99| 97婷婷涩涩精品一区| 久久久综合久久| 亚欧美无遮挡hd高清在线视频| 国产视频在线观看一区二区| 人妻 日韩 欧美 综合 制服| 日本一区二区三区播放| 欧美日韩专区在线| 别急慢慢来1978如如2| 九色porny丨首页入口在线| 夜夜嗨av一区二区三区中文字幕| 五月天综合婷婷| 欧美成人xxx| 国产精品乱码一区二三区小蝌蚪| 日韩国产在线一区| 日本国产在线| 久久久综合视频| 就去色蜜桃综合| 色视频在线看| 久久久精品免费观看| 乱一区二区三区在线播放| 少妇荡乳情欲办公室456视频| 丰满岳乱妇一区二区三区| 1区1区3区4区产品乱码芒果精品| 国产三级按摩推拿按摩| 国产呦萝稀缺另类资源| 91久久在线播放| av中文字幕免费| 懂色av中文字幕一区二区三区| 亚洲中国色老太| 精品久久久无码中文字幕| 国产一区二区0| 成人在线观看网址| 全国男人的天堂网| 91丝袜呻吟高潮美腿白嫩在线观看| 国产偷久久久精品专区| 亚洲欧美一区二区三| 久久免费视频一区| 亚洲一二三区精品| 91精品久久| 亚洲福利视频三区| 亚洲精品无码久久久久久| **在线精品| 欧美亚洲自拍偷拍| 午夜激情视频网| 黑色丝袜福利片av久久| 亚洲欧美综合v| 女同久久另类69精品国产| 欧美在线黄色| 91sa在线看| 亚洲国产无线乱码在线观看| 国产一区二区h| 久久久久网址| 9191在线| 亚洲成人黄色影院| 别急慢慢来1978如如2| 玖玖玖电影综合影院| 日韩成人av在线播放| 美女av免费看| 亚洲国产日本| 国产一区视频在线| 日韩中文字幕综合| 国产精品传媒视频| 亚洲美免无码中文字幕在线 | 日韩欧美成人精品| 欧美丝袜在线观看| 欧美一区二区三区红桃小说| 最新日韩中文字幕| 日韩欧美激情视频| 美洲天堂一区二卡三卡四卡视频| 国产精品国产精品国产专区蜜臀ah| 免费福利在线视频| 一区二区三区四区五区视频在线观看 | 国产成人精品一区二区在线小狼| 亚洲涩涩av| 九九热这里只有精品免费看| 亚洲第一区av| 97成人超碰视| 精品免费久久久久久久| 另类中文字幕国产精品| 亚洲精品一区在线观看| 一本一本久久a久久| 国产亚洲欧洲| 99在线视频首页| av成人手机在线| 欧美三级欧美成人高清www| 午夜福利123| 精品盗摄女厕tp美女嘘嘘| 欧美精品videosex牲欧美| 夜夜躁很很躁日日躁麻豆| 国产午夜精品理论片a级大结局| 成人污网站在线观看| 激情久久一区二区| 伊人久久久久久久久久久| 日韩欧美国产亚洲| 国产99久久久精品| 4444在线观看| 国产一区二区三区免费观看在线| 在线看欧美日韩| 亚洲图片在线视频| 99久久国产综合色|国产精品| 穿情趣内衣被c到高潮视频| 九九久久国产| 亚洲最大中文字幕| 波多野结衣家庭主妇| 国产午夜精品在线观看| 精品中文字幕av| 欧美一级全黄| 日韩av色综合| 国产日本在线观看| 在线观看亚洲a| 久久精品—区二区三区舞蹈| 久久久青草婷婷精品综合日韩| 国产乱码精品一区二区三区卡| 日本在线视频www鲁啊鲁| 欧美成人一区二区三区| 强行糟蹋人妻hd中文| 国产精品99精品久久免费| 成人免费看片视频在线观看| 日韩视频1区| 久久久久久国产精品| 丰满熟妇人妻中文字幕| 午夜私人影院久久久久| 中文字幕精品视频在线| 亚洲视频1区| 欧美亚洲丝袜| 久久亚洲精品中文字幕| 久久九九热免费视频| 99草在线视频| 亚洲va在线va天堂| 加勒比综合在线| 日韩福利电影在线观看| 一区在线电影| 中文字幕一区图| 98精品国产自产在线观看| 欧美美女搞黄| 欧美性三三影院| 粉嫩av性色av蜜臀av网站| 国产成人精品一区二区三区网站观看| 欧美国产视频一区| 日韩动漫一区| 国产啪精品视频| 毛片大全在线观看| 亚洲欧美中文另类| 国产精品视频在线观看免费| 一区二区理论电影在线观看| 国产熟女高潮一区二区三区| 视频一区中文字幕| 日本精品免费视频| 欧美人妖视频| 成人在线免费观看视视频| 亚洲丝袜精品| 亚洲男人天堂视频| 国产视频www| 精品久久久久久久久久久久久久 | 欧美残忍xxxx极端| 成人在线看片| 国产成人a视频高清在线观看| 欧美老肥婆性猛交视频| 欧美中文在线| 日韩欧美不卡在线观看视频| 青青草免费观看视频| 亚洲日本丝袜连裤袜办公室| 风间由美一二三区av片| 麻豆国产精品一区二区三区 | 国产老女人精品毛片久久| 99爱视频在线| 欧美一区二区三区另类 | 国产精品一区电影| gogo高清午夜人体在线| 自拍偷拍亚洲区| 亚洲av电影一区| 日韩一级精品视频在线观看| 无码人妻av一区二区三区波多野 | 在线国产精品播放| 婷婷五月综合激情| 欧美一区二区三区影视| 国产成人a v| 婷婷综合五月天| 天天天天天天天天操| 久久久久久久综合狠狠综合| 日韩精品xxx| 久久成人羞羞网站| 熟妇人妻va精品中文字幕 | 久久av电影| 国产精品亚洲综合| 国产电影一区二区| 国产精品久久久久久av福利软件 | 妖精视频一区二区| 国产酒店精品激情| 邪恶网站在线观看| 噜噜爱69成人精品| 97在线播放视频| 亚洲免费成人| 国产精品入口芒果| 欧美777四色影| 在线观看成人av| 久久精品国产99久久| 日本精品一区| 综合伊思人在钱三区| 国产一区在线观| 国产+成+人+亚洲欧洲在线| 亚洲综合成人婷婷小说| 国产成人视屏| 亚洲综合自拍一区| 日韩一区二区三区在线看| 亚洲japanese制服美女| 国产精品免费精品自在线观看| 国产原创欧美精品| 欧美美女被草| 成人免费自拍视频| 99精品女人在线观看免费视频| 国产精品爽爽爽爽爽爽在线观看| 免费污视频在线一区| 国产精品福利片| 人人精品久久| 92看片淫黄大片看国产片| 日韩高清在线观看一区二区| av资源站久久亚洲| 精品五月天堂| 欧美激情一区二区三区在线视频| 亚洲涩涩av| 日韩中文字幕一区二区| 欧美超碰在线| 熟妇熟女乱妇乱女网站| 女主播福利一区| 欧美成人三级在线视频| 国产婷婷精品| jizz欧美性11| 国产毛片一区二区| 天天躁日日躁狠狠躁av| 93久久精品日日躁夜夜躁欧美| 亚洲国产欧美视频| 中文成人av在线| 国产极品国产极品| 亚洲成人av福利| 亚洲欧美偷拍视频| 欧美日韩黄色影视| 亚洲爱情岛论坛永久| 日韩国产精品亚洲а∨天堂免| 免费黄色片在线观看| 久久久999成人| 999福利在线视频| 国产91色在线免费| 国产精品igao视频网网址不卡日韩| 成人女人免费毛片| 久久爱www成人| 天天做天天爱天天高潮| 亚洲二区在线| 污污动漫在线观看| 顶级嫩模精品视频在线看| 欧美特级黄色录像| 亚洲免费av在线| 国产精品久久久久久久妇| 欧美亚洲综合久久| 韩国av在线免费观看| 中文字幕国产亚洲2019| 欧美xxxx性xxxxx高清| 国产成人福利视频| jizz国产精品| 午夜精品短视频| 狠狠干综合网| 蜜桃免费在线视频| 成人av一区二区三区| 91无套直看片红桃在线观看| 亚洲福利视频导航| 91麻豆成人精品国产免费网站| 亚洲精品99久久久久| 米奇精品一区二区三区| 欧美一级免费看| 亚洲精品18| 夜夜爽99久久国产综合精品女不卡 | 国产美女作爱全过程免费视频| 久久国产精品99国产| 日韩精品国产一区| 国产精品麻豆一区二区| 91视频免费网址| 日韩午夜电影在线观看| av电影在线观看网址| 国产91ⅴ在线精品免费观看| 日韩中文字幕| 亚洲一区二区三区免费观看| 国产免费成人| 美国黄色一级视频| 亚洲男帅同性gay1069| 国产又粗又猛又黄视频| 亚洲黄色在线看| 激情网站在线| 91久久精品国产| 97国产成人高清在线观看| 久草精品在线播放| 99视频热这里只有精品免费| 国产成人无码aa精品一区| 欧美疯狂做受xxxx富婆| 不卡在线视频| 日韩美女视频中文字幕| 久久99国产精品久久99大师| 免费一级特黄毛片| 丁香婷婷深情五月亚洲| 免费在线一级片| 日韩欧美一区在线观看| av毛片在线| 亚洲中国色老太| 亚洲在线久久| 在线视频观看91| 中文字幕日本乱码精品影院| 亚洲视频在线免费播放| 色偷偷av一区二区三区| 狠狠久久综合| dy888午夜| 国产成人精品免费视频网站| 麻豆精品一区二区三区视频| 日韩一级片在线播放| 羞羞网站在线看| 国产91aaa| 亚洲欧洲一区二区天堂久久| 免费日本黄色网址| 欧美日韩中文在线| 免费国产在线观看| 国产精品欧美一区二区三区奶水| 欧美激情理论| 中文字幕久久久久久久| 亚洲国产中文字幕在线视频综合| 黄色一级a毛片| 91精品国产91久久久| 国产九一精品| 日本一二区免费| 亚洲精品精品亚洲| 韩国av免费在线观看| 秋霞午夜一区二区| 日本精品黄色| 亚洲精品在线网址| 亚洲第一狼人社区| 蝌蚪视频在线播放| 91精品久久久久久久久青青 | www.色视频| 高清欧美性猛交| 国产99久久| 午夜影院免费观看视频| 亚洲成人午夜电影| wwwww在线观看免费视频| 国产又爽又黄的激情精品视频 | 久久综合欧美| 日韩欧美亚洲另类| 亚洲午夜精品在线| 国产永久免费高清在线观看 | 女一区二区三区| 日韩av片网站| 夜夜爽夜夜爽精品视频| 男人天堂资源在线| 亚洲999一在线观看www| 国产一区二区三区成人欧美日韩在线观看 | 久久手机免费视频| 日韩av字幕| 国产精品久久久久久久av福利| 午夜精品久久一牛影视| av网站大全在线观看| 成人自拍网站| 日韩av在线播放中文字幕| 久久国产在线观看| 伊人久久男人天堂| 精品国产18久久久久久洗澡| 中文字幕第100页| 欧美日韩亚洲精品内裤| 伊人春色在线观看| 四虎一区二区| 99riav久久精品riav| 国产绿帽刺激高潮对白|