JAVA-Tomcat

安装环境

软件准备:java环境,tomcat下载
JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Tomcat下载:http://tomcat.apache.org/

01tomcat.png-6.1kB

#####   安装java   #####
#jdk解压,二进制包,不用编译,软件接是因为名字太长了
[root@moban6 ~]# tar xf jdk-8u60-linux-x64.tar.gz -C /usr/local/
[root@moban6 ~]# ln -s /usr/local/jdk1.8.0_60 /usr/local/jdk

#配置java环境变量(必须要有,否则启动tomcat找不到的)
[root@moban6 ~]# sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JIAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
[root@moban6 ~]# tail -3 /etc/profile
export JAVA_HOME=/usr/local/jdk  #java装在哪了
export PATH=$JIAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH  #添加环境变量
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
#立刻生效
[root@moban6 ~]# source /etc/profile
#看版本号
[root@moban6 ~]# which java
/usr/local/jdk/jre/bin/java
[root@moban6 ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

#####   安装tomcat   #####
#直接解压,无编译安装
[root@moban6 ~]# tar xf apache-tomcat-8.0.27.tar.gz -C /usr/local/
[root@moban6 ~]# ln -s /usr/local/apache-tomcat-8.0.27/ /usr/local/tomcat

#配置tomcat环境变量

[root@moban6 ~]# echo 'export TOMCAT_HOME=/usr/local/tomcat' >> /etc/profile
[root@moban6 ~]# source /etc/profile

Tomcat 目录介绍

[root@moban6 ~]# cd /usr/local/tomcat/
# -L 1 :只显示第一级目录(L和数字之间有空格)
[root@moban6 tomcat]# tree -L 1
.
├── bin              #命令
├── conf             #配置文件
├── lib              #存放Web应用能访问的JAR包
├── LICENSE
├── logs             #日志
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp             #临时目录
├── webapps          #网页目录
└── work             #用以产生有JSP编译出的servelet的.java和.class文件

7 directories, 4 files

#里面的文件有漏洞,工作中我们自己写
[root@moban6 tomcat]# ll webapps/
total 20
drwxr-xr-x. 14 root root 4096 Apr 28 20:11 docs         #tomcat帮助文档
drwxr-xr-x.  6 root root 4096 Apr 28 20:11 examples     #web应用实例
drwxr-xr-x.  5 root root 4096 Apr 28 20:11 host-manager #管理
drwxr-xr-x.  5 root root 4096 Apr 28 20:11 manager      #管理
drwxr-xr-x.  3 root root 4096 Apr 28 20:11 ROOT         #默认网站的根目录

启动Tomcat

启动程序:/usr/local/tomcat/bin/startup.sh
关闭程序:/usr/local/tomcat/bin/shutdown.sh

[root@moban6 tomcat]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat       #Using都是在检查环境变量
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
#默认监听端口8080
[root@moban6 tomcat]# ss -antup| grep 8080   
tcp    LISTEN     0      100                   :::8080                 :::*      users:(("java",1122,46))

# 然后直接去网页输入当前的服务器的  IP:8080 就能看到了(不用映射)

02tomcat.png-136.2kB

tomcat 配置文件

#tomcat格式文件是以.xml的
[root@moban6 tomcat]# cd /usr/local/tomcat/conf/
root@moban6 conf]# ll -h
total 216K
drwxr-xr-x. 3 root root 4.0K Apr 28 20:33 Catalina
-rw-------. 1 root root  13K Sep 28  2015 catalina.policy
-rw-------. 1 root root 7.0K Sep 28  2015 catalina.properties
-rw-------. 1 root root 1.6K Sep 28  2015 context.xml
-rw-------. 1 root root 3.4K Sep 28  2015 logging.properties
-rw-------. 1 root root 6.4K Sep 28  2015 server.xml         #主配置文件
-rw-------. 1 root root 1.8K Sep 28  2015 tomcat-users.xml   #管理用户的配置文件
-rw-------. 1 root root 1.9K Sep 28  2015 tomcat-users.xsd 
-rw-------. 1 root root 164K Sep 28  2015 web.xml

测试功能。生产环境不要用

Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用惊醒管理的Web应用。在默认情况下是处于禁用状态的,如果需要开启这个功能,就需要配置配置管理用户,即tomcat-users.xml
[root@moban6 conf]# cat -n /usr/local/tomcat/conf/tomcat-users.xml |sed -n '39p'
    39	</tomcat-users>
#在其上加入三行代码
[root@moban6 ~]# sed -i '39i <role rolename="manager-gui"/>\n<role rolename="admin-gui"/>\n<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>' /usr/local/tomcat/conf/tomcat-users.xml

