设为首页 收藏本站
查看: 1344|回复: 0

[经验分享] Tomcat安装与配置以及各组件详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-27 08:49:21 | 显示全部楼层 |阅读模式
                      一、安装tomcat
上篇博文中我们学习了java的基础知识,知道了tomcat是web container,通过java语言开发所以必须运行在JDK上,所以我们先安装jdk
1、安装jdk
1
2
3
4
5
6
7
[iyunv@BAIYU_179 src]# ls
apache-tomcat-8.0.29.tar.gz  jdk-8u65-linux-x64.tar.gz
[iyunv@BAIYU_179 src]# tar xf jdk-8u65-linux-x64.tar.gz -C /usr/local
[iyunv@BAIYU_179 src]# cd /usr/local/jdk1.8.0_65/
[iyunv@BAIYU_179 jdk1.8.0_65]# ls
bin        db       javafx-src.zip  lib      man          release  THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT  include  jre             LICENSE  README.html  src.zip  THIRDPARTYLICENSEREADME.txt



2、添加环境变量
1
2
3
[iyunv@BAIYU_179 jdk1.8.0_65]# vi /etc/profile.d/java.sh
  1 export JAVA_HOME=/usr/local/jdk1.8.0_65
  2 export PATH=$JAVA_HOME/bin:$PATH



3、测试jdk是否安装成功
1
2
3
4
[iyunv@BAIYU_179 ~]# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)



