Ubuntu 16.04下安装Tomcat

首先下载Tomcat8

建议安装lrzsz

root权限可直接使用apt install lrzsz

安装JDK(如有即跳过)

安装JDk 的时候,其实是很顺利的,只用了三个命令,就把他装好了,感觉也自动配好了环境变量,可以直接使用。
安装Ubuntu 16.04后要做的事 的第九条:安装Oracle Java
命令如下:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer(纯命令行还挺难装的)
sudo apt-get install openjdk-8-jdk
执行完上面三条命令以后,再执行下面三条命令,测试一下,安装是否成功
java -version
java
javac
至此,JDK安装完毕。

启动tomcat

进入tomcat_path/bin,执行sh startup.sh
启动后,如果你有公网ip,可能通过公网ip:8080无法访问,这个时候需要另一个神奇iptables
查看已启用的规则
iptables -L -n
开启80端口
iptables -A INPUT -p tcp -i eth0 –dport 80 -j ACCEPT
开启8080端口
iptables -A INPUT -p tcp -i eth0 –dport 8080 -j ACCEPT

允许loopback(不然会导致DNS无法正常关闭等问题)

IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT (如果是OUTPUT DROP)
保存iptables规则

iptables-save > /etc/iptables.up.rules
iptables规则自动保存与自动加载

nano /etc/network/interfaces
修改 /etc/network/interfaces ,添加下面末尾2行脚本

auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/network/iptables.up.rules
post-down iptables-save > /etc/network/iptables.up.rules

Tomcat Manager的用户配置是在Tomcat安装目录/conf/tomcat-users.xml文件中进行管理的。

Tomcat Manager的用户配置非常简单,下面我们以一个具体的配置为例:

如上所示,我们只需要在tomcat-users节点中配置相应的role(角色/权限)和user(用户)即可。一个user节点表示单个用户,属性username和password分别表示登录的用户名和密码,属性roles表示该用户所具备的权限。

user节点的roles属性值与role节点的rolename属性值相对应,表示当前用户具备该role节点所表示的角色权限。当然,一个用户可以具备多种权限,因此属性roles的值可以是多个rolename,多个rolename之间以英文逗号隔开即可。

稍加思考,我们就应该猜测到,rolename的属性值并不是随意的内容,否则Tomcat怎么能够知道我们随便定义的rolename表示什么样的权限呢。实际上,Tomcat已经为我们定义了4种不同的角色——也就是4个rolename,我们只需要使用Tomcat为我们定义的这几种角色就足够满足我们的工作需要了。

以下是Tomcat Manager 4种角色的大致介绍(下面URL中的*为通配符):

manager-gui:允许访问html接口(即URL路径为/manager/html/)
manager-script:允许访问纯文本接口(即URL路径为/manager/text/
)
manager-jmx:允许访问JMX代理接口(即URL路径为/manager/jmxproxy/)
manager-status:允许访问Tomcat只读状态页面(即URL路径为/manager/status/
)
2,地址绑定
修改apache-tomcat-8.5.5/webapps/manager/META-INF目录下的context.xml文件,注释这段代码。
修改apache-tomcat-8.5.5/webapps/host-manager/META-INF目录下的context.xml文件,注释这段代码。

1
2
3
4
5
6
<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" />
-->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>