[root@moban6 ~]# cat -n /usr/local/tomcat/conf/tomcat-users.xml | tail -5 
    38	-->
    39	<role rolename="manager-gui"/>
    40	<role rolename="admin-gui"/>
    41	<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
    42	</tomcat-users>
[root@moban6 ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@moban6 ~]# /usr/local/tomcat/bin/startup.sh

03tomcat.png-55.5kB

tmocat主配置文件Serer.xml 详解

Server.xml组件类别

  • 顶级组件:位于整个配置文件的顶层,如server
  • 容器类组件:可以包含其他组件的组件,如service,engine,host,context
  • 连接器组件:连接用户请求至tomcat。如connector
  • 被嵌套类组件:位于一个容器当中,不能包含其他组件,如Valve,logger

04tomcat.png-82.4kB

组件详解

  • engine核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host
  • host:类似于httpd中的虚拟主机,一般而言支持基于FQDN的虚拟主机
  • context:定义一个应用程序,是一个最内层的容器类组件(不能再嵌套),配置context的主要目的指定对应对的webapp的根目录,类似于httpd的alias。其还能为webapp指定额外的属性,如部署方式等
  • connextor:接收用户请求,类似于httpd的listen配置监听端口
  • service(服务):将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine,service内部有两个connector,一个engine,因此,一般情况下一个sever内部只有一个service,一个service内部只有一个engine,但一个service内部可以有多个connector
  • server:表示一个云从于JVM中的tomcat实例
  • Valve:阀门,拦截请求并再将其转至对应的webapp前进行魔种处理操作,可以用于任何容器中,比如记录日志(access log value),基于IP做访问控制(remote address filer valve)
  • logger:日志记录器,用于记录组件内部的状态信息,可以用于除context外的任何容器中
  • realm:可以用于任何容器类的组件中,关联一个用户认证库,实现认证和授权。可以关联的认证库有两种:UserDatabaseRealm,MemoryRealm和JDBCRealm
  • UserDatebaseRealm:使用JNDI自定义的用户认证库
  • MemoryRealm:认证信息定义在tomcat-users.xml中
  • JDBCRealm:认证信息定义在数据库中,并通过JDBC连接至数据库中查找认证用户。

tomcat主配置文件

[root@moban6 ~]# vim /usr/local/tomcat/conf/server.xml 
  1 <?xml version='1.0' encoding='utf-8'?>     #版本,支持格式
 22 <Server port="8005" shutdown="SHUTDOWN">   #如果向8005发送(远程也行)关闭请求,就关了tomcat服务了
#telnet 127.0.0.1 8005 登陆进去了,然后输入大写SHUTDOWN 回车,就关闭了tomcat服务
#所以 这个端口需要修改
 53   <Service name="Catalina">
 69     <Connector port="8080" protocol="HTTP/1.1"
 91     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #AJP协议
#直接注释掉91行 tomcat注释:"<!-- -->"这是一对 改为如下
#91 <!--    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
103     <Engine name="Catalina" defaultHost="localhost"> #defaultHost 默认域名
#103     <Engine name="Catalina" defaultHost="www.yunjisuan.com">
123       <Host name="localhost"  appBase="webapps"  #根目录 webapps
#123       <Host name="www.yunjisuan.com"  appBase="webapps"
124             unpackWARs="true" autoDeploy="true"> #是否自动解压war包

05tomcat.png-128.9kB
06tomcat.png-217.1kB
07tomcat.png-163.9kB
08tomcat.png-167.8kB
09tomcat.png-53.6kB

WEB站点部署

上线的代码有两种方式
第一种方式是直接将程序目录放在webapps目录下面。
第二种方式是使用开发工具将程序打包成war包,然后上传到webapps目录下面。

10tomcat.png-8.3kB

[root@moban6 ~]# vim /usr/local/tomcat/conf/server.xml 
#修改 91行注释掉,103和123行改域名
91 <!--    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
103     <Engine name="Catalina" defaultHost="www.yunjisuan.com">
123       <Host name="www.yunjisuan.com"  appBase="webapps"

#重启服务 
[root@moban6 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@moban6 ~]# /usr/local/tomcat/bin/startup.sh 

#配置war包
[root@moban6 ~]# ls
apache-maven-3.3.9-bin.tar.gz  jdk-8u60-linux-x64.tar.gz  memtest.war
apache-tomcat-8.0.27.tar.gz    jpress-web-newest.war
[root@moban6 ~]# cd /usr/local/tomcat/webapps/
[root@moban6 webapps]# rm -rf docs/ examples/ host-manager/ manager
[root@moban6 webapps]# rm -rf ROOT/*

