系统平台: CentOS Linux release 7.4.1708 (Core) 内核 3.10.0-693.el7.x86_64 最小化安装
去oracle官网下载 符合项目需求的 组件 Java SE Development Kit 8u162html
http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz
# cd /usr/local/ # tar xvf jdk-8u162-linux-x64.tar.gz -C /usr/local/ # ln -sv jdk1.8.0_162/ javajdk # vim /etc/profile.d/java.sh export JAVA_HOME=/usr/local/javajdk export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib # source /etc/profile.d/java.sh # java -version java version "1.8.0_162"
https://tomcat.apache.org/java
http://apache.mirrors.pair.com/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7.tar.gz # tar xvf apache-tomcat-9.0.7.tar.gz -C /usr/local/ # cd /usr/local/ # mv apache-tomcat-9.0.7/ tomcat-9.0.7 # ln -sv tomcat-9.0.7/ tomcat
# vim /etc/profile.d/tomcat.sh export CATALINA_BASE=/usr/local/tomcat export PATH=$CATALINA_BASE/bin:$PATH
直接调用$CATALINA_HOME/bin/startup.sh来启动tomcat,调用$CATALINA_HOME/bin/shutdown.sh来关闭tomcatlinux
tomcat 进程是由 root 用户打开并维护的,从安全角度考虑存在缺陷。web
# vim /usr/local/tomcat/bin/catalina.sh 在第二行写入 JAVA_HOME=/usr/local/javajdk CATALINA_BASE=/usr/local/tomcat # echo "/usr/local/tomcat/bin/catalina.sh start" >> /etc/rc.local # chmod +x /etc/rc.local > 这一步很重要
以daemon方式运行tomcat可使tomcat不受终端影响,不会由于退出终端而中止运行。可让tomcat以普通用户身份运行,可让tomcat在系统启动时自动运行。apache
Jsvc是专为Java应用程序开发的一个工具包,其目标是把Java应用程序的普通运行转换为以Unix守护进程的方式运行。这样的话,能够很方便地启动/中止应用程序。vim
在安装tomcat的目录bin/下commons-daemon-native.tar.gz或者http://commons.apache.org/proper/commons-daemon/download_daemon.cgitomcat
# cd /usr/local/tomcat-9.0.7/bin/ # tar xvf commons-daemon-native.tar.gz # cd commons-daemon-1.1.0-native-src/unix/ # ./configure # make # cp jsvc /usr/local/tomcat/bin/
# useradd -r -s /sbin/nologin tomcat # chown -R tomcat /usr/local/tomcat/
catalina.sh在执行的时候会调用同级路径下的setenv.sh来设置额外的环境变量,所以须要在/usr/local/tomcat/bin路径下建立setenv.sh文件,这个文件还能够设置JVM调优参数,是否是很方便安全
# vim /usr/local/tomcat/bin/setenv.sh export JAVA_HOME=/usr/local/javajdk export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$CATALINA_BASE/bin:$PATH export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$CATALINA_BASE/bin:$PATH export CATALINA_HOME=/usr/local/tomcat export CATALINA_BASE=/usr/local/tomcat CATALINA_PID="$CATALINA_BASE/tomcat.pid" JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"
服务脚本服务器
# vim /usr/lib/systemd/system/tomcat.service [Unit] Description=Tomcat8 After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/tomcat/tomcat.pid ExecStart=/usr/local/tomcat/bin/daemon.sh start ExecStop=/bin/kill -s QUIT $MAINPID ExecReload=/bin/kill -s HUP $MAINPID PrivateTmp=true User=tomcat Group=tomcat [Install] WantedBy=multi-user.target 以后可使用如下方式管理了 # systemctl status tomcat 状态 # systemctl start tomcat 启动 # systemctl stop tomcat 中止 若是启动的时候提示如下,请查看此文件权限。 touch: cannot touch ‘/usr/local/tomcat/logs/catalina.out’: Permission denied 能够看到是以jsvc进行运行 # ss -nltp|grep 8080 LISTEN 0 100 :::8080 :::* users:(("jsvc",pid=2953,fd=49)) 以普通用户权限运行 # ps aux|grep tomcat tomcat 3169
在启动的时候会在tomcat根目录生成tomcat.pid文件,中止以后删除。session
同时tomcat在启动时候,执行start不会启动两个tomcat,保证始终只有一个tomcat服务在运行。
多个tomcat能够配置在多个目录下,互不影响。
# cd /usr/local/tomcat/conf/ # cp tomcat-users.xml{,.bak} # vim tomcat-users.xml
查看只读服务器状态
管理app,包括war包服务的启动、中止、reload、undeploy以及配置session的失效时间
须要开启如下角色功能
manager-gui 容许访问html接口(即URL路径为/manager/html/*) manager-script 容许访问纯文本接口(即URL路径为/manager/text/*) manager-jmx 容许访问JMX代理接口(即URL路径为/manager/jmxproxy/*) manager-status 容许访问Tomcat只读状态页面(即URL路径为/manager/status/*)
管理和配置Tomcat服务器
须要开启如下角色功能
manager-gui 容许访问html接口(即URL路径为/manager/html/*) admin-gui 容许访问html接口 admin-script 容许访问纯文本接口
###
4大角色5种功能的定义格式以下
<role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/>
添加用户名称和密码格式,并受权访问角色以下
<user username="用户名" password="密码" roles="这里是角色如:admin-gui,manager-gui"/> <user username="tomcat" password="123abc" roles="admin-gui,manager-gui"/> <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
除了密码限制以外,还能够经过添加或来限制远程IP地址或主机对Manager Web应用程序的访问权限,特别是在公网上的主机。参考网址https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Remote_Address_Filter
如下2行看须要设置 # vim /usr/local/tomcat/webapps/manager/META-INF/context.xml # vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml 添加容许访问的IP范围,不然只能本机访问 <Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.10\.\d+" /> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.f ilters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
单位是字节
<multipart-config> <!-- 50MB max --> <max-file-size>52428800</max-file-size> <max-request-size>52428800</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config>
以上配置须要重启tomcat服务才能生效