4、安装tomcat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[iyunv@BAIYU_179 src]# tar xf apache-tomcat-8.0.29.tar.gz -C /usr/local
[iyunv@BAIYU_179 src]# cd /usr/local
[iyunv@BAIYU_179 local]# ll
总用量 48
drwxr-xr-x  9 root root 4096 11月 26 15:02 apache-tomcat-8.0.29
drwxr-xr-x. 2 root root 4096 9月  23 2011 bin
drwxr-xr-x. 2 root root 4096 9月  23 2011 etc
drwxr-xr-x. 2 root root 4096 9月  23 2011 games
drwxr-xr-x. 2 root root 4096 9月  23 2011 include
drwxr-xr-x  8   10  143 4096 10月  7 08:29 jdk1.8.0_65
drwxr-xr-x. 2 root root 4096 9月  23 2011 lib
drwxr-xr-x. 2 root root 4096 9月  23 2011 lib64
drwxr-xr-x. 2 root root 4096 9月  23 2011 libexec
drwxr-xr-x. 2 root root 4096 9月  23 2011 sbin
drwxr-xr-x. 5 root root 4096 10月 27 16:37 share
drwxr-xr-x. 2 root root 4096 9月  23 2011 src
[iyunv@BAIYU_179 local]# ln -sv apache-tomcat-8.0.29 tomcat
"tomcat" -> "apache-tomcat-8.0.29"
[iyunv@BAIYU_179 local]# cd tomcat/
[iyunv@BAIYU_179 tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[iyunv@BAIYU_179 tomcat]# ls bin/
bootstrap.jar                 daemon.sh         startup.sh
catalina.bat                  digest.bat        tomcat-juli.jar
catalina.sh                   digest.sh         tomcat-native.tar.gz
catalina-tasks.xml            setclasspath.bat  tool-wrapper.bat
commons-daemon.jar            setclasspath.sh   tool-wrapper.sh
commons-daemon-native.tar.gz  shutdown.bat      version.bat
configtest.bat                shutdown.sh       version.sh
configtest.sh                 startup.bat



5、添加环境变量
1
2
3
[iyunv@BAIYU_179 ~]# vi /etc/profile.d/comcat.sh
  1 export CATALINA_HOME=/usr/local/tomcat
  2 export PATH=$CATALINA_HOME/bin:$PATH



6、测试tomcat是否安装成功
注意:tomcat是项目名称

         catalina是程序名称,很多地方都保留了这个名字
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[iyunv@BAIYU_179 ~]# catalina.sh -h   
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_65
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Usage: catalina.sh ( commands ... )
commands:
  debug             Start Catalina in a debugger
  debug -security   Debug Catalina with a security manager
  jpda start        Start Catalina under JPDA debugger
  run               Start Catalina in the current window
  run -security     Start in the current window with security manager
  start             Start Catalina in a separate window
  start -security   Start in a separate window with security manager
  stop              Stop Catalina, waiting up to 5 seconds for the process to end
  stop n            Stop Catalina, waiting up to n seconds for the process to end
  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running
  configtest        Run a basic syntax check on server.xml - check exit code for result
  version           What version of tomcat are you running?
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined
[iyunv@BAIYU_179 ~]# catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_65
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[iyunv@BAIYU_179 ~]# netstat -nlptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      13387/java         
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1078/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1166/master         
tcp        0      0 127.0.0.1:8005              0.0.0.0:*                   LISTEN      13387/java         
tcp        0      0 0.0.0.0:8009                0.0.0.0:*                   LISTEN      13387/java



二、Tomcat的目录结构
1、Tomcat的目录结构
1
2
[iyunv@BAIYU_179 tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work



bin:脚本及启动时用到的类
lib:类库
conf:配置文件
logs:日志文件
webapps:应用程序默认部署目录
work:工作目录
temp:临时目录
2、配置文件
1
2
3
[iyunv@BAIYU_179 tomcat]# ls conf
Catalina         catalina.properties  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          server.xml          tomcat-users.xsd



server.xml:主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;
context.xml:每个webapp都可以有专用的配置文件,这些配置文件通常位于webapp应用程序目录下的WEB-INF目录中,用于定义会话管理器、JBC等,conf/contest.xml是为所有host的默认配置信息
web.xml:每个webapp部署之后才能被访问,此文件则用于为所有的webapp提供默认部署相关配置
遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息;
tomcat-users.xml:用户认证的帐号和密码配置文件,Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;
catalina.policy:当使用-security选项启动tomcat实例时会读取此配置文件来实现安全运行策略,Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力;
catalina.properties:Java属性的定义文件,用于设定类加载器路径等,以及一些JVM相关的调优参数
Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此文件的相关设置;
logging.properties:日志相关的配置信息

3、webapp的组织结构
tomcat自带有两个webapp(应用程序):

Manager:管理tomcat自身的应用

Host_manage:管理tomcat的虚拟主机
1
2
3
4
[iyunv@BAIYU_179 tomcat]# ls webapps/             #网站根目录
docs  examples  host-manager  manager  ROOT      #子应用程序
[iyunv@BAIYU_179 tomcat]# ls webapps/host-manager/      
images  index.jsp  manager.xml  META-INF  WEB-INF



有特定组织形式、层次型目录结构:主要包含了servlet代码文件,JSP页面文件、类文件、部署描述文件等信息(创建一个app必须要有这些文件,文件可以为空但一定要有)

/:webapp的根目录

index.jsp:wepapp主页
WEB-INF:当前webapp的私有资源目录,通常存放当前webapp自用的web.xml和context.xml
classes:此webapp的私有类 (tomcat自带的2个webapp没有私有类,没有该目录)
lib:此webapp的私有类,被打包为jar格式的类(tomcat自带的2个webapp没有私有类,没有该目录)
META-INF:私有资源目录(可选的)

手动添加测试应用程序:

1)创建特定目录结构:
1
2
3
4
5
6
7
8
[iyunv@BAIYU_179 webapps]# pwd
/usr/local/tomcat/webapps     
[iyunv@BAIYU_179 webapps]# mkdir -pv testapp/{WEB-INF,lib,classes,META-INF}
mkdir: 已创建目录 "testapp"
mkdir: 已创建目录 "testapp/WEB-INF"
mkdir: 已创建目录 "testapp/lib"
mkdir: 已创建目录 "testapp/classes"
mkdir: 已创建目录 "testapp/META-INF"



2)创建/usr/local/tomcat/webapps/testapp/index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@BAIYU_179 webapps]# cd testapp/
[iyunv@BAIYU_179 testapp]# vi index.jsp     #测试只有这个主页文件也可以访问的呀?
  1 <%@ page language="java" %>
  2 <%@ page import="java.util.*" %>
  3 <html>
  4   <head>
  5     <title>JSP test page.</title>
  6   </head>
  7   <body>
  8     <% out.println("Hello,world!"); %>
  9   </body>
10 </html>



wKiom1ZWzNujdmcbAAAzSnG9olI360.jpg
4、日志文件
1
2
3
4
[iyunv@BAIYU_179 tomcat]# ls logs/
catalina.2015-11-26.log      localhost.2015-11-26.log
catalina.out                 localhost_access_log.2015-11-26.txt
host-manager.2015-11-26.log  manager.2015-11-26.log



localhost_access_log.2015-11-26.txt    访问日志
localhost.2015-11-26.log 错误和其它日志
manager.2015-11-26.log 管理日志
catalina.2015-11-26.log Tomcat启动或关闭日志文件
5、添加主机虚拟主机
1)创建新增的虚拟主机站点文件和目录
1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@BAIYU_179 tomcat]# mkdir -p /webapps/magedu/ROOT/{WEB-INF,classess,lib,META-INF}
[iyunv@BAIYU_179 tomcat]# vi /webapps/magedu/index.jsp
  1  <%@ page language="java" %>
  2    <%@ page import="java.util.*" %>
  3    <html>
  4      <head>
  5        <title>JSP test page.</title>
  6      </head>
  7      <body>
  8        <% out.println("Hello,magedu!"); %>
  9      </body>