#把家目录下的两个包移动过来以后,自动给出一个目录
[root@moban6 webapps]# mv ~/jpress-web-newest.war .
[root@moban6 webapps]# mv ~/memtest.war .
[root@moban6 webapps]# ls
jpress-web-newest  jpress-web-newest.war  memtest.war  ROOT

#但是memtest没有自动给出目录,所以重启服务(自动将war包解压缩,重启后会强制触发自己检查)
[root@moban6 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@moban6 ~]# /usr/local/tomcat/bin/startup.sh 
[root@moban6 webapps]# ls
jpress-web-newest  jpress-web-newest.war  memtest  memtest.war  ROOT

11tomcat.png-36.8kB

现在java的web服务器已经部署好了,但是,显示了子目录,不想显示的话

  • 方法一:将meminfo.jsp或其他程序放到tomcat/webapps/ROOT 目录下即可,因为默认网站根目录为 tomact/webapps/ROOT
  • 方法二:修改配置文件,限定web站点的根目录路径,如下:
[root@moban6 webapps]# vim /usr/local/tomcat/conf/server.xml 
123       <Host name="www.yunjisuan.com"  appBase="webapps"   #这行是本来有的
124             unpackWARs="true" autoDeploy="true">          #这行是本来有的
125          <Context path="" docBase="/usr/local/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true" />                                        #这行是添加的
[root@moban6 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@moban6 ~]# /usr/local/tomcat/bin/startup.sh 

Tomcat多实例

复制Tomcat目录

[root@moban6 webapps]# cd /usr/local/
#cp -a 在保留原文件属性的前提下复制文件 
[root@moban6 local]# cp -a apache-tomcat-8.0.27/ tomcat8_1
[root@moban6 local]# cp -a apache-tomcat-8.0.27/ tomcat8_2

修改多实例配置文件

#创建多实例的网页根目录
[root@moban6 local]# mkdir -p /data/www/www/ROOT
#将网页程序拷贝到多实例根目录ROOT下
[root@moban6 local]# cp /usr/local/tomcat/webapps/memtest/meminfo.jsp /data/www/www/ROOT/
#原多实例配置文件的三行
[root@moban6 local]# cat -n /usr/local/tomcat/conf/server.xml |sed -n '22p;63p;123p'
    22	<Server port="8005" shutdown="SHUTDOWN">       #管理端口及停止命令
    69	    <Connector port="8080" protocol="HTTP/1.1" #对外提供服务的端口
   123	      <Host name="localhost"  appBase="webapps" #网站域名及网页根目录路径

#修改多实例配置文件的以下三行
[root@moban6 local]# vim /usr/local/tomcat8_1/conf/server.xml 
[root@moban6 local]# cat -n /usr/local/tomcat8_1/conf/server.xml |sed -n '22p;69p;123p'
    22	<Server port="8020" shutdown="SHUTDOWN">
    69	    <Connector port="8081" protocol="HTTP/1.1"
   123	      <Host name="www.yunjisuan.com"  appBase="/data/www/www"
#两个多实例目录可以分开
[root@moban6 local]# vim /usr/local/tomcat8_1/conf/server.xml 
[root@moban6 local]# cat -n /usr/local/tomcat8_1/conf/server.xml |sed -n '22p;69p;123p'
    22	<Server port="8030" shutdown="SHUTDOWN">
    69	    <Connector port="8082" protocol="HTTP/1.1"
   123	      <Host name="www.yunjisuan.com"  appBase="/data/www/www" 

#开启多实例
[root@moban6 local]# /usr/local/tomcat8_1/bin/startup.sh 
[root@moban6 local]# /usr/local/tomcat8_2/bin/startup.sh 
[root@moban6 local]# ss -antup| grep java

#访问各自的网页 IP:端口/meminfo.jsp

12tomcat.png-62kB

Tomcat 集群(Nginx + Tomcat反向代理集群)

安装nginx

#gcc gcc-c++ make
mount /dev/sr0 /media/cdrom
yum -y install pcre-devel openssl-devel
cd ~
wget -q http://nginx.org/download/nginx-1.10.2.tar.gz
tar xf nginx-1.10.2.tar.gz -C /usr/src
cd /usr/src/nginx-1.10.2/
useradd -M -s /sbin/nologin nginx
 ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
