Apache+Tomcat+JK实现负载均衡和群集的完整过程_第1页
Apache+Tomcat+JK实现负载均衡和群集的完整过程_第2页
Apache+Tomcat+JK实现负载均衡和群集的完整过程_第3页
Apache+Tomcat+JK实现负载均衡和群集的完整过程_第4页
Apache+Tomcat+JK实现负载均衡和群集的完整过程_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程 . 分类: Apache Tomcat server 2012-08-08 12:29 412人阅读 评论(0) 收藏 举报 转载于:  最近在开发的项目需要承受很高的并发量。综合各种情况,决定使用Apache+Tomcat+JK的方式实现负载均衡,并且作为一个统一的服务还要实现群集(同步Session)。在网上找了很多资料,都是零零散散的,没有一个完整的过程。通过几天的努力,完成了从编译、部署到配置的整个过程,期间也遇到了一些问题。在接下来的文字中将这些过程记录下来,做个笔记同时也分享给大家。为了重

2、新演示整个过程,我新搭建了一个服务器,各项参数如下:CPU:Intel Xeon 5110内存:DDR2 1G*4主机型号:ProLiant DL140 G3操作系统:Red Hat Enterprise Linux Server release 5.4 x86_64版内核版本:2.6.18gcc版本:4.1.2g+版本:4.1.2java版本:1.6.0_27plain view plaincopyprint?1. rootlxp2 # cat /etc/redhat-release    2. Red Hat 

3、Enterprise Linux Server release 5.4 (Tikanga)   3. rootlxp2 # uname -a   4. Linux lxp2 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:41:04 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

4、   5. rootlxp2 # gcc -version   6. gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)   7. Copyright (C) 2006 Free Software Foundation, Inc.   8. This is free software; see

5、 the source for copying conditions.  There is NO   9. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   10.    11. rootlxp2 # g+ -ve

6、rsion   12. g+ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)   13. Copyright (C) 2006 Free Software Foundation, Inc.   14. This is free software; see the source for copying

7、0;conditions.  There is NO   15. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   16.    17. rootlxp2 # java -version   18. java version 

8、;"1.6.0_27"   19. Java(TM) SE Runtime Environment (build 1.6.0_27-b07)   20. Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)   21. rootlxp2 #   plain view plain

9、copyprint?1. <SPAN style="FONT-SIZE: 18px">rootlxp2 # cat /etc/redhat-release   2. Red Hat Enterprise Linux Server release 5.4 (Tikanga)  3. rootlxp2 # uname -a  4. Linux

10、0;lxp2 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:41:04 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux  5. rootlxp2 # gcc -version  6. gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)

11、0; 7. Copyright (C) 2006 Free Software Foundation, Inc.  8. This is free software; see the source for copying conditions.  There is NO  9. warranty; not even for

12、0;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  10.   11. rootlxp2 # g+ -version  12. g+ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)  13. Copyright (C) 2006 Free 

13、;Software Foundation, Inc.  14. This is free software; see the source for copying conditions.  There is NO  15. warranty; not even for MERCHANTABILITY or FITNESS FOR 

14、;A PARTICULAR PURPOSE.  16.   17. rootlxp2 # java -version  18. java version "1.6.0_27"  19. Java(TM) SE Runtime Environment (build 1.6.0_27-b07)  20. Java HotSpot(TM) 64

15、-Bit Server VM (build 20.2-b06, mixed mode)  21. rootlxp2 # </SPAN>  rootlxp2 # cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.4 (Tikanga)rootlxp2 # uname -aLinux lxp2 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:41:04 EDT

16、 2009 x86_64 x86_64 x86_64 GNU/Linuxrootlxp2 # gcc -versiongcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)Copyright (C) 2006 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.r

17、ootlxp2 # g+ -versiong+ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)Copyright (C) 2006 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.rootlxp2 # java -versionjava version &qu

18、ot;1.6.0_27"Java(TM) SE Runtime Environment (build 1.6.0_27-b07)Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)rootlxp2 # gcc、g+和java是必须的,如果运行上述命令提示command not found,则需要安装。具体安装方法这里不做介绍,请参阅相关文档。 接下来要准备的是apache服务器、tomcat服务器和JK连接器1.下载apache服务器源码包apache服务器官方没有发布编译好的linux二进制包,只能通

