Tomcat 部署及配置
下载,解压tomcat、jdk
1、解压,链接tomcat、jdk
tar xf jdk-8u161-linux-x64.tar.gz
tar xf apache-tomcat-8.5..tar.gz
mv jdk1..0_161/ /usr/local/
ln -s /usr/local/jdk1..0_161 /usr/local/jdk
mv apache-tomcat-8.5. /usr/local/
ln -s /usr/local/apache-tomcat-8.5. /usr/local/tomcat
2、配置环境变量并使其生效
# tail - /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export TOMCAT_HOME=/usr/local/tomcat # source /etc/profile
3、赋予权限、修改ulimit
chown -R tomcat.tomcat /usr/local/{jdk/,tomcat/}
echo '* - nofile 65535' >> /etc/security/limits.conf
4、启动tomcat
su tomcat /usr/local/tomcat/bin/startup.sh
#备注:一定要切换到对应的tomcat用户里边启动,权限最小化 #查看启动结果
$ netstat -lnpt
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
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:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::8080 :::* LISTEN 4088/java
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::8009 :::* LISTEN 4088/java
5、tomcat配置文件的简单介绍
<Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
#连接器:首先这个8080是服务端口,后边http/1.1 是http的长连接,连接超时时间,毫秒。8443重定向端口 <Connector port="" protocol="AJP/1.3" redirectPort="" />
#连接器:AJP的连接器,由于文档不多,不建议使用。 /usr/local/tomcat/webapps/ROOT
#默认的tomcat的根文件位置。如果放到这个里边解压,默认是不需要添加url路径的:http://IP:端口
#如果放到/usr/local/tomcat/webapps/ceshi 访问:http://IP:端口/ceshi
6、tomcat的重启
ll /usr/local/tomcat/
bin
conf
lib
LICENSE
logs
NOTICE
RELEASE-NOTES
RUNNING.txt
temp
webapps
work #备注:生产环境下,如果重启tomcat建议清空 temp 和 work目录下的东西,
#tomcat启动时会吧临时文件和工作文件放到temp和work文件夹下。建议清空再重启,否则可能发生非常奇怪的问题。 #重启tomcat
/usr/local/tomcat/bin/shutdown.sh
rm -rf /usr/local/tomcat/{temp/*,work/*}
/usr/local/tomcat/bin/startup.sh
7、配置tomcat的gui
$ tail - tomcat-users.xml <<role rolename="manager-gui" />
<role rolename="admin-gui" />
<user username="tomcat" password="<password>" roles="manager-gui,admin-gui"/>
</tomcat-users>
#备注:密码一定要复杂。另外建议开启tomcat的状态页面,其余全部删除。状态页面可以很直观的看到tomcat的状态。zabbix比较慢
#修改完之后重启tomcat
8、tomcat 安全管理规范
每个公司都有每个公司的管理制度以及对应的软件的安全规范条款。这里就引用网上同僚们的一些东西吧。
注意:可以参考原文链接地址
Tomcat的安全
生产环境tomcat规范 .更改服务监听端口
若 Tomcat 都是放在内网的,则针对 Tomcat 服务的监听地址都是内网地址 标准配置:<Connector port="" server="webserver"/> .telnet管理端口保护
修改默认的 管理端口不易猜测(大于1024),但要求端口配置在8000~8999之间 修改SHUTDOWN命令为其他字符串
标准配置:<Server port="" shutdown="dangerous"> .AJP连接端口的保护
修改默认的ajp 8009端口为不易冲突(大于1024),但要求端口配置在8000~8999之间 通过iptables规则限制ajp端口访问的权限仅为线上机器,目的在于防止线下测试流量被apache的mod_jk转发至线上tomcat服务器 标准配置:<Connector port="" protocol="AJP/1.3"/> .禁用管理端
删除默认$CATALINA_HOME/conf/tomcat-users.xml文件,重启tomcat将会自动生成新的文件 删除$CATALINA_HOME/webapps下载默认的所有目录和文件 将tomcat应用根目录配置为tomcat安装目录以外的目录 标准配置: a.server.xml配置
一种直接修改Host节点信息,表示全局配置 <Host name="localhost" appBase="/data/www/tomcat_webapps" unpackWARs="true" autoDeploy="false"></Host> 另一种直接在Host节点中新增Context节点,指定具体的项目 <Context path="" docBase="/usr/local/tomcat/webapps/jenkins" debug="" reloadable="false" crossContext="true">
</Context> b.在$CATALINA_HOME/conf/Catalina/locathost目录下新增文件 test##.xml <Context displayName="test" docBase="/data/www/tomcat_webapps/test##20160506172651.war" reloadable="false" /> .隐藏Tomcat的版本信息
针对该信息的显示是由一个jar包控制的,该jar包存放在$CATALINA_HOME/lib目录下,名称为 catalina.jar,通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息 $ cd $CATALINA_HOME/lib
$ jar xf catalina.jar
$ cat org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'
$ mkdir -p org/apache/catalina/util
$ vim ServerInfo.properties
server.info=nolinux # 把这个值改成其它值就行了 自定义错误页面:修改$CATALINA_HOME/conf/web.xml重定向 //500等错误到指定的错误页面 .降权启动
Tomcat启动用户权限必须非root权限,尽量降低tomcat启动用户的目录访问权限,如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发,为了防止 Tomcat 被植入 web shell 程序后,可以修改项目文件。要将 Tomcat 和项目的属主做分离,即便被破坏也无法创建和编辑项目文件 .文件列表访问控制
$CATALINA_HOME/conf/web.xml文件中的default部分的listings的配置必须为false(默认),表示不列出文件列表 .访问限制
通过配置,限定访问的IP来源 全局设置限定IP和域名访问: <Host name="localhost" appBase="/data/www/tomcat_webapps" unpackWARs="true" autoDeploy="false">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.10,192.168.1.30,192.168.2.*" deny=""/>
<Valve className="org.apache.catalina.valves.RemoteHostValve" allow="www.test.com,*.test.com" deny=""/>
</Host> .脚本权限回收
控制CATALINAHOME/bin目录下的start.sh、catalina.sh、shutdown.sh的可执行权限;
chmod −R CATALINA_HOME/bin/* 10.访问日志格式规范
开启tomcat默认访问日志中Referer和User-Agent记录 标准配置: <Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log"
suffix=".txt" pattern="%h %l %u %t "%r" %s %b %{Referer}i %{User-Agent}i %D"
resolveHosts="false" /> 11.Server header重写
在HTTP Connector配置中加入server的配置,server="chuck-server"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
server="lltest" /> # curl --head http://localhost:8080 Tomcat 安全管理规范
Tomcat 安全管理规范
未完待续!!!!!!!
Tomcat 部署及配置的更多相关文章
- springboot 通过 tomcat 部署的配置
spring-boot 有一个主类,是可以直接 run,然后就可以访问了,但是如果我们想像传统的那种 web 项目一样部署在 tomcat 里,要怎么配置呢.我们一起来看下. pom.xml 里添加如 ...
- [转载]Tomcat部署与配置
转载来源: http://ibash.cc/frontend/article/2/ 感觉挺好的 自己之前总是怕麻烦 其实是水平不够. 一句话介绍Tomcat Tomcat是一个免费的开源的Web应用 ...
- web项目脱离Eclipse在Tomcat部署并配置Eclipse调试
简单来说,把WEB项目打成war包后放到webapps目录下启动tomcat便部署成功了,但是因为与Eclipse没有关联,故而无法Debug调试代码.这时在Tomcat的catalina.sh脚本里 ...
- JDK配置及tomcat部署
JDK配置及tomcat部署 2017-09-30-17:54:03 个人原创博客,转载请注明出处,作者,否则依法追究责任,文中引用了一些百度经验的图片,特此注明. 一,配置JDK:1.8.0_66版 ...
- Tomcat安装、配置和部署笔记
首先从Apache的官方网站(http://tomcat.apache.org/)下载Tomcat.有安装版和解压版两种,我个人喜欢用解压版. Tomcat安装(绿色版安装) 1.将下载的Tomcat ...
- Tomcat安装、配置和部署
首先从Apache的官方网站(http://tomcat.apache.org/)下载Tomcat.有安装版和解压版两种,本文档介绍绿色版安装方法. 一.Tomcat安装(绿色版安装) 1.将下载的T ...
- ide的tomcat的部署和配置
关于intellij ide的tomcat的部署和配置 1.下载zip版的Tomcat 7,并解压.下载地址 2.在IDEA中配置Tomcat 7 在idea中的Settings(Ctrl+Alt ...
- Tomcat 安装、配置与部署
Tomcat的官方网站:http://tomcat.apache.org/,目前最新版本为7.0. Tomcat下载地址: 1.32位:http://mirrors.tuna.tsinghua.edu ...
- 企业级Tomcat部署配置
1.1 Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人 ...
随机推荐
- CentOS上手工部署kubernetes集群
本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...
- Jenkins权限分配
做完Jenkins安装.项目自动化打包部署后,当然需要对小组成员进行项目权限的分配 1.安装插件:Role-based Authorization Strategy(安装过程就展示了): 2. 插件装 ...
- ContentType组件
django提供的一个快速连表操作的组件 适用于:一个字段确定不了唯一: 如:pricepolicy表中,course_id和content_type中对应的课程类型id才能确定唯一: model.p ...
- golang cronexpr定时任务包使用
包获取 go get -u github.com/gorhill/cronexpr 创建一个定时任务 expr, err = cron.Parse("* * * * *"); 获得 ...
- 细说java系统之动态代理
代理模式 在深入学习动态代理之前,需要先掌握代理模式.只有深刻理解了代理模式的应用,才能充分理解Java动态代理带来的便利. 在生活中存在许多使用"代理模式"的场景,比如:村里的张 ...
- 三十八、Linux 线程——线程属性初始化、销毁、设置和获得分离属性
38.1 线程属性初始化和销毁 #include <pthread.h> int pthread_attr_init(pthread_attr_t *attr); int pthread_ ...
- 十一、移植优化---CONFIG 优化进 menuconfig(1)
在移植 JZ2440 中,include/configs/jz2440.h 中有很多config 项都是已经在 uboot 的主配置中已经存在了的,这些配置造成了重复,需要优化. 先将原先的 smdk ...
- JS基础题
1.三目运算符(三元条件语句)的使用方法? 条件表达式?true表达式:false表达式 2.JS数据中哪些属于引用类型? 数组.对象 引用类型变量,变量名所储存的不是变量值,而是变量所在的地址. 3 ...
- pyqt5-QWidget坐标系统和大小
获取坐标和尺寸: 坐标的获取视频教程:https://v.qq.com/x/page/t085892mzh9.html x() y() 返回控件的坐标 相对于父控件的坐标(窗口框架左上角) ...
- [MVC框架]利用@Scheduled注解创建定时执行的程序
新写的项目中有一个地方要用到定时器,然后就用了spring的@Scheduled注解,顺手就给记录下来了,免得下次用的时候还要翻以前的项目,顺便分享出来,给没用过的兄弟姐妹们做个参考. 这次主要用的是 ...