- 浏览: 212350 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
jongde1:
Axure太难学了,分享mockplus工具,有兴趣可以去了解 ...
Axure RP 原型设计工具 -
di1984HIT:
这里面提到了好几种解决办法。
Spring AOP对日志记录、Exception日志记录 -
di1984HIT:
学习一下。
spring struts2 零配置 -
di1984HIT:
不错,不错啊
Struts2防止表单重复提交 -
di1984HIT:
kettle怎么样啊。
Kettle初探
一、安装JDK
1、安装jdk-7u79-linux-x64.rpm(官网下载)
(1)、下载后,首先把jdk-7u79-linux-x64.rpm 复制到/usr/local/src
#cp jdk-7u79-linux-x64.rpm /usr/local/src/
(2)、给所有用户添加可执行权限
#chmod +x jdk-7u79-linux-x64.rpm
(3)、开始安装程序
#rpm -ivh jdk-7u79-linux-x64.rpm
接下来就是等待安装结束了。
(4)、安装结束后,jdk会安装在/usr/java/jdk1.7.0_79里,然后配置环境变量。
2、配置JDK环境变量
修改/etc目录下的profile文件,添加一组java环境变量,和两组CATALINA环境变量;修改后的profile文件示例如下:
#################################################
如出现Java使用系统自带的,请用如下命令
#################################################
执行下面的代码可以看到当前各种JDK版本和配置:
然后选择2 ,即可。
二、安装Tomcat 7
1、下载tomcat 7(官网下载)
2、配置tomcat
修改server.xml配置和第一个不同的启动、关闭监听端口。修改后示例如下:
################################
#8009->9009 apache监听端口
#8080->9080 tomcat监听端口
#8443->9443 SSL的连接端口
#8005->9005 用于停止tomcat的端口
################################
修改tomcat管理员账户及权限
tomcat-users.xml
###########################################
如Tomcat启动后,Java 进程CPU使用率高
要添加如下代码在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的.
3、建立两个tomcat
tomcat_xxx01\tomcat_xxx02
centos配置Tomcat以指定的身份(非root)运行
已安装并配置好jdk和tomcat环境
已安装并配置好gcc、make等编译工具
1.编译安装守护程序
2. 编译安装后会生成一个jsvc的文件,将其复制到tomcat的bin目录
3.建立一个用来运行Tomcat的普通用户
4.修改启动脚本文件( vim /usr/local/tomcat7/bin/daemon.sh)
找到如下内容
修改TOMCAT_USER=tomcat为你指定用来运行tomcat的用户名usertomcat,去除JAVA_HOME前的注释(即“#”号),并设置为JDK的所在目录,如下面。
在文件靠前位置的注释中加入下面的内容,daemon.sh文件的第二行加入如下内容
添加图片验证码支持(添加内容:JAVA_OPTS=-Djava.awt.headless=true):
以及调整JVM参数。
5.修改相关目录和文件权限
6.启动命令
注:起动daemon.sh后, top命令下,有jsvc进程
在进程中还会出现两个java进程,ps -ef |grep java
属于父子进程,请务必别乱杀进程。
7.添加tomcat为CentOS的服务
8.项目制定文件名
Tomcat 安全配置与性能优化
一、版本安全
升级当前的tomcat版本为最新稳定版本。故名思议,最新稳定版本就要兼顾最新和稳定这两个概念。一个稳定的版本,是需要时间沉淀的,而最新又是相对于稳定版而言的最新。因此我们一般会选择当前大版本中,最新版本往前推几个版本或者往前推几个月出的版本。
目前,企业常用的tomcat大版本为6.0和7.0版本,8.0版本虽然已经出了很久了,但是仍然不建议使用。
在升级版本中,需要注意的事情有两点:
1、尽量避免跨大版本的升级
2、将当前老版本 tomcat 的server.xml、catalina.sh、web.xml和tomcat-users.xml文件进行备份,然后部署完新版本的 tomcat 之后,将这些配置文件覆盖过去即可,然后停掉旧版本,启动新版本即可完成升级操作。
二、隐藏版本信息
为了避免黑客针对某些版本进行攻击,因此我们需要隐藏或者伪装 Tomcat 的版本信息。
针对该信息的显示是由一个jar包控制的,该jar包存放在 Tomcat 安装目录下的lib目录下,名称为 catalina.jar。
我们可以通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,通过修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息。
文件信息如下:
修改完毕之后,重启 Tomcat即可看到效果!
三、优化 web.xml
servlet与其它适用于整个Web应用程序设置的配置文件,必须符合servlet规范的标准格式。通过它可以配置你web应用的相关选项,tomcat在启动的时候会读取这个文件,完成你开发的系统的一些初始化操作。
它可以做如下事情:
1、提供基于 servlet 的相关配置
2、增加监听器,监控session或在tomcat启动时,加载一些你希望加载的资源。比如创建数据库连接池等等
3、设置session过期时间,tomcat默认是30分钟
4、更改应用的默认网页,常用为index.html/index.jsp等
5、增加过滤器,做一些你希望的过滤操作,比如敏感词汇的过滤
6、增加一些 jstl(标准标签库)的定义,方便在jsp中直接includ进来,直接使用这些标签
7、struts,spring或hibernate的一些配置等等
下面摘录下O'REILLY 的《Tomcat 权威指南》中的一段话:
web.xml 的文件格式定义在 Servlet 规范中,因此所有符合 Servlet 规范的 Java Servlet Container 都会用到它。当 Tomcat 部署应用程序时(在激活过程中,或加载应用程序后),它都会读取通用的conf/web.xml,然后再读取web应用程序中的WEB-INF/web.xml。其实根据他们的位置,我们就可以知道,conf/web.xml文件中的设定会应用于所有的web应用程序,而某些web应用程序的WEB-INF/web.xml中的设定只应用于该应用程序本身。
如果没有WEB-INF/web.xml文件,tomcat会输出找不到的消息,但仍然会部署并使用web应用程序,servlet规范的作者想要实现一种能迅速并简易设定新范围的方法,以用作测试,因此,这个web.xml并不是必要的,不过通常最好还是让每一个上线的web应用程序都有一个自己的WEB-INF/web.xml,即使它只用做识别,但我想这是一个好的习惯。
由于Servlet规范主要是对于web程序员,而非系统管理员使用的。因此,对于运维来讲,我们可能更关心的是站点的默认网页、自定义错误页面、禁止列目录等功能。
由于,正常生产环境中,肯定不会直接由tomcat对公网提供服务,前端肯定放的有apache或者nginx。因此,针对站点的默认主页和自定义错误页面,我们均在前端的apache或者nginx中做。另外,公司也可能交由程序猿在项目内的WEB-INF/web.xml中去做定义。
在tomcat新版本中,自动默认已经禁止列目录功能。
四、优化 tomcat-user.xml
该文件含有用户名、角色以及密码的清单文件。负责提供webapps下manager项目的登录认证管理。
在生产环境中,我们需要将该文件全部注释。
五、优化 server.xml
Tomcat的主配置文件,该文件中包含很多主要元素,比如Service、Connector、Host等,这些元素都会创建软件"对象"、排序及进程管道中设置的这些元素嵌套方,使我们可以执行过滤、分组等工作。
针对该文件,我们需要优化的点有如下:
1、maxThreads 连接数限制
maxThreads 是 Tomcat 所能接受最大连接数。一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法,即,在一个服务器上启动多个tomcat然后做负载均衡处理。
这里还需要注意的一点是,tomcat 和 php 不同。php可以按照cpu和内存的情况去配置连接数,上万很正常。而 java 还需要注意 jvm 的参数配置。如果不注意就会因为jvm参数过小而崩溃。
2、多虚拟主机
强烈建议不要使用 Tomcat 的虚拟主机,推荐每个站点使用一个实例。即,可以启动多个 Tomcat,而不是启动一个 Tomcat 里面包含多个虚拟主机。因为 Tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到所有应用程序。虽然采用多实例的方式会产生过多的开销,但至少保障了应用程序的隔离和安全。
3、压错传输
tomcat作为一个应用服务器,也是支持 gzip 压缩功能的。我们可以在 server.xml 配置文件中的 Connector 节点中配置如下参数,来实现对指定资源类型进行压缩。
提示:
Tomcat 的压缩是在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程 HTML、CSS、Javascript和Text,它可以节省40% 左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP、JSP、ASP、Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。但是,压缩会增加 Tomcat 的负担,因此最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,将压缩的任务交由 Nginx/Apache 去做。
4、管理AJP端口
AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。由于我们公司前端是由nginx做的反向代理,因此不使用此连接器,因此需要注销掉该连接器。
5、更改关闭 Tomcat 实例的指令
server.xml中定义了可以直接关闭 Tomcat 实例的管理端口。我们通过 telnet 连接上该端口之后,输入 SHUTDOWN (此为默认关闭指令)即可关闭 Tomcat 实例(注意,此时虽然实例关闭了,但是进程还是存在的)。由于默认关闭 Tomcat 的端口和指令都很简单。默认端口为8005,指令为SHUTDOWN 。因此我们需要将关闭指令修改复杂一点。
当然,在新版的 Tomcat 中该端口仅监听在127.0.0.1上,因此大家也不必担心。除非黑客登陆到tomcat本机去执行关闭操作。
修改实例:
6、更改 Tomcat 的服务监听端口
一般公司的 Tomcat 都是放在内网的,因此我们针对 Tomcat 服务的监听地址都是内网地址。
修改实例:
7、关闭war自动部署
默认 Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意程序,因此我们要关闭自动部署。
修改实例:
六、禁用 Tomcat 管理页面
我们线上是不使用 Tomcat 默认提供的管理页面的,因此都会在初始化的时候就把这些页面删掉。这些页面是存放在 Tomcat 安装目录下的webapps目录下的。
我们只需要删除该目录下的所有文件即可。
当然,还有涉及管理页面的2个配置文件 host-manager.xml 和 manager.xml 也需要一并删掉。这两个文件存放在 Tomcat 安装目录下的conf/Catalina/localhost目录下。
七、用普通用户启动 Tomcat
为了进一步安全,我们不建议使用 root 来启动 Tomcat。这边建议使用专用用户 tomcat 或者 nobody 用户来启动 Tomcat。
在启动之前,需要对我们的tomcat 安装目录下所有文件的属主和属组都设置为指定用户。
八、分离 Tomcat 和项目的用户
为了防止 Tomcat 被植入 web shell 程序后,可以修改项目文件。因此我们要将 Tomcat 和项目的属主做分离,这样子,即便被搞,他也无法创建和编辑项目文件。
三、安装Nginx
1、直接使用已经下载好的:nginx-release-centos-6-0.el6.ngx.noarch.rpm
(或通过其它方式下载:wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm )
2、安装
3、# 安装过程会提示错误可以不必理会(warning: nginx-release-centos-6-0.el6.ngx.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY)
4、用yum安装
5、 安装成功的话提示: Complete
6、配置nignx多个域名
场景如下:有两个域名:
www.aaa.com 对应 tomcat tomcat_xxx01
www.bbb.com 对应 tomcat tomcat_xxx02
(1)、在安装目录(/etc/nginx/conf.d)
添加两个域名相关的配置文件
xxx01.conf、xxx02.conf
xxx01.conf内容如下:
xxx02.conf内容如下:
(2)重启Nginx
至此已经配置完所有操作,接着就是分别启动两个tomcat ,然后利用各自的域名访问。
reference:http://blog.csdn.net/loadrunn/article/details/6579639
http://www.cnblogs.com/xing901022/p/4463896.html
http://www.cnblogs.com/vijayfly/p/5757586.html
http://www.linuxidc.com/Linux/2016-04/129971.htm
http://nolinux.blog.51cto.com/4824967/1608940/
1、安装jdk-7u79-linux-x64.rpm(官网下载)
(1)、下载后,首先把jdk-7u79-linux-x64.rpm 复制到/usr/local/src
#cp jdk-7u79-linux-x64.rpm /usr/local/src/
(2)、给所有用户添加可执行权限
#chmod +x jdk-7u79-linux-x64.rpm
(3)、开始安装程序
#rpm -ivh jdk-7u79-linux-x64.rpm
接下来就是等待安装结束了。
(4)、安装结束后,jdk会安装在/usr/java/jdk1.7.0_79里,然后配置环境变量。
2、配置JDK环境变量
修改/etc目录下的profile文件,添加一组java环境变量,和两组CATALINA环境变量;修改后的profile文件示例如下:
[root@33333 ~]# vi /etc/profile
JAVA_HOME=/usr/java/jdk1.7.0_79 JAVA_BIN=/usr/java/jdk1.7.0_79/bin PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH #tomcat可以不需要添加如下代码 ################################################# #CATALINA_BASE_xxx01="/prod/xxx01/tomcat-6.0.41-1" #CATALINA_HOME_xxx01="/prod/xxx01/tomcat-6.0.41-1" #export CATALINA_BASE_xxx01 CATALINA_HOME_xxx01 #CATALINA_BASE_xxx02="/prod/xxx02/tomcat-6.0.41-1" #CATALINA_HOME_xxx02="/prod/xxx02/tomcat-6.0.41-1" #export CATALINA_BASE_xxx02 CATALINA_HOME_xxx02 ##################################################
[root@33333 ~]# source /etc/profile [root@33333 ~]# java -version
#################################################
如出现Java使用系统自带的,请用如下命令
#################################################
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_79/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_79/bin/javac 300 sudo update-alternatives --install /usr/bin/jar jar /usr/java/jdk1.7.0_79/bin/jar 300 sudo update-alternatives --install /usr/bin/jcontrol /usr/java/jdk1.7.0_79/bin/jcontrol 300 sudo update-alternatives --install /usr/bin/jps jps /usr/java/jdk1.7.0_79/bin/jps 300
执行下面的代码可以看到当前各种JDK版本和配置:
sudo update-alternatives --config java
然后选择2 ,即可。
二、安装Tomcat 7
1、下载tomcat 7(官网下载)
2、配置tomcat
修改server.xml配置和第一个不同的启动、关闭监听端口。修改后示例如下:
<Server port="8050" shutdown="SHUTDOWN"> 端口:8049->8050 <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="9080" maxHttpHeaderSize="8192" 端口:8080->9080 maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
################################
#8009->9009 apache监听端口
#8080->9080 tomcat监听端口
#8443->9443 SSL的连接端口
#8005->9005 用于停止tomcat的端口
################################
修改tomcat管理员账户及权限
tomcat-users.xml
<role rolename="tomcat"/> <role rolename="role1"/> <role rolename="admin"/> <role rolename="manager-gui"/> <user username="admin" password="admin" roles="tomcat,admin,manager-gui"/> <user username="tomcat" password="tomcat" roles="tomcat,admin,manager-gui"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/>
###########################################
如Tomcat启动后,Java 进程CPU使用率高
要添加如下代码在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的.
# OS specific support. $var _must_ be set to either true or false. JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" cygwin=false
3、建立两个tomcat
tomcat_xxx01\tomcat_xxx02
centos配置Tomcat以指定的身份(非root)运行
已安装并配置好jdk和tomcat环境
已安装并配置好gcc、make等编译工具
1.编译安装守护程序
cd /prod/shai/apache-tomcat-7.0.67/bin/ tar vzxf commons-daemon-native.tar.gz cd /prod/shai/apache-tomcat-7.0.67/bin/commons-daemon-1.0.15-native-src/unix/ ./configure --with-java=/usr/local/jdk1.7/ make
2. 编译安装后会生成一个jsvc的文件,将其复制到tomcat的bin目录
cp jsvc /prod/shai/apache-tomcat-7.0.67/bin/
3.建立一个用来运行Tomcat的普通用户
useradd usertomcat -M -d / -s /usr/sbin/nologin usermod -L usertomcat #锁定密码,使密码无效
4.修改启动脚本文件( vim /usr/local/tomcat7/bin/daemon.sh)
找到如下内容
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat # Set JAVA_HOME to working JDK or JRE # JAVA_HOME=/opt/jdk-1.6.0.22
修改TOMCAT_USER=tomcat为你指定用来运行tomcat的用户名usertomcat,去除JAVA_HOME前的注释(即“#”号),并设置为JDK的所在目录,如下面。
test ".$TOMCAT_USER" = . && TOMCAT_USER=usertomcat # Set JAVA_HOME to working JDK or JRE JAVA_HOME=/usr/java/jdk1.7.0_79
在文件靠前位置的注释中加入下面的内容,daemon.sh文件的第二行加入如下内容
# chkconfig: - 80 20
添加图片验证码支持(添加内容:JAVA_OPTS=-Djava.awt.headless=true):
以及调整JVM参数。
test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER" JAVA_OPTS=-Djava.awt.headless=true JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
5.修改相关目录和文件权限
chown -R usertomcat:usertomcat /prod/shai/apache-tomcat-7.0.67/ chmod a+x /prod/shai/apache-tomcat-7.0.67/bin/daemon.sh
6.启动命令
启动: daemon.sh start 停止: daemon.sh stop 前台运行: daemon.sh run 查看版本: daemon.sh version
注:起动daemon.sh后, top命令下,有jsvc进程
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1195 usertomc 20 0 3256m 760m 12m S 2.7 9.7 17:32.77 jsvc
在进程中还会出现两个java进程,ps -ef |grep java
属于父子进程,请务必别乱杀进程。
7.添加tomcat为CentOS的服务
ln -s /prod/shai/apache-tomcat-7.0.67/bin/daemon.sh /etc/init.d/tomcat7 chkconfig –-add tomcat7
8.项目制定文件名
vim /prod/shai/apache-tomcat-7.0.67/conf/server.xml <Context path="/hello" docBase="xxx" debug="0" privileged="true"> </Context>
Tomcat 安全配置与性能优化
一、版本安全
升级当前的tomcat版本为最新稳定版本。故名思议,最新稳定版本就要兼顾最新和稳定这两个概念。一个稳定的版本,是需要时间沉淀的,而最新又是相对于稳定版而言的最新。因此我们一般会选择当前大版本中,最新版本往前推几个版本或者往前推几个月出的版本。
目前,企业常用的tomcat大版本为6.0和7.0版本,8.0版本虽然已经出了很久了,但是仍然不建议使用。
在升级版本中,需要注意的事情有两点:
1、尽量避免跨大版本的升级
2、将当前老版本 tomcat 的server.xml、catalina.sh、web.xml和tomcat-users.xml文件进行备份,然后部署完新版本的 tomcat 之后,将这些配置文件覆盖过去即可,然后停掉旧版本,启动新版本即可完成升级操作。
二、隐藏版本信息
为了避免黑客针对某些版本进行攻击,因此我们需要隐藏或者伪装 Tomcat 的版本信息。
针对该信息的显示是由一个jar包控制的,该jar包存放在 Tomcat 安装目录下的lib目录下,名称为 catalina.jar。
我们可以通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,通过修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息。
文件信息如下:
[root@localhost ~]# cat org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#' server.info=Apache Tomcat/7.0.53 server.number=7.0.53.0 server.built=Mar 25 2014 06:20:16 #################################################################### 当然,还有另外一种方法来实现隐藏或伪装Tomcat的版本信息,不过本质和上面一样,操作如下: [root@localhost ~]# cd /prod/shai/apache-tomcat-7.0.67/lib [root@localhost lib]# mkdir -p org/apache/catalina/util [root@localhost lib]# cd org/apache/catalina/util [root@localhost util]# vim ServerInfo.properties server.info=nolinux # 如果想修改成其它版本号,把这个地方的值改成其它值就行了
修改完毕之后,重启 Tomcat即可看到效果!
三、优化 web.xml
servlet与其它适用于整个Web应用程序设置的配置文件,必须符合servlet规范的标准格式。通过它可以配置你web应用的相关选项,tomcat在启动的时候会读取这个文件,完成你开发的系统的一些初始化操作。
它可以做如下事情:
1、提供基于 servlet 的相关配置
2、增加监听器,监控session或在tomcat启动时,加载一些你希望加载的资源。比如创建数据库连接池等等
3、设置session过期时间,tomcat默认是30分钟
4、更改应用的默认网页,常用为index.html/index.jsp等
5、增加过滤器,做一些你希望的过滤操作,比如敏感词汇的过滤
6、增加一些 jstl(标准标签库)的定义,方便在jsp中直接includ进来,直接使用这些标签
7、struts,spring或hibernate的一些配置等等
下面摘录下O'REILLY 的《Tomcat 权威指南》中的一段话:
web.xml 的文件格式定义在 Servlet 规范中,因此所有符合 Servlet 规范的 Java Servlet Container 都会用到它。当 Tomcat 部署应用程序时(在激活过程中,或加载应用程序后),它都会读取通用的conf/web.xml,然后再读取web应用程序中的WEB-INF/web.xml。其实根据他们的位置,我们就可以知道,conf/web.xml文件中的设定会应用于所有的web应用程序,而某些web应用程序的WEB-INF/web.xml中的设定只应用于该应用程序本身。
如果没有WEB-INF/web.xml文件,tomcat会输出找不到的消息,但仍然会部署并使用web应用程序,servlet规范的作者想要实现一种能迅速并简易设定新范围的方法,以用作测试,因此,这个web.xml并不是必要的,不过通常最好还是让每一个上线的web应用程序都有一个自己的WEB-INF/web.xml,即使它只用做识别,但我想这是一个好的习惯。
由于Servlet规范主要是对于web程序员,而非系统管理员使用的。因此,对于运维来讲,我们可能更关心的是站点的默认网页、自定义错误页面、禁止列目录等功能。
由于,正常生产环境中,肯定不会直接由tomcat对公网提供服务,前端肯定放的有apache或者nginx。因此,针对站点的默认主页和自定义错误页面,我们均在前端的apache或者nginx中做。另外,公司也可能交由程序猿在项目内的WEB-INF/web.xml中去做定义。
在tomcat新版本中,自动默认已经禁止列目录功能。
四、优化 tomcat-user.xml
该文件含有用户名、角色以及密码的清单文件。负责提供webapps下manager项目的登录认证管理。
在生产环境中,我们需要将该文件全部注释。
五、优化 server.xml
Tomcat的主配置文件,该文件中包含很多主要元素,比如Service、Connector、Host等,这些元素都会创建软件"对象"、排序及进程管道中设置的这些元素嵌套方,使我们可以执行过滤、分组等工作。
针对该文件,我们需要优化的点有如下:
1、maxThreads 连接数限制
maxThreads 是 Tomcat 所能接受最大连接数。一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法,即,在一个服务器上启动多个tomcat然后做负载均衡处理。
这里还需要注意的一点是,tomcat 和 php 不同。php可以按照cpu和内存的情况去配置连接数,上万很正常。而 java 还需要注意 jvm 的参数配置。如果不注意就会因为jvm参数过小而崩溃。
2、多虚拟主机
强烈建议不要使用 Tomcat 的虚拟主机,推荐每个站点使用一个实例。即,可以启动多个 Tomcat,而不是启动一个 Tomcat 里面包含多个虚拟主机。因为 Tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到所有应用程序。虽然采用多实例的方式会产生过多的开销,但至少保障了应用程序的隔离和安全。
3、压错传输
tomcat作为一个应用服务器,也是支持 gzip 压缩功能的。我们可以在 server.xml 配置文件中的 Connector 节点中配置如下参数,来实现对指定资源类型进行压缩。
compression="on" # 打开压缩功能 compressionMinSize="50" # 启用压缩的输出内容大小,默认为2KB noCompressionUserAgents="gozilla, traviata" # 对于以下的浏览器,不启用压缩 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" # 哪些资源类型需要压缩
提示:
Tomcat 的压缩是在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程 HTML、CSS、Javascript和Text,它可以节省40% 左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP、JSP、ASP、Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。但是,压缩会增加 Tomcat 的负担,因此最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,将压缩的任务交由 Nginx/Apache 去做。
4、管理AJP端口
AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。由于我们公司前端是由nginx做的反向代理,因此不使用此连接器,因此需要注销掉该连接器。
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
5、更改关闭 Tomcat 实例的指令
server.xml中定义了可以直接关闭 Tomcat 实例的管理端口。我们通过 telnet 连接上该端口之后,输入 SHUTDOWN (此为默认关闭指令)即可关闭 Tomcat 实例(注意,此时虽然实例关闭了,但是进程还是存在的)。由于默认关闭 Tomcat 的端口和指令都很简单。默认端口为8005,指令为SHUTDOWN 。因此我们需要将关闭指令修改复杂一点。
当然,在新版的 Tomcat 中该端口仅监听在127.0.0.1上,因此大家也不必担心。除非黑客登陆到tomcat本机去执行关闭操作。
修改实例:
<Server port="8005" shutdown="9SDKJ29jksjf23sjf0LSDF92JKS9DKkjsd">
6、更改 Tomcat 的服务监听端口
一般公司的 Tomcat 都是放在内网的,因此我们针对 Tomcat 服务的监听地址都是内网地址。
修改实例:
<Connector port="8080" address="172.16.100.1" />
7、关闭war自动部署
默认 Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意程序,因此我们要关闭自动部署。
修改实例:
<Host name="localhost" appBase="" unpackWARs="false" autoDeploy="false">
六、禁用 Tomcat 管理页面
我们线上是不使用 Tomcat 默认提供的管理页面的,因此都会在初始化的时候就把这些页面删掉。这些页面是存放在 Tomcat 安装目录下的webapps目录下的。
我们只需要删除该目录下的所有文件即可。
当然,还有涉及管理页面的2个配置文件 host-manager.xml 和 manager.xml 也需要一并删掉。这两个文件存放在 Tomcat 安装目录下的conf/Catalina/localhost目录下。
七、用普通用户启动 Tomcat
为了进一步安全,我们不建议使用 root 来启动 Tomcat。这边建议使用专用用户 tomcat 或者 nobody 用户来启动 Tomcat。
在启动之前,需要对我们的tomcat 安装目录下所有文件的属主和属组都设置为指定用户。
八、分离 Tomcat 和项目的用户
为了防止 Tomcat 被植入 web shell 程序后,可以修改项目文件。因此我们要将 Tomcat 和项目的属主做分离,这样子,即便被搞,他也无法创建和编辑项目文件。
三、安装Nginx
1、直接使用已经下载好的:nginx-release-centos-6-0.el6.ngx.noarch.rpm
(或通过其它方式下载:wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm )
2、安装
# rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm
3、# 安装过程会提示错误可以不必理会(warning: nginx-release-centos-6-0.el6.ngx.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY)
4、用yum安装
# yum install nginx
5、 安装成功的话提示: Complete
6、配置nignx多个域名
场景如下:有两个域名:
www.aaa.com 对应 tomcat tomcat_xxx01
www.bbb.com 对应 tomcat tomcat_xxx02
(1)、在安装目录(/etc/nginx/conf.d)
添加两个域名相关的配置文件
xxx01.conf、xxx02.conf
xxx01.conf内容如下:
upstream www.aaa.com { server localhost:37658; #ip_hash; } server { listen 80; server_name www.aaa.com aaa.com; #if ($host = 'aaa.com' ) { # rewrite ^/(.*)$ http://www.aaa.com/$1 permanent; #} # rewrite ^/(.*) http://www.aaa.com/$1 permanent; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { proxy_pass http://www.aaa.com; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
xxx02.conf内容如下:
upstream www.bbb.com { server localhost:37659; #ip_hash; } server { listen 80; server_name www.bbb.com bbb.com; #if ($host = 'bbb.com' ) { # rewrite ^/(.*)$ http://www.bbb.com/$1 permanent; #} # rewrite ^/(.*) http://www.bbb.com/$1 permanent; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { proxy_pass http://www.bbb.com; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
(2)重启Nginx
# nginx -s reload
至此已经配置完所有操作,接着就是分别启动两个tomcat ,然后利用各自的域名访问。
reference:http://blog.csdn.net/loadrunn/article/details/6579639
http://www.cnblogs.com/xing901022/p/4463896.html
http://www.cnblogs.com/vijayfly/p/5757586.html
http://www.linuxidc.com/Linux/2016-04/129971.htm
http://nolinux.blog.51cto.com/4824967/1608940/
发表评论
-
Linux 运维
2017-03-24 14:54 582Linux 运维 ... -
linux下安装swftools和openOffice
2015-07-03 17:09 747最近公司实现一个仿豆丁网百度文库阅读器的功能,需要用到两个软件 ... -
linux backup mysql
2015-01-14 17:38 6991、在linux系统通过脚本安装程序时,提示: -bash: ... -
linux 定时任务
2014-10-31 15:34 689Crontab的格式 第1列分钟1~59 第2列小时1~23 ... -
多域名配置在一个IP
2014-10-24 19:22 730一、配置tomcat 1、安装 ... -
redis Java develop
2014-10-23 18:01 6591. http://javacrazyer.iteye.com ... -
redis install & uninstall
2014-10-23 16:15 991######################install w ... -
linux security
2014-10-09 16:51 821Linu ... -
验证码 原理 破解
2014-08-20 17:52 621验证码 原理 破解 reference: http://bl ... -
HttpClient 学习经验
2014-08-14 11:01 674HttpClient学习经验 HttpCl ... -
linux install vmware
2014-08-09 15:38 1433linux install vmware 1. down ... -
Linux 搭建SVN 服务器
2014-08-07 13:27 749Linux 搭 ... -
Centos6 下的 nginx 安装
2014-08-04 15:41 787Centos6 下的 nginx 安装 ... -
搭建Nginx+Java环境(tomcat)
2014-07-30 22:17 10201.搭建Nginx+Java环境 《高性能Linux服务器 ... -
P2P resources
2013-12-09 18:24 9781.P2P导航收录 http://www.p2peye.com ... -
Websphere Community Edition change port 8080 to 80
2013-08-30 21:45 686WebSphere Community Edition Cha ... -
subversion config
2013-06-25 18:33 858subversion config 1. 添加环境变量 ... -
安装subversion 1.7.4
2013-06-25 11:47 1888安装subversion 1.7.4 在Cento ... -
Linux下修改root密码以及找回密码的方法
2013-06-09 19:10 833Linux下修改root密码以及找回密码的方法 以root身 ... -
SSH 改root密码时乱码,使root不能登录
2013-06-09 18:50 2909SSH 乱码 用SSH登录后,因为乱码,而重置root密码后 ...
相关推荐
在Linux环境下,特别是Ubuntu操作系统中,有时我们需要在同一台服务器上部署多个Tomcat实例来满足不同的应用需求或进行负载均衡等操作。本文将详细介绍如何在Ubuntu系统下配置并运行多个Tomcat服务。 #### 二、配置...
完成上述步骤后,你应该能够在Apache和Tomcat的组合下成功配置多个域名(包括二级域名)了。注意,配置过程中可能需要根据实际环境调整部分参数,例如端口、路径等。同时,确保防火墙允许相应的HTTP(80)和HTTPS...
本示例中的"nginx-配置多个tomcat"就是这样一个应用场景,它涉及到Nginx和Tomcat两个核心组件,以及如何通过Nginx作为反向代理来管理多个Tomcat实例。 **Nginx** 是一款高性能的HTTP和反向代理服务器,以其轻量级、...
- 通过`java -jar`命令连续启动多个Tomcat实例,如`java -jar 8091.war & java -jar 8092.war &`。 - 查询Tomcat服务器的PID:`ps -ef | grep 服务名称`。 - 杀死Tomcat进程:使用`kill -9 PID`强制杀死,或`kill...
如果你需要部署多个应用,可以通过调整`Context`元素来实现。 四、验证配置与测试负载均衡 完成配置后,重启Nginx和Tomcat以使改动生效。使用`sudo service nginx restart`和`sudo service tomcat restart`命令。...
Nginx + Tomcat 反向代理 如何在一台服务器部署多个站点,节省服务器开支,就在这篇文章了。 首先我们需要安装好Nginx、jdk、Tomcat,安装方法已经在 上一篇 说过了,本篇不再赘述。 下来看一下我们的需求,我这里有...
在IT行业中,尤其是在服务器部署和管理领域,有时候我们需要在一台物理服务器上运行多个Tomcat实例,以便为不同的项目或服务提供隔离的运行环境。标题"同一台机不同IP不同tomcat.zip_boarddua_tomcat 多IP_tomcat...
这个"Linux部署环境包"包含了三个核心组件:JDK1.8、Nginx和Tomcat8,这些都是在服务器上搭建Web服务栈的关键软件。现在,让我们详细探讨这些组件及其在实际应用中的作用。 **JDK1.8(Java Development Kit)** JDK...
通过以上步骤,我们可以有效地在一台服务器上配置并运行多个Tomcat实例,实现资源的高效利用和应用的独立部署。在实际操作中,根据具体需求,可能还需要调整其他配置,如连接池、线程池、session复制等,以优化性能...
根据提供的文件信息,本文将围绕“Tomcat8 for Linux”的主题进行深入探讨,重点解析Tomcat8在Linux环境下的安装、配置与优化等关键知识点。 ### Tomcat8简介 Apache Tomcat是Apache软件基金会(ASF)开发的一款...
配合负载均衡器,可以将请求分发到多个Tomcat实例,提高系统的整体处理能力。 总之,"Tomcat 8.0.36 Linux版ZIP"是一个强大的、开源的Java Web服务器,适用于Linux环境,提供了丰富的功能和高度的可定制性,是开发...
本文详细介绍了如何在Ubuntu环境下部署JavaWeb项目,涵盖了JDK安装、MySQL数据库配置以及Tomcat服务器搭建等多个方面。通过以上步骤,你可以顺利地在Linux环境下部署自己的JavaWeb应用。需要注意的是,部署过程中的...
3. **虚拟主机**:配置多个域名或应用在同一Tomcat实例上运行。 4. **连接器(Connector)与端口**:调整`Connector`配置以更改监听的端口或实现HTTP/HTTPS协议。 5. **JNDI资源**:配置数据源、邮件会话等JNDI资源...
在Tomcat中,虚拟主机管理多个Web应用程序,每个都绑定到不同的主机名。这可以通过修改Tomcat的配置文件来实现。主要涉及两个文件:`server.xml`和`conf/server.xml`。 1. 打开`conf/server.xml`,找到`<Host>`元素...
通过上述介绍,我们可以看到在Linux环境下部署WebLogic涉及了多个步骤,包括系统环境准备、安装配置、创建域以及启动管理等。掌握了这些知识点后,开发者和运维人员就能够更加熟练地在生产环境中部署和管理WebLogic...
当需要在同一台服务器上运行多个Tomcat实例时,这通常是为了隔离不同应用或提高系统资源利用率。以下是如何在Linux服务器上搭建两个Tomcat实例,以及使用Nginx作为反向代理的详细步骤: 1. 安装和解压第二个Tomcat...
配置虚拟主机则是为了在一个Tomcat实例上托管多个域名的应用。这涉及到修改`conf/server.xml`中的`Host`元素,每个`Host`元素代表一个域名,可以包含多个`Context`。虚拟主机配置允许你根据域名的不同提供定制化的...
每个Host可以部署多个Web应用,每个Web应用对应一个Context。 1.6 Context:Context对应一个Web应用程序,由一个或多个Servlet组成。它负责加载Servlet类并处理与之匹配的请求。 2. Tomcat Server的结构图 Tomcat...
例如,修改conf/server.xml文件来更改默认端口,或者添加新的Host元素来支持多个域名。 此外,Tomcat 6.0支持热部署,这意味着你可以在不关闭服务器的情况下更新或替换Web应用的某些部分。只需将新文件或更新的WAR...
总的来说,Apache Tomcat 7.0.56 是一个功能强大、易于使用和高度可定制的Web服务器,适合运维开发人员用于开发和部署Java Web应用程序。不过,随着技术的发展,更高版本的Tomcat(如8.x或9.x)提供了更多特性,例如...