19、过下载源代码,然后自己编译。因此需要先下载源码。访问网址/download.cgi,可以看到apache服务器目前放出的版本信息,推荐使用稳定版的release。然后选择Unix版源码:2.下载tomcat服务器源码包目前tomcat服务器个人还是觉得6.0比较稳定。7.0毕竟是新出的东西,需要一定的生产实践考验才能达到理想的状态。因此这里选择tomcat 6.0。访问网址/download-60.cgi,可以看到目前稳定的版本为6.0.33:这里强烈建议下载tar.gz格式的压缩包。在Linux下,文件

20、访问有着严格的权限限制。一个文件是否允许以二进制或者脚本的形式执行,完全取决于其是否拥有执行缺陷,这与Windows识别文件后缀名(.exe、.bat)的方式不同。zip格式的压缩包中是不保留文件的权限信息的,而tar.gz格式的压缩包是保存有文件的权限信息的。3.下载JK连接器源码包作为apache与tomcat连接的桥梁,JK连接器使用C语言编写,与apache紧密结合,作为模块装载到apache服务器中,通过配置实现与特定的tomcat服务器进行通信,从而实现负载均衡的功能。访问网址/download-connectors.cgi,可以找到最

21、新最稳定的JK连接器版本:这里还是推荐下载tar.gz格式的源码。原因同上。4.解压apache服务器、tomcat服务器和JK连接器都已经下载好了,如下图所示:然后将这三个包都解压出来:5.编译apache服务器首先编译apache服务器。在编译之前需要执行其自带的检测配置脚本。对于不同发行版本的Linux,默认安装的库都有所差别,即便是同一个发行版本,由于用户安装软件的软件不同,也会导致系统内包含的库有所区别。因此apache作为开源服务器,在编译前需要了解系统的库安装情况,某些模块需要依赖于特定的库,如果这些库不存在,配置脚本将自动忽略这些库的编译。经过检测时候会生成合适的MakeFil

