tomcat进阶操作
1、使用war包部署web站点
[root@tomcat webapps]# pwd
/application/tomcat/webapps
[root@tomcat webapps]# rz #上传memtest.war,上传的是网上下载编译好的java项目
[root@tomcat webapps]# ls #等待一会儿就会解压war包
docs examples host-manager manager memtest memtest.war ROOT
浏览器访问http://10.0.0.7:8080/memtest
2、tomcat auth basic认证的实现
为站点的某个路径配置认证
2.1 修改tomcat的conf目录下的tomcat-users.xml文件
添加角色用户名和密码
[root@tomcat ~]# vim /application/tomcat/conf/tomcat-users.xml
…………
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users> #→在此行前加入上面三行
2.2 修改myapp/WEB-INF/web.xml文件
这个文件的内容可以效仿系统自带的manager页面认证的配置文件/application/tomcat/webapps/manager/WEB-INF/web.xml进行配置
[root@tomcat jpress]# vim WEB-INF/web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>HTML Manager interface (for humans)</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Jpress admin</realm-name>
</login-config>
[root@tomcat jpress]# /application/tomcat/bin/shutdown.sh #重启tomcat
[root@tomcat jpress]# /application/tomcat/bin/startup.sh
访问网站admin路径时就需要认证
3、自定义默认网站目录
[root@tomcat ~]# vim /application/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
[root@tomcat ~]# /application/tomcat/bin/shutdown.sh #重启tomcat
[root@tomcat ~]# /application/tomcat/bin/startup.sh
访问http://10.0.0.7:8080即可访问到网站
4、tomcat多实例及集群架构
4.1 tomcat多实例
4.1.1 复制tomcat目录
[root@tomcat ~]# cd /application/
[root@tomcat application]# cp -a apache-tomcat-8.0.27 tomcat8_1
[root@tomcat application]# cp -a apache-tomcat-8.0.27 tomcat8_2
4.1.2 修改配置文件
[root@tomcat application]# mkdir -p /data/www/www/ROOT
[root@tomcat application]# cp /application/tomcat/webapps/memtest/meminfo.jsp /data/www/www/ROOT/
[root@tomcat ~]# sed -i '22s#8005#8011#;69s#8080#8081#;123s#appBase=".*"# appBase="/data/www/www"#' /application/tomcat8_1/conf/server.xml
[root@tomcat ~]# sed -i '22s#8005#8012#;69s#8080#8082#;123s#appBase=".*"# appBase="/data/www/www"#' /application/tomcat8_2/conf/server.xml
[root@tomcat ~]# diff /application/tomcat/conf/server.xml /application/tomcat8_1/conf/server.xml
22c22
< <Server port="8005" shutdown="SHUTDOWN">
---
> <Server port="8011" shutdown="SHUTDOWN">
69c69
< <Connector port="8080" protocol="HTTP/1.1"
---
> <Connector port="8081" protocol="HTTP/1.1"
123c123
< <Host name="localhost" appBase="/application/tomcat/webapps/memtest"
---
> <Host name="localhost" appBase="/data/www/www"
[root@tomcat ~]# diff /application/tomcat/conf/server.xml /application/tomcat8_2/conf/server.xml
22c22
< <Server port="8005" shutdown="SHUTDOWN">
---
> <Server port="8012" shutdown="SHUTDOWN">
69c69
< <Connector port="8080" protocol="HTTP/1.1"
---
> <Connector port="8082" protocol="HTTP/1.1"
123c123
< <Host name="localhost" appBase="/application/tomcat/webapps/memtest"
---
> <Host name="localhost" appBase="/data/www/www"
4.1.3 启动多实例
for i in {1..2};do /application/tomcat8_$i/bin/startup.sh;done
netstat -tunlp|grep java
4.2 tomcat集群
使用nginx+tomcat反向代理集群
[root@tomcat ~]# vim /application/nginx/conf/nginx.conf
upstream web_pools {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.jsp index.html index.htm;
proxy_pass http://web_pools;
}
}
[root@tomcat ~]# /application/nginx/sbin/nginx -t
[root@tomcat ~]# /application/nginx/sbin/nginx
浏览器直接访问ip地址即可访问到网站
5、tomcat优化
5.1 安全优化
降权启动
telnet管理端口保护
ajp连接端口保护
禁用管理端
5.2 性能优化
5.2.1 屏蔽dns查询enableLookups="false"
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="6000" enableLookups="false" acceptCount="800"
redirectPort="8443" />
5.2.2 jvm调优
Tomcat较耗内存,如果系统资源有限,那就需要进行调优,提高资源使用率
1、增加最大连接数
2、调整工作模式
3、启用gzip压缩
4、调整JVM内存大小
5、作为Web时,动静分离
6、合理选择垃圾回收算法
7、尽量使用较新JDK版本
优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始堆内存Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:初始堆内存heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
-Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss:每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:+UseParNewGC :缩短minor收集的时间
-XX:+UseConcMarkSweepGC :缩短major收集的时间
参考来源:http://blog.oldboyedu.com/java-tomcat/
Tomcat性能调优及JVM内存工作原理可参考:
https://mp.weixin.qq.com/s/SMleZksgillAEA1xYHQn5g
tomcat进阶操作的更多相关文章
- [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组
1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...
- Django中的ORM进阶操作
Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. ...
- Django之Models进阶操作(字段属性)
字段属性详细介绍 一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列, ...
- 第11章:sed进阶操作
第11章:sed进阶操作 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为 ...
- 第10章:awk进阶操作
第10章:awk进阶操作 在第4章:查找与替换简单的讲解了awk的使用,本章介绍详细讲解awk的使用.awk是一个强大的文本分析工具,简单的说awk就是把文件逐行的读入, 以空格为默认分隔符将每行切片 ...
- Linux下tomcat相关操作
tomcat安装: 直接到官网下载tar包解压即可. tomcat相关操作: 首先,进入Tomcat下的bin目录,例如:cd /usr/tomcat/bin 启动Tomcat:./startup.s ...
- [学习笔记]LCT进阶操作
LCT总结——应用篇(附题单)(LCT) 一般都是维护链的操作.split即可搞定. 进阶操作的话,处理好辅助树和原树的关系即可搞定. 其实,最大的区别就是,splay随便转,辅助树形态变了,但是原树 ...
- Django 之models进阶操作
到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 ...
- LINUX上安装JDK+tomcat+mysql操作笔记
1.环境准备: 1-1.centos 64位(本人的虚拟机安装此系统),安装步骤和网络配置已经在前两篇记录. 1-2.JDK 版本1.8 1-3.tomcat压缩包 1-4.CRT远程连接工具(可用其 ...
随机推荐
- 怎么重启shell ubuntu
sunosfind . -type f | xargs grep count 怎么重启shell ubuntu方法一:退出,重新登录方法二:source /etc/profile
- ios iphone ipad上iframe的宽度会扩大的解决办法
这个问题,我从网上查了下,好像是属于ios的bug,android,windows都没有问题. 解决办法,就是在iframe加载完成后,设置 iframe里面body的宽度为多少PX. $(" ...
- django定义模型类
模型类被定义在应用文件夹下的model.py中 模型类必须继承Django的models.Model类 属性名不能用连续的两条下划线__ 主键:primary key,简写 pk 不需要主动定义,dj ...
- MYSQL数据库的数据完整性
#转载请联系 数据库中存储的数据应该符合我们的预期, 这就是数据完整性. 那么如何实现数据完整性? 我们通过以下两方面来实现数据的完整性: 数据类型: 存储在数据库中的所有数据值均正确的状态.如果数据 ...
- 在Js或者cess后加版本号 防止浏览器缓存
在Js或者cess后加版本号 防止浏览器缓存 客户端浏览器会缓存css或js文件,从而减少加载次数,减少流量,提高网页的访问速度.为了使得每次修改js或者css能生效,可以通过改变版本号来使得客户端浏 ...
- 解决Composer 使用时要求输入授权用户名密码问题
使用Composer下载第三方包时出现: Authentication required (packagist.phpcomposer.com): Username: 解决方法: 1.修改源 comp ...
- 《Java并发编程实战》学习笔记
第2章 线程安全性 正确性: 某个类的行为与其规范完全一致. 2.1线程安全: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或 ...
- ubantu16.04安装配置samba服务(原创)
1.安装samba服务 $ sudo apt-get install samba samba-common$ sudo apt-get install smbclient 如果你开启了防火墙,关闭: ...
- linux ssh 登录服务器失败,密码明明没错【解决】
本来这样登录的: $ ssh 123.123.123.123 //ssh + IP 然后输入密码就是登录不了,显示permision denied 后来使用如下方式登录,成功! $ ssh -v us ...
- HDU 1285 确定比赛名次【字典序最小的拓扑排序 + 优先队列】
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...