• Linux安装Tomcat


    linux安装tomcat之前,先使用命令java -version查看java版本,因为有些linux已经默认安装了Open JDK,如果没有出现java相关信息,则不用管了,如果出现,我们需要替换掉默认安装的JDK;

    卸载
    1、卸载用 bin文件安装的JDK方法:
         删除/usr/java目录下的所有东西
    2、卸载系统自带的jdk版本方法:
    查看自带的jdk:
    #rpm -qa | grep jdk
    #rpm -qa | grep gcj

      查看并删除

     #rpm -qa|grep jdk


    看到如下信息: libgcj-4.1.2-44.el5 java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 使用rpm -e --nodeps 命令删除上面查找的内容: #rpm -e –nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
    3、卸载rpm安装的jkd版本
    查看安装的jdk:
    #rpm -qa|grep jdk
    看到如下信息:
    java-1.6.0-openjdk-1.6.0.0-0.25.b09.el5
    jdk-1.6.0_16-fcs
    卸载:
    #rpm -e --nodeps jdk-1.6.0_16-fcs

    卸载完jdk之后,再使用命令java -version无信息,后提示找不到命令说明卸载完成!

    将自己下载的Oracle jdk上传到linux上,tar zxvf  jdk-7u79-linux-x64.gz  解压缩至当前目录

    下载tomcat到linux 同样命令进行解压

    接下来设置环境变量

    vi /etc/profile

    JAVA_HOME=/rommr/jdk1.6.0_45
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    CATALINA_HOME=/rommr/tomcat7 #其他的是jdk配置 重要的就是这点
    export JAVA_HOME CATALINA_HOME #这点ok
    export PATH
    export CLASSPATH

    以上配置完后执行: source /etc/profile 配置文件生效

    下面这几步比较重要,因为在许多linux系统中都预装了openjdk,所以即使上面进行了这些设置,系统默认的还不是我们要设置的内容;如果要真正使用我们自己的jdk,还需要一下步骤:
    
    sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_67-cloudera/bin/java 300   
    
    sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_67-cloudera/bin/javac 300

      以上代码是为了成功替换linux自带的jdk,执行完成之后使用命令java -version出现jdk版本,说明替换jdk成功 (这里的300只是标识一下,没什么意义,只是下一步要用到)  红色部分自行修改目录(你安装JDK的目录)

    以上都配置正确,则进入tomcat bin目录

    vi catalina.sh

    查找:OS specific support.  $var _must_ be set to either true or false

    然后添加以下内容:

    CATALINA_HOME=/usr/local/apache-tomcat-6.0.30/

    红色部分为你的tomcat目录

    接着设置权限   chmod +x *.sh

    启动tomcat  :   ./startup.sh

    查看tomcat是否启动成功

    如果出现如下错误信息

    表示tomcat找不到jdk或者jre路径。

    因为启动tomcat会调用tomcat安装文件中的startup.sh,而它调用了catalina.sh则调用了setclasspath.sh。因此需要在setclasspath.sh开头手动声明环境变量。

    具体路径根据自己的实际情况来配置,再次启动如果没有什么问题的话

    进入tomcat log目录,查看catalina.out内容看有无报错,报错说明启动失败;

    或者命令 ps -ef|grep tomcat 

    如果仅仅出现一行信息:如

    root     29124 27221  0 13:29 pts/0    00:00:00 grep tomcat

    说明启动失败,查看日志,查找问题出现在哪里。

    如果出现如下信息说明启动成功

    root     28926     1  1 13:03 pts/0    00:00:16 /usr/local/jdk1.7/bin/java -Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/usr/local/tomcat7/endorsed -classpath /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat7 -Dcatalina.home=/usr/local/tomcat7 -Djava.io.tmpdir=/usr/local/tomcat7/temp org.apache.catalina.startup.Bootstrap start
    root     29124 27221  0 13:29 pts/0    00:00:00 grep tomcat

    根据进程查看端口号

    sudo netstat -naop | grep 28926

    这是查看pid为2896的进程占用的端口号

    [root@instance_4dbde0 bin]# sudo netstat -naop | grep 28926
    tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      28926/java          off (0.00/0/0)
    tcp        0      0 :::8009                     :::*                        LISTEN      28926/java          off (0.00/0/0)
    tcp        0      0 :::8080                     :::*                        LISTEN      28926/java          off (0.00/0/0)
    unix  2      [ ]         STREAM     CONNECTED     189798 28926/java 

    可以看到8009和8088端口号被占用,其中8009是tomact Server的SHUTDOWN的端口号,8080是tomcat的CATALINA Service的Connector的端口号。

     根据端口号查看进程

    sudo lsof -i:8088

    [root@instance_4dbde0 bin]# sudo lsof -i:8080
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    java    28926 root   42u  IPv6 189800      0t0  TCP *:webcache (LISTEN)

    可以查看到占用端口号的进程

    根据进程号杀死进程

    kill -9 14177

    杀死进程号为14177的tomcat进程

    启动tomcat完成后,输入linux服务器的ip加端口号,看能否打开默认的tomcat管理页,如果不能打开,有可能是linux防火墙打开了

    查看防火墙配置(需要root权限)

    [root@localhost ~]# service iptables status  
    Table: filter
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

    关闭防火墙(需要root权限)

    [root@instance_4dbde0 bin]# service iptables stop
    iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
    iptables: Flushing firewall rules:                         [  OK  ]
    iptables: Unloading modules:                               [  OK  ]

    再次输入地址,即可打开tomcat默认管理页(这种方式关闭防火墙只是临时关闭,重启后防火墙还会继续开启)

    永久关闭防火墙,重启后不开启

    [root@instance_4dbde0 bin]# chkconfig iptables off

    centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可: 

    [root@instance_290388 bin]# service firewalld stop
    Redirecting to /bin/systemctl stop  firewalld.service

    将自己的java项目,打成war包,maven项目使用命令 mvn clean install得到war包,

    将该war包上传到linux下tomcat下wapapps目录下;重启tomcat

    [root@instance_4dbde0 bin]# ./startup.sh 
    Using CATALINA_BASE:   /usr/local/tomcat7
    Using CATALINA_HOME:   /usr/local/tomcat7
    Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
    Using JRE_HOME:        /usr/local/jdk1.7
    Using CLASSPATH:       /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar

    然后,输入ip端口号加上斜杠项目名 如  http://111.111.111.111:8080/demo

    即可访问项目;

    如果需要使用默认端口,如80或者其他端口

    进入tomcat conf目录修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效.

       # vi /usr/local/tomcat/server/conf/server.xml
       <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 

    如果想直接同ip访问项目,则进入tomcat conf目录修改conf目录下的文件server.xml

    1、在tomcat的server.xml中将端口改成80
    <Connector port="80" protocol="HTTP/1.1"   maxThreads="600"        minSpareThreads="100"   maxSpareThreads="500" acceptCount="700"  connectionTimeout="20000" redirectPort="8443" />  

    2、在tomcat的server.xml中在

    <Host name="localhost"  appBase="webapps"  
                unpackWARs="true" autoDeploy="true"  
                xmlValidation="false" xmlNamespaceAware="false">  
      
      </Host>  

    中间加上

    <Context path="" docBase="/user/local/Tomcat7/webapps/Menu" debug="0" reloadable="true" />  
    我的项目都是放在/user/local/Tomcat7/webapps/
    下面的,项目名是Menu,所以只需要把项目的地址放在docBase中就OK了。注意改成自己的目录
     
    此时,即可直接通过ip访问自己的项目了
     
    需要注意的是:
    你按照上面的做了自己的配置,但是使用ip和端口号来访问仍然还是tomcat的管理页面,但是看自己的配置好像又没有问题
    那么这个时候进入 tomcat安装目录下的 conf目录找到web.xml
    编辑web.xml文件
     

    将用红笔标注的部分的值改为true,重启tomcat即可!

    如果还需要使用域名访问,则需要自己在本地机器上配置host,或者通过买域名来实现域名访问。
    每次启动tomcat都需要进入tomcat的目录比较麻烦,有什么比较简便的方式呢?
    首先 
    cd /etc/init.d
    
    vi tomcat.sh

    在改脚本中插入如下代码,注意改成自己的路径

    #!/bin/bash  
    #  
    # tomcat startup script for the Tomcat server  
    #  
    # chkconfig: 345 80 20  
    # description: start the tomcat deamon  
    #  
    # Source function library  
    . /etc/rc.d/init.d/functions
    
    prog=tomcat
    JAVA_HOME=/usr/local/jdk1.8
    export JAVA_HOME  
    CATALINA_HOME=/usr/local/tomcat8
    export CATALINA_HOME  
    
    case "$1" in
    start)
        echo "启动Tomcat..."  
        $CATALINA_HOME/bin/startup.sh
        ;;
    
    stop)
        echo "关闭Tomcat..."  
        $CATALINA_HOME/bin/shutdown.sh
        ;;
    
    restart)
        echo "重启Tomcat,正在关闭..."  
        $CATALINA_HOME/bin/shutdown.sh
        sleep 2
        echo  
        echo "重启 Tomcat,正在启动..."  
        $CATALINA_HOME/bin/startup.sh
        ;;
    
    log)
        echo "查看Tomcat启动日志..."
        tail -f $CATALINA_HOME/logs/catalina.out
        ;;

      status)
          status=$(ps -ef|grep -w tomcat|grep -v $0 | grep -v grep|awk '{print $2}')
           if [ "$status" = "" ];
               then
          echo "tomcat未运行"
         else
          echo "tomcat正在运行"
          echo "$status"
       fi
     ;;

    *)
        echo "Usage: $prog {start|stop|restart|log}"  
        ;;
    esac
    exit 0

    红色部分,改成自己的路径,使用命令

    chmod 777 tomcat7.sh

      使其变成可执行文件

    这个时候,在当前路径 /etc/init.d下执行

    ./tomcat start

    即可启动tomcat

    同时使用命令:

    启动服务./tomcat.sh start
    
    停止服务./tomcat.sh stop
    
    查看日志:启动服务./tomcat.sh restart

    还有就是可以设置脚本开机自启

    chkconfig tomcat.sh on

    但是使用这个命令还是不太方便,需要找到层层路径,再执行命令

    好的:

    vi /etc/profile
    修改/etc/profile 加入一行:
    export PATH=$PATH:/脚本目录/

    保存,退出后,执行命令

    source profile

    即可在任意目录下使用命令了

    tomcat.sh start
    tomcat.sh stop
    tomcat.sh restart

    查看tomcat日志

    1、先切换到:cd usr/local/tomcat7/logs 

    tail -f catalina.out

    这样运行时就可以实时查看运行日志了;tail是查看命令,-f是倒序看

    Ctrl+c 是退出tail命令。

    安装好tomcat,我们需要登录到tomcat 的web控制台来进行一些操作,这个时候需要设置用户名密码;

    [root@instance_4dbde0 conf]# cd /usr/local/tomcat7/conf/
    [root@instance_4dbde0 conf]# vi tomcat-users.xml 

    找到<tomcat-users></tomcat-users>,删除注释,进行设置用户名密码以及角色

    #例如,要将manager-gui角色添加到名为 tomcat的密码为s3cret的用户,请将以下内容添加到上面列出的配置文件中。
    
    <role rolename =“manager-gui”/>
    <user username =“tomcat”password =“s3cret”roles =“manager-gui”/>
    请注意,对于Tomcat 7以后,使用管理器应用程序所需的角色已从单一管理员角色更改为以下四个角色。您将需要分配您希望访问的功能所需的角色。
    
    manager-gui - 允许访问HTML GUI和状态页面
    manager-script - 允许访问文本界面和状态页面
    manager-jmx - 允许访问JMX代理和状态页面
    管理员状态 - 只允许访问状态页面
    具有manager-gui角色的用户不应被授予manager-script或manager-jmx角色。
    如果通过浏览器访问文本或jmx接口(例如,用于测试,因为这些接口仅用于非人类的工具),则之后必须关闭浏览器以终止会话。

    有时候本地和服务器连接的是同一台数据库,但是会出现本地中文不乱码,而服务器上中文乱码,可以参考这个链接

    http://blog.csdn.net/lengjinghk/article/details/51938644

     需要注意的是:即使配置了tomcat-users.xml 打开tomcat管理页面也有可能出现403无权限:

    解决方法:

    root@ubuntu:/usr/local/tomcat8/conf/Catalina/localhost# pwd
    /usr/local/tomcat8/conf/Catalina/localhost
    #如果没有manager.xml配置文件,则新建
    root@ubuntu:/usr/local/tomcat8/conf/Catalina/localhost# ls
    manager.xml
    root@ubuntu:/usr/local/tomcat8/conf/Catalina/localhost# vi manager.xml

    编辑manager.xml配置文件,将内容替换成下面的代码,如需重启tomcat即可访问tomcat管理页面

    <Context privileged="true" antiResourceLocking="false"
             docBase="${catalina.home}/webapps/manager">
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
    </Context>
    

      

    Linux配置多台Tomcat

    有时候需要在一台机器上配多个Tomcat,例如安装jenkins,要求容器内不能有其他应用,这个时候就要安装两个tomcat了

    首先:第一个安装的Tomcat不用管它,主要修改第二个tomcat

    首先将第二个tomcat解压到一个文件夹,重命名如:tomcat7_2

    使用命令,修改配置文件

    [root@instance_4dbde0 webapps]# vi /etc/profile

     修改如下

     

    执行命令

    #使环境变量立即生效
    [root@instance_4dbde0 webapps]# source /etc/profile

    进入第二台tomcat的目录进行修改

    #进行端口修改
    [root@instance_4dbde0 webapps]# cd /usr/local/tomcat7_2/conf/server.xml
    

    修改server.xml配置和第一个不同的启动、关闭监听端口

    接受服务器关闭指令的端口号,我们叫关闭指令端口

    <Server port="8005" shutdown="SHUTDOWN">    把端口改为9005

    http请求处理端口,我们在网页上输入的普通url地址包含的端口就是他 .这个端口叫http端口

    <Connector port="8080"  protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" />  把8080端口改为8384

    https请求的处理端口.这个端口叫https端口

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />  把8080端口改为8283(如果不用Https的话,可以不用改)

    接收AJP协议的处理端口.这个端口叫ajp端口

    <Connector  port="8009" protocol="AJP/1.3" redirectPort="8443" /> 把8009端口改为9009

    修改之后进行保存;

    命令:

    [root@instance_4dbde0 webapps]# vi /usr/local/tomcat7_2/bin/catalina.sh 

    打开catalina.sh ,tomcat/bin/找到下面黄字,在下面增加如下代码

    # OS specific support.  $var _must_ be set to either true or false.
    # myself : add
    export CATALINA_BASE=$CATALINA_BASE_2
    export CATALINA_HOME=$CATALINA_HOME_2

    接着命令

    [root@instance_4dbde0 webapps]# vi /usr/local/tomcat7_2/bin/startup.sh 

    在文件末尾追加以下内容

    export JAVA_HOME=/usr/local/jdk1.7
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin
    export CATALINA_HOME=$CATALINA_HOME_2
    export CATALINA_BASE=$CATALINA_BASE_2

    同时对当前目录下的shutdown.sh做同样处理

    处理完成后执行命令

    #对文件进行赋予权限
    [root@instance_4dbde0 bin]# pwd
    /usr/local/tomcat7_2/bin
    [root@instance_4dbde0 bin]# chmod +x *.sh

    之后进入bin目录,启动Tomcat即可,注意访问时端口号是你改的端口号

    [root@instance_4dbde0 bin]# cd /usr/local/tomcat7_2/bin/
    [root@instance_4dbde0 bin]# ./startup.sh 
    Using CATALINA_BASE:   /usr/local/tomcat7_2
    Using CATALINA_HOME:   /usr/local/tomcat7
    Using CATALINA_TMPDIR: /usr/local/tomcat7_2/temp
    Using JRE_HOME:        /usr/local/jdk1.7
    Using CLASSPATH:       /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7_2/bin/tomcat-juli.jar
    Tomcat started.
    [root@instance_4dbde0 bin]# 

     为Tomcat指定JDK

     有时候会遇到一个问题需要为Tomcat指定一个JDK版本,我就遇到了这样一个情况,有一个别人写的项目,只能用JDK8的环境(用jdk1.7无法运行),但是我原有tomcat用的是JDK1.7,如果都换成jdk8的话,那原有项目就不能用了,

    解决方案:

    1.下载JDK1.8 进行解压缩
    2.复制原有的tomcat,再保存一份,起个别名,我这里直接下载了tomcat8
    3.我把工具都放在了/usr/local/ 路径下
    

      

     可以看到了我现在的目录结构了。

    默认的话,如果你配置了jdk tomcat环境变量,那么你启动tomcat的时候是会去读取你的环境变量的,那么现在使用命令

    [root@instance_290388 bin]# vi /usr/local/tomcat8/bin/catalina.sh 

    找到 OS specific support.  $var _must_ be set to either true or false.

    添加如下代码

    方框框选的就是,你新下载的JDK和新的tomcat,我在这里是写死的,当然你也可以把新安装的JDK,tomcat加入环境变量,然后这边直接引用变量就行了,

    好了,下载启动tomcat8

    可以看到,启动的jdk版本是1.8,使用的tomcat是8,解决问题。

    为了更有说服力,我们启动tomcat7,注意端口冲突

    可以看到,他读取了环境变量中配置的tomcat和jdk,所以启动的是1.7的jdk和tomcat7!

    最后注意改tomcat8 的端口号,就可以在不影响原项目的基础上运行新项目了。

     

    使用Xshell连接Linux时,传文件一般使用xftp,如果没有该工具,则安装lrzsz包安装完成后包括上传rz、下载sz命令;只需要安装这个包即可。那么使用命令安装

    yum install -y lrzsz

     从Windows上传文件,上传命令为rz;在Linux命令行下输入rz,上传的文件在当前命令行的目录下;

    输入rz命令后,会弹出对话框,选择你要上传的文件,选择打开就上传到Linux主机。上传完可以使用ls 查看;

    从Linux主机下载文件,下载命令为sz ,后面跟要下载的文件名;可以选择下载的保存文件夹;

    此方法相对来说比较简单快捷,可以满足日常需要

    
    
  • 相关阅读:
    Android Xmpp协议讲解
    IOS 教程以及基础知识
    android的快速开发框架集合
    Android项目快速开发框架探索(Mysql + OrmLite + Hessian + Sqlite)
    afinal logoAndroid的快速开发框架 afinal
    Android 快速开发框架:ThinkAndroid
    2020.12.19,函数式接口,函数式编程,常用函数式接口,Stream流
    2020.12.18 网络编程基础,网络编程三要素,TCP通信,Socket类,ServerSocket
    2020.12.16,Properties,Buffer,InputStreamReader
    2020.12.15 IO流,字节流,字符流,流异常处理
  • 原文地址:https://www.cnblogs.com/kanyun/p/8057181.html
Copyright © 2020-2023  润新知