22、e文件。这里特别提醒一句,如果直接执行配置脚本,是不会编译额外的模块的,我们希望使用额外模块时,需要在运行配置脚本命令后加入参数,让其尽最大可能编译可用的库。关于这方面的介绍可以参阅我的另外一篇文章“Linux下编译apache服务器modules文件夹缺少模块(.so)的问题”( plain view plaincopyprint?1. rootlxp2 Downloads# cd httpd-2.2.21   2. rootlxp2 httpd-2.2.21# ./configure -enable-

23、so -enable-mods-shared=most -with-mpm=worker  plain view plaincopyprint?1. <SPAN style="FONT-SIZE: 18px">rootlxp2 Downloads# cd httpd-2.2.21  2. rootlxp2 httpd-2.2.21# ./configure -enable-so -enable-mods-share

24、d=most -with-mpm=worker</SPAN>  rootlxp2 Downloads# cd httpd-2.2.21rootlxp2 httpd-2.2.21# ./configure -enable-so -enable-mods-shared=most -with-mpm=worker加入-with-mpm=worker是修改apache服务器的工作模式。默认模式是prefork。prefork采用预派生子进程方式,用单独的子进程来处理 不同的请求,进程之间彼此独立。相对于prefork,worker是全新的支持多线程和多进程混合

25、模型的MPM(多路处理模块)。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。如果配置过程中出现plain view plaincopyprint?1. configure: error: Cannot use an external APR with the bundled APR-util  plain view plaincopyprint?1

26、. <SPAN style="FONT-SIZE: 18px">configure: error: Cannot use an external APR with the bundled APR-util</SPAN>  configure: error: Cannot use an external APR with the bundled APR-util这样的错误信息,说明本机没有安装apr运行库,需要下载

27、并安装。访问网址:/download.cgi,下载apr和apr-util:解压apr和apr-utilplain view plaincopyprint?1. rootlxp2 Downloads# tar -xf apr-1.4.5.tar.gz    2. rootlxp2 Downloads# tar -xf apr-util-1.3.12.tar.gz   plain view plaincopyprint

28、?1. <SPAN style="FONT-SIZE: 18px">rootlxp2 Downloads# tar -xf apr-1.4.5.tar.gz   2. rootlxp2 Downloads# tar -xf apr-util-1.3.12.tar.gz </SPAN>  rootlxp2 Downloads# tar -xf apr-1.4.5.tar.gz rootlxp2

29、Downloads# tar -xf apr-util-1.3.12.tar.gz 进入apr,并编译plain view plaincopyprint?1. rootlxp2 Downloads# cd apr-1.4.5   2. rootlxp2 apr-1.4.5# ls   3. apr-config.in  build.conf        helpers   &

30、#160;   memory         shmem   4. apr.dep        build-outputs.mk  include       misc          

31、 strings   5. apr.dsp        CHANGES           libapr.dep    mmap           support   6. apr.dsw 

32、60;      config.layout     libapr.dsp    network_io     tables   7. apr.mak        configure         liba

33、pr.mak    NOTICE         test   8. apr.pc.in      configure.in      libapr.rc     NWGNUmakefile  threadproc   9. apr.spe

34、c       docs              LICENSE       passwd         time   10. atomic     

35、60;   dso               locks         poll           user   11. build     &

36、#160;    emacs-mode        Makefile.in   random   12. buildconf      file_io           Makefile.win  README  

37、13. rootlxp2 apr-1.4.5# ./configure  plain view plaincopyprint?1. <SPAN style="FONT-SIZE: 18px">rootlxp2 Downloads# cd apr-1.4.5  2. rootlxp2 apr-1.4.5# ls  3. apr-config.in  build.conf  &#

38、160;     helpers       memory         shmem  4. apr.dep        build-outputs.mk  include       misc&

39、#160;          strings  5. apr.dsp        CHANGES           libapr.dep    mmap        

40、;   support  6. apr.dsw        config.layout     libapr.dsp    network_io     tables  7. apr.mak        configure&#

41、160;        libapr.mak    NOTICE         test  8. apr.pc.in      configure.in      libapr.rc     NWG

42、NUmakefile  threadproc  9. apr.spec       docs              LICENSE       passwd         time&#

43、160; 10. atomic         dso               locks         poll           user

44、  11. build          emacs-mode        Makefile.in   random  12. buildconf      file_io         

45、0; Makefile.win  README  13. rootlxp2 apr-1.4.5# ./configure</SPAN>  rootlxp2 Downloads# cd apr-1.4.5rootlxp2 apr-1.4.5# lsapr-config.in build.conf helpers memory shmemapr.dep build-outputs.mk include misc stringsapr.dsp CHANGES libapr.dep mmap supp

46、ortapr.dsw config.layout libapr.dsp network_io tablesapr.mak configure libapr.mak NOTICE testapr.pc.in configure.in libapr.rc NWGNUmakefile threadprocapr.spec docs LICENSE passwd timeatomic dso locks poll userbuild emacs-mode Makefile.in randombuildconf file_io Makefile.win READMErootlxp2 apr-1.4.5#

47、 ./configure生成了MakeFile后直接编译plain view plaincopyprint?1. rootlxp2 apr-1.4.5# ls   2. apr-1-config   buildconf         dso         locks      

48、0;   poll   3. apr-config.in  build.conf        emacs-mode  Makefile       random   4. apr.dep        build-outputs.mk  

49、file_io     Makefile.in    README   5. apr.dsp        CHANGES           helpers     Makefile.win   shmem 

50、  6. apr.dsw        config.layout     include     memory         strings   7. apr.mak        config.log &

51、#160;      libapr.dep  misc           support   8. apr.pc         config.nice       libapr.dsp  mmap 

52、;          tables   9. apr.pc.in      config.status     libapr.mak  network_io     test   10. apr.spec      &#

53、160;configure         libapr.rc   NOTICE         threadproc   11. atomic         configure.in      libtool

54、0;    NWGNUmakefile  time   12. build          docs              LICENSE     passwd     &#

55、160;   user   13. rootlxp2 apr-1.4.5# make  plain view plaincopyprint?1. <SPAN style="FONT-SIZE: 18px">rootlxp2 apr-1.4.5# ls  2. apr-1-config   buildconf      

56、0;  dso         locks          poll  3. apr-config.in  build.conf        emacs-mode  Makefile     &#

57、160; random  4. apr.dep        build-outputs.mk  file_io     Makefile.in    README  5. apr.dsp        CHANGES     &

58、#160;     helpers     Makefile.win   shmem  6. apr.dsw        config.layout     include     memory      &

59、#160;  strings  7. apr.mak        config.log        libapr.dep  misc           support  8. apr.pc    

60、0;    config.nice       libapr.dsp  mmap           tables  9. apr.pc.in      config.status     libapr.mak 

61、0;network_io     test  10. apr.spec       configure         libapr.rc   NOTICE         threadproc  11. atomic 

62、        configure.in      libtool     NWGNUmakefile  time  12. build          docs         

63、;     LICENSE     passwd         user  13. rootlxp2 apr-1.4.5# make</SPAN>  rootlxp2 apr-1.4.5# lsapr-1-config buildconf dso locks pollapr-config.in build.conf emacs-mod

64、e Makefile randomapr.dep build-outputs.mk file_io Makefile.in READMEapr.dsp CHANGES helpers Makefile.win shmemapr.dsw config.layout include memory stringsapr.mak config.log libapr.dep misc supportapr.pc config.nice libapr.dsp mmap tablesapr.pc.in config.status libapr.mak network_io testapr.spec conf

65、igure libapr.rc NOTICE threadprocatomic configure.in libtool NWGNUmakefile timebuild docs LICENSE passwd userrootlxp2 apr-1.4.5# make编译好之后使用root权限安装:plain view plaincopyprint?1. rootlxp2 apr-1.4.5# sudo make install  plain view plaincopyprint?1. <SPAN style=&quo

66、t;FONT-SIZE: 18px">rootlxp2 apr-1.4.5# sudo make install</SPAN>  rootlxp2 apr-1.4.5# sudo make install然后使用类似的方法配置apr-util:plain view plaincopyprint?1. rootlxp2 Downloads# cd apr-util-1.3.12   2. rootlxp2 apr-util-1.3.12#&

67、#160;./configure -with-apr=/usr/local/apr  plain view plaincopyprint?1. <SPAN style="FONT-SIZE: 18px">rootlxp2 Downloads# cd apr-util-1.3.12  2. rootlxp2 apr-util-1.3.12# ./configure -with-apr=/usr/local/apr</SPAN>

68、;  rootlxp2 Downloads# cd apr-util-1.3.12rootlxp2 apr-util-1.3.12# ./configure -with-apr=/usr/local/apr编译apr-util: plain view plaincopyprint?1. rootlxp2 apr-util-1.3.12# make  plain view plaincopyprint?1. <SPAN style="FONT-SIZE: 18px">rootlxp2&

69、#160;apr-util-1.3.12# make</SPAN>  rootlxp2 apr-util-1.3.12# make编译好之后使用root权限安装:plain view plaincopyprint?1. rootlxp2 apr-util-1.3.12# sudo make install  plain view plaincopyprint?1. <SPAN style="FONT-SIZE: 18px">rootlxp2&

70、#160;apr-util-1.3.12# sudo make install</SPAN>  rootlxp2 apr-util-1.3.12# sudo make install当然如果你在配置apache服务器编译的时候没有提示缺少“APR”,请忽略上面关于APR编译的几步。回到apache服务器源码所在目录,开始编译:plain view plaincopyprint?1. rootlxp2 httpd-2.2.21# make  plain view plaincopyprint?1

71、. <SPAN style="FONT-SIZE: 18px">rootlxp2 httpd-2.2.21# make</SPAN>  rootlxp2 httpd-2.2.21# make编译过程大概不到十分钟,完成之后使用root权限进行安装plain view plaincopyprint?1. rootlxp2 httpd-2.2.21# sudo make install  plain view plaincopyprin

72、t?1. <SPAN style="FONT-SIZE: 18px">rootlxp2 httpd-2.2.21# sudo make install</SPAN>  rootlxp2 httpd-2.2.21# sudo make install如果不出意外,至此apache就安装成功了。来测试一下:进入apache服务器的bin目录,并启动服务器:plain view plaincopyprint?1. rootlxp2 httpd-2.2.21# 

73、;cd /usr/local/apache2/bin/   2. rootlxp2 bin# sudo ./apachectl start   3. httpd: Could not reliably determine the server's fully qualified domain name, using  for ServerNa

74、me  plain view plaincopyprint?1. <SPAN style="FONT-SIZE: 18px">rootlxp2 httpd-2.2.21# cd /usr/local/apache2/bin/  2. rootlxp2 bin# sudo ./apachectl start  3. httpd: Could not reliably deter

75、mine the server's fully qualified domain name, using  for ServerName</SPAN>  rootlxp2 httpd-2.2.21# cd /usr/local/apache2/bin/rootlxp2 bin# sudo ./apachectl starthttpd: Could not reliably determine the server's fully

76、qualified domain name, using for ServerName在本地打开浏览器,访问如果出现“It Works!”则表示启动成功了这里要注意一点就是Linux的防火墙问题。如果你的Linux服务器启动了防火墙,本地访问上面的网址是没有问题的,但如果其它计算机访问你的服务器有可能会连接失败。出现这种情况的原因是防火墙将入站80端口封锁了。解决方法是将80端口加入到允许列表中:进入防火墙设置后,如果发现Firewall状态为Enabled,表示防火墙已启用,需要将WWW(HTTP)服务标记为信任,如果需要使用hhtps协议,

77、还要将Secure WWW(HTTPS)服务也标记为信任。如下图所示:另外,此时如果有其他程序占用80端口也是会影响到apache服务器的,需要确保这个端口没有被占用。还有我还要补充一点,在Mac OS中按照上述方法安装apache服务器是不行的。开始的时候我不想搭建Linux服务器,想到Mac OS也是类Unix的系统,操作命令什么的都一样,就先在Mac上实验了。结果安装上apache服务器后启动了,每次访问都提示505错误,service temporarily unavailable。经过查阅很多资料和尝试才发现,原来Mac系统中已经自带了apache服务器。具体应用是在“系统设置”中的

78、“共享”功能。这个功能里有“Web共享”方式。其实现时使用的服务器就是apache。它采用的配置文件在/etc/httpd/目录中。这里的配置文件和自己安装的apache服务器配置文件冲突了,因此造成505错误。这一点需要注意。(注:我是用的Mac系统为Mac OS X Lion 10.7.2)2011年11月23日补充:如果你希望把apache服务器注册为系统服务,让它随着系统启动而启动,则需要在/etc/init.d/目录中建立服务管理脚本,我们将其命名为httpd:python view plaincopyprint?1. #!/bin/bash    2. #chk

79、config: 345 61 61    3. #description: This is apache http service    4. #processname: httpd    5. pidfile="/usr/local/apache2/logs/httpd.pid"   6. httpd_process_name="httpd"   7. httpd_

80、path="/usr/local/apache2/bin/apachectl"   8.    9. RETVAL=0   10. start()   11.   echo "Starting Apache Httpd Service."   12.   httpd_pid_list=pidof $httpd_process_name   13.

81、  if test -n "$httpd_pid_list"   14.   then   15.     echo "Fail To Launch Httpd, Since It Has Already Started"   16.     RETVAL=1

82、   17.     else   18.     echo "Launching Apache Httpd Server"   19.     $httpd_path "start"   20.     RETVAL=$?   21.  

83、   echo "Launch Httpd Successfully"   22.   fi;   23.    24.    25. stop()   26.   echo "Stopping Apache Httpd Service."   27.   httpd_pid_l

84、ist=pidof $httpd_process_name   28.   if test -n "$httpd_pid_list"   29.   then   30.     echo "Find Httpd Process, Start To End Them"   31. 

85、0;   $httpd_path "stop"   32.     if test "$?" = "0"   33.     then   34.       echo "Success to Terminate

86、0;Httpd Service"   35.       RETVAL=0   36.     else   37.       echo "Can Not Terminate Httpd Service"   38.     &

87、#160; RETVAL=1   39.     fi;   40.   else   41.     echo "Can Not Find Any Httpd Process, Fail To Stop Service"   42.     RET

88、VAL=0   43.   fi;   44.    45.    46. restart()   47.   stop   48.   if test "$?"="0"   49.   then   50.     #sleep 3 se

89、conds to wait for process exit    51.     sleep 3   52.     start   53.     RETVAL= $?   54.   else   55.     RETVAL= $?

90、   56.   fi;   57.    58.    59. status()   60.   if test -f $pidfile   61.   then   62.     pid_list=cat $pidfile   63.     echo&

91、#160;"$httpd_process_name (pid:$pid_list) is running"   64.   else   65.     echo "$httpd_process_name is stopped"   66.   fi;   67.    68.    69. cas

92、e "$1" in   70.   start)   71.      start   72.      RETVAL=$?   73.         74.   stop)   75.      