ln -s /usr/local/nginx/sbin/* /usr/local/sbin
cd /usr/local/nginx/conf/ 
egrep -v "#|^$" nginx.conf.default > nginx.conf 
echo "`hostname -I` www.`hostname`.com" >> /etc/hosts

修改配置文件

worker_processes  1;
events {
    worker_connections  20480;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream tomcat_pools {
     server 127.0.0.1:8081 weight=1;
     server 127.0.0.1:8082 weight=1;
    server {
        listen       80;
        server_name  www.yunjisuan.com;
        location / {
            root   html;
            index  index.jsp index.html index.htm;
            proxy_pass http://tomcat_pools;
        }
    }
}
/usr/local/nginx/sbin/nginx

用Tomcat安装Jpress

Jpress是一个wordpress(PHP博客)的java代替版本,使用JFinal开发,需要maven支持

[root@moban6 ~]# tar xf apache-maven-3.3.9-bin.tar.gz -C /usr/local/
[root@moban6 ~]# ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven
[root@moban6 ~]# sed -i '$a export MAVEN_HOME=/usr/local/maven\nexport PATH=$MAVEN_HOME/bin:/$PATH' /etc/profile
[root@moban6 ~]# source /etc/profile
#出现下面的。表示成功
[root@moban6 ~]# mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_60/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-431.el6.x86_64", arch: "amd64", family: "unix"
#将jpress-web-newest.war包放到tomcat根目录下
[root@moban6 ~]# mv jpress-web-newest.war /data/www/www/ROOT/
[root@moban6 ~]# cd /data/www/www/ROOT/
#jar是war包的解压命令(jdk-8u60-linux-x64.tar.gz),java命令,默认linux里没有
[root@moban6 ROOT]# /usr/local/jdk/bin/jar xf jpress-web-newest.war 
[root@moban6 ROOT]# ls
jpress-web-newest.war  meminfo.jsp  META-INF  robots.txt  static  templates  WEB-INF

浏览器访问 IP:8081/install,然后需要提供MySQL的一些资料,过程和wordpress一样

13tomcat.png-92.6kB

Tomcat 安全优化和性能优化

最在用药的优化如下4项,但并不止这四种

  • 降权启动
  • telnet管理端口保护 (8005修改)
  • ajp连接端口保护 (注释8009的那句)
  • 禁用管理端 (清空他的web)

降权启动:(同Nginx优化部分的监牢模式):

降权原则就是利用普通用户启动Tomcat

  • 将Tomcat程序目录拷贝到普通用户家目录下
  • 修改骄傲目录下程序的配置文件(启动端口,检测端口等),并重新指定网页根目录路径
  • 递归授权拷贝后的Tomcat程序色属主属组为普通用户
  • 用su命令切换为普通用户,启动Tomcat进程
  • 此时Tomcat进程的权限为普通用户
  • 如果利用/etc/rc.local文件配置普通用户程序的开机启动,嘛呢需要利用su -c 临时切换身份启动。

性能优化

屏蔽NDS查询 enableLookups=“false”

#原配置文件内容
[root@moban6 ~]# vim /usr/local/tomcat8_1/conf/server.xml 
 69     <Connector port="8081" protocol="HTTP/1.1"
 70                connectionTimeout="20000"
 71                redirectPort="8443" />
#修改后 70行修改
[root@moban6 ~]# vim /usr/local/tomcat8_1/conf/server.xml 
 69     <Connector port="8081" protocol="HTTP/1.1"
 70              connectionTimeout="20000" enableLookups="false acceptCount="800"
 71                redirectPort="8443" />

jvm调优:tomcat最吃内存,如果系统资源有限,那就要进行调优,提高资源使用率
http:/www.cnblogs.com/xingzc/p/5756119.html

#优化catalina.sh初始化脚本,添加代码,必须在脚本的最开始声明位置。
#默认路径:/usr/loacl/tomcat/bin/catalina.sh
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xmsl024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
#代码说名
server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始堆内存Heap大小,使用的最小内存,cpu性能高时,此值应设的大一些
-Xmx:初始堆内存heap最大值,使用的最大内存
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPweSize:设定的醉倒内存的永久保存区域
-XX:MaxNewSize:
-Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512K
+XX:AggressiveHeap 会使得Xms没有意义,这个参数让jvm忽略Xmx参数,疯狂的吃完一个G物理内存,再吃尽一个G的swep
-Xss:每个线程的Stack的大小
-verbose:gc 现实垃圾收集信息
-Xlogggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:UseParNewGC:缩短minor收集的时间
-XX:UseConcMarkSweepGC:缩短major收集的时间
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值