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进阶操作的更多相关文章

  1. [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组

    1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...

  2. Django中的ORM进阶操作

    Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. ...

  3. Django之Models进阶操作(字段属性)

    字段属性详细介绍 一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列, ...

  4. 第11章:sed进阶操作

    第11章:sed进阶操作 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为 ...

  5. 第10章:awk进阶操作

    第10章:awk进阶操作 在第4章:查找与替换简单的讲解了awk的使用,本章介绍详细讲解awk的使用.awk是一个强大的文本分析工具,简单的说awk就是把文件逐行的读入, 以空格为默认分隔符将每行切片 ...

  6. Linux下tomcat相关操作

    tomcat安装: 直接到官网下载tar包解压即可. tomcat相关操作: 首先,进入Tomcat下的bin目录,例如:cd /usr/tomcat/bin 启动Tomcat:./startup.s ...

  7. [学习笔记]LCT进阶操作

    LCT总结——应用篇(附题单)(LCT) 一般都是维护链的操作.split即可搞定. 进阶操作的话,处理好辅助树和原树的关系即可搞定. 其实,最大的区别就是,splay随便转,辅助树形态变了,但是原树 ...

  8. Django 之models进阶操作

    到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 ...

  9. LINUX上安装JDK+tomcat+mysql操作笔记

    1.环境准备: 1-1.centos 64位(本人的虚拟机安装此系统),安装步骤和网络配置已经在前两篇记录. 1-2.JDK 版本1.8 1-3.tomcat压缩包 1-4.CRT远程连接工具(可用其 ...

随机推荐

  1. Linux管道符、重定向与环境变量

    ——<Linux就该这么学>笔记 输入输出重定向输入重定向 指把文件导入到命令中输出重定向 指把原本要输出到屏幕的数据信息写入到指定文件中 输出重定向 分为标准输出重定向和错误输出重定向 ...

  2. java.lang.NumberFormatException: multiple points 异常

    平时使用SimpleDateFormat的时候都是在单线程的情况下使用的,今天在改写别人的代码,发现每个类中都会写大量的SimpleDateFormat实例.作为一个程序特有的洁癖开始对代码进行优化. ...

  3. java使用maven项目(二)分模块开发

    1       整合ssh框架 1.1     依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 1.2     依赖版本冲突的解决 1.  第 ...

  4. 定义表单控件的id和name注意点

    最近在学习JavaScript,在编写一个demo时出现一个错误.为表单中的提交按钮控件定义的id属性值为submit,致使程序出错.如下代码:(js代码省略) <form method=&qu ...

  5. hdu 1115(多边形重心问题)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. AC日记——[ZJOI2007]报表统计 bzoj 1058

    1058 思路: 平衡树的题: 然而我的平衡树写一次炸一次QwQ: 而且各种tle: 所以stl水过: 代码: #include <set> #include <cstdio> ...

  7. python strip_tags 支持保留指定标签

    #coding:utf-8 import re def strip_tags(string, allowed_tags=''): if allowed_tags != '': # Get a list ...

  8. thinkphp实现功能:验证码

    1.定义验证码函数 public function verify(){ /** * 在thinkPHP中如何实现验证码 * * ThinkPHP已经为我们提供了图像处理的类库ThinkPHP\Exte ...

  9. 福州三中集训day3

    Day3数据结构,强无敌. 基本讲的是栈,队列,链表,都是些还会的操作,然后接着讲的就比较心凉凉了,先讲了堆,然后是hsah 栈,队列,链表问题都不大,笔记记得都还好,堆就凉凉了. 不会不会不会,没学 ...

  10. 推荐下载CentOS下各种组件的网址

    http://vault.centos.org/ ftp://mirrors.sohu.com/ http://mirror.webtatic.com/