Tomcat服务
安装
- 安装
java
环境
yum install -y java-1.8.0-openjdk
java -version # 看是否成功
- 安装
Tomcat
,这里以apache-tomcat-8.0.30.tar.gz
为例
tar -xvf apache-tomcat-8.0.30.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-8.0.30 /usr/local/tomcat: << 'EOF'
# 相关目录介绍
tomcat
├── bin # 存放主程序
├── conf # 存放配置文件
├── lib # 存放库文件
├── LICENSE
├── logs # 存放日志
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp
├── webapps # 存放网站页面
└── work # 存放编译后页面文件EOF
- 启动
Tomcat
# 在启动tomcat之前,做下面两个方案之一即可,不然有可能会出现8005端口启动非常慢
# 方案一
mv /dev/random /dev/random.bak
ln -s /dev/urandom /dev/random# 方案二
yum install rng-tools
systemctl start rngd && systemctl enable rngd# 启动tomcat
/usr/local/tomcat/bin/startup.sh# 关闭tomcat(如果配置文件有问题,关闭tomcat的时候会提示)
/usr/local/tomcat/bin/shutdown.sh
相关配置
- 配置文件存放路径:
/usr/local/tomcat/conf/server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener" /><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /><GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><!-- 网页端口,默认是8080 --><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><!-- 网站配置开始,name:域名、appBase:网站页面位置、unpackWARs:自动解压war、autoDeploy:自动部署 --><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><!-- 自定义访问路径与页面位置,path:匹配用户访问路径,docBase:定义页面位置 --><Context path="/test" docBase="test_dir" /><!-- 日志配置,className:默认即可、directory:日志存放目录、prefix:日志文件名称前缀、suffix:日志文件名称后缀、pattern:日志格式 --><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host><!-- 网站配置结束 --></Engine></Service>
</Server>
示例
搭建虚拟主机
环境
ip
为192.168.3.200
的web主机需求
- 将
tomcat
的默认端口改为80- 访问
http://www.a.com/xxx文件
,实际命中的是/data/www_a_com/
中的xxx
文件- 访问
http://www.a.com/test/index.html
,实际命中的是/var/www/html/index.html
,并且给www.a.com
虚拟主机添加日志功能,日志存放在/data/www_a_com/logs/www_a_com.log
中- 将
war
包直接丢/usr/local/tomcat/webapps/下
,测试会不会自动解压本示例主要体现的是
name
、appBase
、unpackWARs
、path
、docBase
的作用思考:
curl www.a.com/project/index.html
实际访问的是服务器上的哪个文件?
- 将
tomcat
的默认端口改为80
# 修改配置文件
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'
# 这里修改成80
<Connector port="80" protocol="HTTP/1.1"
...
EOF# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
- 访问
http://www.a.com/xxx文件
,实际命中的是/data/www_a_com/
中的xxx
文件
# 修改/etc/hosts文件
echo "192.168.3.200 www.a.com" >> /etc/hosts# 准备测试页面,这里使用index.html为例
mkdir -p /data/www_a_com
echo "/data/index.html" > /data/index.html# 修改配置文件
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'
<Engine name="Catalina" defaultHost="localhost">...<!-- 添加新的虚拟主机 --><Host name="www.a.com" appBase="/data/www_a_com"unpackWARs="true" autoDeploy="true"><!-- 下面这行如果不加,会命中/data/www_a_com/ROOT/xxx --><Context path="" docBase="" /></Host><!-- 默认的不动 --><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host>
EOF# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh# 测试
curl http://www.a.com/index.html
# 输出: /data/www_a_com/index.html
- 访问
http://www.a.com/test/index.html
,实际命中的是/var/www/html/index.html
,并且给www.a.com
虚拟主机添加日志功能,日志存放在/data/www_a_com/logs/www_a_com.log
中
# 准备index.html
echo "/var/www/html/index.html" > /var/www/html/index.html# 准备日志存放目录
mkdir /data/www_a_com/logs# 修改配置文件
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'<Host name="www.a.com" appBase="/data/www_a_com"unpackWARs="true" autoDeploy="true"><Context path="" docBase="" /><!-- 添加下面几行,这里的directory需要配置绝对路径才行,不然会出现/usr/local/tomcat/logs/中 --><Context path="/test" docBase="/var/www/html" /><Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/www_a_com/logs"prefix="www_a_com" suffix=".log"pattern="%h %l %u %t "%r" %s %b" /></Host>
EOF# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh# 测试
curl www.a.com/test/index.html
# 输出: /var/www/html/index.html
- 将
war
包直接丢/usr/local/tomcat/webapps/下
,测试会不会自动解压
# 准备war包
echo "test war" > index.html
yum install -y java-1.8.0-openjdk-devel # 安装jar,使用方法跟tar类似
jar -cf project.war index.html# 将war包复制到/usr/local/tomcat/webapps下
cp project.war /usr/local/tomcat/webapps/# 查看是否自动解压(此时如果删除war包,相应的目录也会自动删除)
ls /usr/local/tomcat/webapps/
# 其中包含: project project.war# 编辑配置文件,测试是否能够正常访问
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'<!-- 这里使用的是默认的进行测试 --><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><!-- 只需添加这一行即可,这样访问localhost的会自动命中project目录,不会使用ROOT --><Context path="" docBase="project" /><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host>
EOF# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh# 测试
curl 192.168.3.200/index.html
# 输出: test war