10   </html>



2)修改主配置文件
1
2
3
4
5
6
7
8
[iyunv@BAIYU_179 tomcat]# vi conf/server.xml
<Host name="www.magedu.com"  appBase="/webapps/magedu"  #添加一个Host段,定义一个虚拟主机
142             unpackWARs="true" autoDeploy="true">              
143         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="
    logs"                                               #定义日志
144                prefix="magedu_access_log" suffix=".txt"
145                pattern="%h %l %u %t &quot;%r&quot; %s %b" />  
146       </host>



注意:如果自定义host及webapp路径,需要在Host指定的路径下创建ROOT来存放默认的站点文件;三、Tomcat 配置文件详解

Tomcat的配置文件默认存放在$CATALINA_HOME/conf目录中,下面我们对常用的配置文件进行详解。
1.server.xml
Tomcat以面向对象的方式运行,它可以在运行时动态加载配置文件中定义的对象结构,这有点类似于apache的httpd模块的调用方式。server.xml中定义的每个主元素都会被创建为对象,并以某特定的层次结构将这些对象组织在一起。

server.xml文件中可定义的元素非常多,包括Server, Service, Connector, Engine, Cluster, Host, Alias, Context, Realm, Valve, Manager, Listener, Resources, Resource, ResourceEnvRef, ResourceLink, WatchedResource, GlobalNameingResources, Store, Transaction, Channel, Membership, Transport, Member, ClusterListener等。
下面简单介绍几个常用组件:
(1).Server组件
1
<Server port=”8005” shutdown=”SHUTDOWN”>



      这会让Tomcat启动一个server实例(即一个JVM),它监听在8005端口以接收shutdown命令。各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。这个端口的定义用于为管理员提供一个关闭此实例的便捷途径,因此,管理员可以直接telnet至此端口使用SHUTDOWN命令关闭此实例。不过,基于安全角度的考虑,这通常不允许远程进行,只监听在127.0.0.1。
Server的相关属性:
  • port: 接收shutdown指令的端口,默认仅允许通过本机访问,默认为8005;
  • shutdown:发往此Server用于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN;
  • className: 用于实现此Server容器的完全限定类的名称,默认为org.apache.catalina.core.StandardServer;

(2).Service组件
     Service主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收入站请求交将其转发至关联的引擎进行处理。因此,Service要包含一个引擎、一个或多个连接器。
如上面示例中的定义:
<Service name=”Catalina”>
这定义了一个名为Catalina的Service,此名字也会在产生相关的日志信息时记录在日志文件当中。
Service相关的属性:
  • className: 用于实现service的类名,一般都是org.apache.catalina.core.StandardService。
  • name:此服务的名称,默认为Catalina;

(3).Connector组件
进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:
  • Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;
  • Tomcat作为独立服务器:请求来自于web浏览器;

Tomcat应该考虑工作情形并为相应情形下的请求分别定义好需要的连接器才能正确接收来自于客户端的请求。一个引擎可以有一个或多个连接器,以适应多种请求方式。
定义连接器可以使用多种属性,有些属性也只适用于某特定的连接器类型。一般说来,常见于server.xml中的连接器类型通常有4种:
  • HTTP连接器
  • SSL连接器
  • AJP 1.3连接器
  • proxy连接器

如上面示例server.xml中定义的HTTP连接器:
1
2
3
<Connector port="8080" protocol="HTTP/1.1"
  maxThreads="150" connectionTimeout="20000"
  redirectPort="8443"/>



定义连接器时可以配置的属性非常多,但通常定义HTTP连接器时必须定义的属性只有“port”,定义AJP连接器时必须定义的属性只有"protocol",因为默认的协议为HTTP。
以下为常用属性的说明:
  • address:指定连接器监听的地址,默认为所有地址,即0.0.0.0;
  • maxThreads:支持的最大并发连接数,默认为200;
  • port:监听的端口,默认为8080;
  • protocol:连接器使用的协议,默认为HTTP/1.1,定义AJP协议时通常为AJP/1.3;
  • redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;
  • connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟;
  • enableLookups:是否通过request.getRemoteHost()进行DNS查询以获取客户端的主机名;默认为true;
  • acceptCount:设置等待队列的最大长度;通常在tomcat所有处理线程均处于繁忙状态时,新发来的请求将被放置于等待队列中;

下面是一个定义了多个属性的SSL连接器:
1
2
3
4
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />



(4).Engine组件
      Engine是Servlet处理器的一个实例,即servlet引擎,默认为定义在server.xml中的Catalina。Engine需要defaultHost属性来为其定义一个接收所有发往非明确定义虚拟主机的请求的host组件。