93、stop   76.      RETVAL=$?   77.         78.   restart)   79.      restart   80.      RETVAL=$?   81.      

94、;   82.   status)   83.      status   84.         85.   *)   86.      echo 1quot;Usage:$0 start|stop|restart asdfasdfasdfasdf "

95、60;  87.      RETVAL=2   88. esac   89.    90. exit $RETVAL  python view plaincopyprint?1. <SPAN style="FONT-SIZE: 18px">#!/bin/bash   2. #chkconfig: 345 61 61   3.

96、 #description: This is apache http service   4. #processname: httpd   5. pidfile="/usr/local/apache2/logs/httpd.pid"  6. httpd_process_name="httpd"  7. httpd_path="/usr/local/apache2/bin/apachectl"

97、60; 8.   9. RETVAL=0  10. start()  11.   echo "Starting Apache Httpd Service."  12.   httpd_pid_list=pidof $httpd_process_name  13.   if test -n "$httpd_pid_lis

98、t"  14.   then  15.     echo "Fail To Launch Httpd, Since It Has Already Started"  16.     RETVAL=1  17.     else  18. &

99、#160;   echo "Launching Apache Httpd Server"  19.     $httpd_path "start"  20.     RETVAL=$?  21.     echo "Launch Httpd Successfully" 

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论