tomcat 单机多实例

Tomcat的目录结构:

bin – 包含所有运行tomcat的二进制和脚本文件

lib  包含tomcat使用的所有共享库

conf - 包含配置信息,如tomcat绑定的端口等

  1. server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;
  2. tomcatusers.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
  3. web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
  4. context.xml:对所有应用的统一配置,通常我们不会去配置它。

logs  包含所有的日志文件

temp  此目录是tomcat存放的临时文件

webapps  此目录非常重要,这里存放所有的应用程序war包(项目包). 存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/1607a,进入示例项目。其中1607a就是项目名,即文件夹的名字。

work – 如果应用程序包含jsp文件,那么每个jsp文件会被编译转化为servlet,存放于此,运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

运行Tomcat时,会用到5个环境变量:

CATALINA_HOME

CATALINA_BASE

CATALINA_TMPDIR

JRE_HOME/JAVA_HOME

CLASSPATH

在以上列表中,CATALINA_HOME和JAVA_HOME是必要的环境变量。其它的都可以通过CATALINA_HOME来转换,是可选的。

CATALINA_HOME – 此环境变量是tomcat安装/提取的根目录。所以通过CATALINA_HOME,可以得到bin和lib目录。

CATALINA_BASE – 如果不指定则是CATALINA_HOME的值。该变量指向的目录里面包括每个运行实例需要使用自己的conf、logs、temp、webapps、work目录。

一般运行Tomcat的方法是,只设置CATALINA_HOME变量,执行startup.sh脚本,startup.sh会自动转换其它未设置的变量。

 

 

 

当一个进程的线程超过500个的话,那么这个进程的运行效率会变得很低。因为一个进程产生过多的线程,CPU资源会浪费在线程间切换过程当中。但当服务器配置很高的情况下,如:32G内存,16核的CPU。这样一台高配的机器上只装一个Tomcat实例,会有点浪费。其实我们可以根据服务器的硬件配置,配置多个Tomcat实例,充分利用硬件的资源。你第一时间可能会想到,直接下载多份Tomcat安装包,直接解压,改下端口跑起来不就可以了? 这样也是可以的,但不好维护。假设你在一台机器上安装了5个Tomcat实例,日后要升级Tomcat时,你需要将新版本的tomcat复制并覆盖掉旧的5个tomcat安装程序和配置,所以还是挺麻烦的。下面介绍多个Tomcat实例共享同一个安装包的配置方法。

安装部署环境:

Jdk版本以及安装目录:

Jdk版本:1.8.0_20 目录:/usr/java

Tomcat版本:apache-tomcat-7.0.47.tar.gz

Tomcat安装目录:/usr/local/tomcat_all

Tomcat中两个实例的目录(组成一个小集群):

/usr/local/tomcats/tomcat1

           /usr/local/tomcats/tomcat2

安装jdk:

# rpm -ivh jdk-8u20-linux-x64.rpm

添加环境变量:

# vi /etc/profile

######java use####

export JAVA_HOME=/usr/java/jdk1.8.0_20

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

验证是否安装成功:

# source /etc/profile

# java –version

安装Tomcat:

关闭防火墙和selinux

# service  iptables  stop

# vi /etc/selinux/config

# tar zxf apache-tomcat-7.0.47.tar.gz

# mv  apache-tomcat-7.0.47 /usr/local/tomcat_all

拷贝Tomcat安装目录下的conf目录分别到两个实例的目录中。

# mkdir /usr/local/tomcats

# mkdir /usr/local/tomcats/tomcat1

# mkdir /usr/local/tomcats/tomcat2

# cp -r /usr/local/tomcat_all/conf/ /usr/local/tomcats/tomcat1/

# cp -r /usr/local/tomcat_all/conf/ /usr/local/tomcats/tomcat2/

分别修改以上两个实例中的server.xml中三个端口(Server、HTTP、AJP),不要和其它实例的端口或系统已经占用的端口发生冲突。

# vi  /usr/local/tomcats/tomcat1/conf/server.xml

# vi  /usr/local/tomcats/tomcat2/conf/server.xml

创建实例部署的应用目录(可以不修改,直接放在Tomcat_all安装目录的webapps目录中,如果重新设置,需要到server.xml中进行配置项修改appBase)。

创建启动和停止脚本:

启动脚本:

# cd /usr/local/tomcat/tomcat1

# mkdir bin

# vi startup.sh

#!/bin/bash

export JRE_HOME=/usr/java/jdk1.8.0_20/jre

export CATALINA_HOME=/usr/local/tomcat_all

export CATALINA_BASE="/usr/local/tomcats/tomcat1"

export CATALINA_TMPDIR="$CATALINA_BASE/temp"

export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"

 

#创建logs目录

if [ ! -d "$CATALINA_BASE/logs" ]; then

  mkdir $CATALINA_BASE/logs

fi

 

#创建temp目录

if [ ! -d "$CATALINA_BASE/temp" ]; then

  mkdir $CATALINA_BASE/temp

fi

 

# 调用tomcat启动脚本

bash $CATALINA_HOME/bin/startup.sh "$@"

# chmod +x startup.sh

同理做Tomcat2的即可。

停止脚本:

# cd /usr/local/tomcat/tomcat1/bin

# vi shutdown.sh

#!/bin/bash

export JRE_HOME=/usr/java/jdk1.8.0_20/jre

export CATALINA_HOME=/usr/local/tomcat_all

export CATALINA_BASE="/usr/local/tomcat/tomcat1"

export CATALINA_TMPDIR="$CATALINA_BASE/temp"

export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"

bash $CATALINA_HOME/bin/shutdown.sh "$@"

# chmod +x shutdown.sh

Tomcat2中做相应的修改即可。

服务器启动之后,会分别在相应的实例目录下生成logs、temp、work和webapps目录。另外也可以在实例目录下创建lib目录,用于存放app的jar。现在来看实例的安装目录,就和tomcat的安装包解压后的目录结构一样了,但所有实例共享同一套tomcat安装程序的bin和lib。后面如果需要升级tomcat或修改tomcat脚本的相关配置,只需要更新这一套程序就行,也方便了日后的维护。

 

Tomcat配置文件中端口号:

Shutdown port – 此端口用于关闭Tomcat。当执行shutdown.sh脚本时,它会给此端口发出一个信号,Tomcat的进程会监听此端口,如果接收到这样的信号,进程会清理退出。

 

Connector port - 此端口是应用对外公开发布的端口。

 

ajp port – Web服务器(例如Apache的httpd Server)通过此端口和Tomcat进行通信,也可以使用它设置一个负载均衡服务器。

上面配置了配置server port =8105,connector port = 8081,ajp port = 8109

 

Redirect port – 如果此Connector支持非SSL请求和接收SSL请求,Catalina会自动将请求指向到此端口

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值