如前面示例中定义的:
<Engine name="Catalina" defaultHost="localhost">
常用的属性定义:
  • defaultHost:Tomcat支持基于FQDN的虚拟主机,这些虚拟主机可以通过在Engine容器中定义多个不同的Host组件来实现;但如果此引擎的连接器收到一个发往非非明确定义虚拟主机的请求时则需要将此请求发往一个默认的虚拟主机进行处理,因此,在Engine中定义的多个虚拟主机的主机名称中至少要有一个跟defaultHost定义的主机名称同名;
  • name:Engine组件的名称,用于日志和错误信息记录时区别不同的引擎;

注,Engine容器中可以包含Realm、Host、Listener和Valve子容器。
(5).Host组件
位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面默认配置文件中定义:
1
2
3
4
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>




常用属性说明:
  • appBase:此Host的webapps目录,即存放非归档的web应用程序的目录或归档后的WAR文件的目录路径;可以使用基于$CATALINA_HOME的相对路径;
  • autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true;
  • unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true;

下面是虚拟主机定义示例:
1
2
3
4
5
6
7
8
9
10
11
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps">
<Context path="" docBase="ROOT"/>
<Context path="/bbs" docBase="/web/bss"
  reloadable="true" crossContext="true"/>
</Host>
  
<Host name="mail.test.com" appBase="/web/mail">
<Context path="" docBase="ROOT"/>
</Host>
</Engine>



主机别名定义:
如果一个主机有两个或两个以上的主机名,额外的名称均可以以别名的形式进行定义,
如下:
1
2
3
<Host name="www.test.com" appBase="webapps" unpackWARs="true">
<Alias>test.com</Alias>
</Host>



(6).Context组件
Context在某些意义上类似于apache中的路径别名,一个Context定义用于标识tomcat实例中的一个Web应用程序;如下面的定义:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Context path="" docBase="/web/webapps"/>


<!-- buzzin webapp -->
<Context path="/bbs"
docBase="/web/threads/bbs"
reloadable="true">
</Context>


<!-- chat server -->
<Context path="/chat" docBase="/web/chat"/>

  
<!-- darian web -->
<Context path="/darian" docBase="darian"/>



在Tomcat中,每一个context定义也可以使用一个单独的XML文件进行,其文件的目录为$CATALINA_HOME/conf/<engine name>/<host name>。可以用于Context中的XML元素有Loader,Manager,Realm,Resources和WatchedResource。
常用的属性定义有:
  • docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;切记,docBase的路径名不能与相应的Host中appBase中定义的路径名有包含关系,比如,如果appBase为deploy,而docBase绝不能为deploy-bbs类的名字;
  • path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径;如果context定义在一个单独的xml文件中,此属性不需要定义;
  • reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false;

(7).Realm组件
一个Realm表示一个安全上下文,它是一个授权访问某个给定Context的用户列表和某用户所允许切换的角色相关定义的列表。因此,Realm就像是一个用户和组相关的数据库。定义Realm时惟一必须要提供的属性是classname,它是Realm的多个不同实现,用于表示此Realm认证的用户及角色等认证信息的存放位置。
  • JAASRealm:基于Java Authintication and Authorization Service实现用户认证;
  • JDBCRealm:通过JDBC访问某关系型数据库表实现用户认证;
  • JNDIRealm:基于JNDI使用目录服务实现认证信息的获取;
  • MemoryRealm:查找tomcat-user.xml文件实现用户信息的获取;
  • UserDatabaseRealm:基于UserDatabase文件(通常是tomcat-user.xml)实现用户认证,它实现是一个完全可更新和持久有效的MemoryRealm,因此能够跟标准的MemoryRealm兼容;它通过JNDI实现;

下面是一个常见的使用UserDatabase的配置:



四、部署appweb
1、webapp归档格式
.war:web应用程序
.jar:EJB的类
.rar:资源适配器
.ear:企业级应用程序
2、部署(deployment)web的相关操作
deploy:部署,将webapp的源文件放置于目标目录、配置tomcat服务器能够基于context定义的路径来访问此appweb,并将其持有类通过class loader装载至tomcat实现
redeploy:重新部署
undeploy:反部署,停止webapp,并从tomcat实例拆除其部分文件和部署名
stop:停止
start:启动处于停止状态的webapp
3、部署的方式
冷部署:在tomcat启动之前进行部署
热部署:在不停止tomcat的前提下进行部署,使用部署工具进行:manager,ant脚本,tcd(tomcat client deployer)

                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-144044-1-1.html 上篇帖子: tomcat+memcached实现sessions共享 下篇帖子: tomcat释放内存
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表