Tomcat:是一种web服务器,只能运行java开发的项目,由java语言编写,因此想要启动Tomcat需要安装jdk。
本文使用开源的JDK(Centos自带) openjdk
一、基础
1.安装jdk:
yum -y install java-1.8.0-openjdk
yum -y install java-1.8.0-openjdk-headless
安装tomcat:
tar -xvf apache-tomcat-xxxx.tar.gz #解压
mv tar -xvf apache-tomcat-xxxx /usr/local/tomcat #更换软件目录
#由于tomcat由java编写,因此只需要jdk就可以运行,因此不需要源码安装
2.tomcat目录介绍:
ls /usr/local/tomcat
bin/ #主程序,startup.sh用于启动服务,shutdown.sh用于关闭服务
lib/ #库文件
logs/ #日志
temp/ #临时文件
work/ #自动编译的目录,会把jsp转成servlet
conf/ #配置文件
webapps/ #页面目录,war包放在这个目录下,jsp或者html页面放在webapps/Root
3.tomcat启动问题:
tomcat启动的时候会从/dev/random中读取足够多的随机数,为了进行安全监测
/dev/random产生随机数的规则是由内存中的文件数量决定的,可以能会长时间
不产生随机数,这样tomcat就必须要进行等待。
/dev/urandom也可以产生一系列随机数,因此可以用/dev/urandom替换/dev/random
mv /dev/random /dev/random.bak #备份
ln -s /dev/random /dev/urandom
二、配置
1.tomcat虚拟主机:
修改配置文件:/vra/local/tomcat/conf/server.xml
appBase表示自定解压war包,autoDeploy表示自动部署
<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">
</Host> #name表示域名,appBase表示页面存放的路径 /usr/local/tomcat/a/Root
<Host name="www.b.com" appBase="b" unpackWARS="true" autoDeploy="true">
</Host> #name表示域名,appBase表示页面存放的路径 /usr/local/tomcat/bRoot
页面应该是在 **/Root下,因此需要创建a/Root,b/Root
mkdir -p /usr/local/tomcat/{a,b}/Root
重启服务:(tomcat没有重启,只能先关闭再开启)
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
2.修改www.b.com网站的首页目录为base:
<Host name="www.b.com" appBase="b" unpackWARS="true" autoDeploy="true">
<Context path="" docBase="base"/> #这样页面就在/usr/local/tomcat/b/base/下
</Host>
3.跳转:www.a.com/test -------> /var/www/html/index.html
<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">
<Context path="/test" docBase="/var/www/html/" /> #想当与nginx的rewrite
</Host>
4.加密:
在nginx和http中,需要为每一个虚拟主机需要配置端口号(端口号可以相同)。
在tomcat中配置端口号以后,所有的虚拟主机都可以使用。
1°生成私钥和安全证书:
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore #提示输入密码为:123456
#-genkeypair 生成密钥对
#-alias tomcat 密钥别名
#-keyalg RSA 定义密钥算法为RSA算法
#-keystore 定义密钥文件存储在:/usr/local/tomcat/keystore
2°修改配置文件:/usr/local/tomcat/conf/server.xml
#大约在58行左右,打开配置文件模板
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456" clientAuth="false"
sslProtocol="TLS" />
5.日志:/usr/local/tomcat/logs
catalina.xxxxx.log 是主日志,每天都会产生,常常用于排错
其它就是访问日志。
为虚拟主机配置日志:
<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">
<Context path="/test" docBase="/var/www/html/" />
#从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="a_access" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
6.Nginx调度tomcat集群:
upstream tomcat { #创建一个名为tomcat的集群
server 192.168.2.100:8080;
server 192.168.2.200:8080;
}
server {
listen 80; #nginx监听端口
server_name localhost; #域名
location / {
proxy_pass http://tomcat; #把请求转发给集群
}
}
写总结的第二十天!!!