转载自 https://www.zfl9.com/tomcat.html
Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器;
随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB服务器都是采用Tomcat
java环境配置
tomcat8.5
-
-
-
mkdir -p /opt/tomcat/
-
tar xf tomcat.tar.gz -C /opt/tomcat/
-
-
## 环境变量 /etc/profile.d/tomcat.sh
-
export CATALINA_HOME=/opt/tomcat
-
export PATH=$PATH:$CATALINA_HOME/bin
-
-
. /etc/profile
-
-
# tomcat启动、关闭
-
catalina.sh start|stop
-
or
-
startup.sh | shutdown.sh
-
热部署
-
# webapps/ webapps目录
-
物理目录 访问url
-
ROOT http://ip
-
zfl http://ip/zfl/
-
test http://ip/test/
-
-
# 三种方式热部署
-
1. 把web项目放置在webapps/ 访问路径 http://ip/项目名/
-
-
2. conf/server.xml
-
<Engine name="Catalina" defaultHost="localhost">
-
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
-
<Context debug="0" docBase="/opt/webapps/blog" path="/blog" privileged="true" reloadable="true"/>
-
</Host>
-
</Engine>
-
# docBase若为相对路径是相对于webapps/ 访问路径 http://ip/blog/
-
-
3. conf/Catalina/localhost/apps.xml
-
<?xml version="1.0" encoding="UTF-8"?>
-
<Context docBase="/opt/webapps/blog" reloadable="true" />
-
# 该方式配置时,访问路径为xml文件名
-
基于域名的虚拟主机
-
## conf/server.xml
-
<Host name="www.zfl.com" appBase="/opt/webapps/www.zfl.com" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
-
<Context docBase="/opt/webapps/www.zfl.com/www" path="" reloadable="true" />
-
</Host>
-
<Host name="blog.zfl.com" appBase="/opt/webapps/blog.zfl.com" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
-
<Context docBase="/opt/webapps/blog.zfl.com/blog" path="" reloadable="true" />
-
</Host>
-
-
www.zfl.com appbase目录 /opt/webapps/www.zfl.com/ web项目 www http://www.zfl.com
-
blog.zfl.com appbase目录 /opt/webapps/blog.zfl.com/ web项目 blog http://blog.zfl.com
-
apache + tomcat
-
## 下载tomcat-connectors mod_jk
-
-
-
## 编译
-
cd /usr/local/src/mod_jk/native/
-
./configure --with-apxs=/opt/www/httpd/bin/apxs
-
make
-
libtool --finish /opt/www/httpd/modules/
-
make install
-
-
cd ../conf/
-
cp -af httpd-jk.conf /opt/www/httpd/conf/extra/
-
cp -af uriworkermap.properties /opt/www/httpd/conf/extra/
-
cp -af workers.properties /opt/www/httpd/conf/
-
-
-
## 配置Apache
-
--- conf/httpd.conf ---
-
Include conf/extra/httpd-jk.conf
-
AddType application/x-httpd-jsp .jsp
-
-
-
--- conf/extra/httpd-jk.conf ---
-
LoadModule jk_module modules/mod_jk.so
-
<IfModule jk_module>
-
JkWorkersFile conf/workers.properties
-
JkLogFile logs/mod_jk.log
-
JkLogLevel info
-
JkShmFile logs/mod_jk.shm
-
# 添加这两行
-
JkMount /*.jsp tomcat1
-
JkMountCopy All
-
#
-
JkWatchdogInterval 60
-
<Location /jk-status>
-
JkMount jk-status
-
Order deny,allow
-
Deny from all
-
Allow from 127.0.0.1
-
</Location>
-
<Location /jk-manager>
-
JkMount jk-manager
-
Order deny,allow
-
Deny from all
-
Allow from 127.0.0.1
-
</Location>
-
</IfModule>
-
-
-
--- conf/workers.properties ---
-
worker.template.type=ajp13
-
worker.template.socket_connect_timeout=5000
-
worker.template.socket_keepalive=true
-
worker.template.ping_mode=A
-
worker.template.ping_timeout=10000
-
worker.template.connection_pool_minsize=0
-
worker.template.connection_pool_timeout=600
-
worker.template.reply_timeout=300000
-
worker.template.recovery_options=3
-
worker.list=tomcat1
-
worker.type=ajp3
-
worker.host=127.0.0.1
-
worker.port=8009
-
-
-
## 配置Tomcat
-
# docBase改为Apache网站根目录
-
--- conf/server.xml ---
-
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
-
<Context path="" docBase="/opt/www/httpd/htdocs" debug="0"/>
-
</Host>
-
-
## 测试
-
service httpd start
-
catalina.sh start
-
-
# test_page
-
--- /opt/www/httpd/htdocs/test.jsp ---
-
<%@page language="java" import="java.util.*" %>
-
Stay hungry Stay foolish !!!
-
Now the time is: <%out.println(new Date());%>
-
nginx + tomcat
-
## 配置nginx
-
--- www.conf ---
-
server {
-
server_name www.zfl.com;
-
root /opt/www/nginx/html;
-
index index.jsp index.php index.html;
-
location ~* \.php$ {
-
fastcgi_pass 127.0.0.1:9000;
-
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
-
include fastcgi_params;
-
}
-
location ~* \.jsp$ {
-
proxy_pass http://127.0.0.1:8080;
-
proxy_redirect off;
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
}
-
}
-
自定义错误页
-
--- conf/web.xml ---
-
<web-app>
-
...
-
<error-page>
-
<error-code>404</error-code>
-
<location>/404.html</location>
-
</error-page>
-
...
-
</web-app>
-
https相关
-
## keytool
-
keytool -genkey -keyalg RSA -validity 3650 -alias tomcat -keystore tomcat.jks -storepass 123456 -keypass 123456 -dname "cn=www.zfl.com,ou=otokaze,o=otokaze,l=gd,st=gz,c=cn"
-
-
## 启用https
-
--- conf/server.xml ---
-
...
-
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
-
...
-
...
-
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
-
<SSLHostConfig>
-
<Certificate
-
certificateKeystoreFile="/etc/pki/tomcat/tomcat.jks"
-
certificateKeyAlias="tomcat"
-
certificateKeystorePassword="123456"
-
type="RSA" />
-
</SSLHostConfig>
-
</Connector>
-
...
-
...
-
<Connector port="8009" protocol="AJP/1.3" redirectPort="443"/>
-
...
-
-
## 强制跳转至https
-
--- conf/web.xml ---
-
<web-app>
-
...
-
<security-constraint>
-
<web-resource-collection >
-
<web-resource-name >SSL</web-resource-name>
-
<url-pattern>/*</url-pattern>
-
</web-resource-collection>
-
<user-data-constraint>
-
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
-
</user-data-constraint>
-
</security-constraint>
-
...
-
</web-app>
-
-
-
## nginx 代理 tomcat (https)
-
nginx与client之间用https通信 nginx与tomcat之间用http通信
-
--- $nginx/conf.d/www.conf ---
-
server {
-
...
-
location ... {
-
proxy_pass http://127.0.0.1:8888;
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
proxy_set_header X-Forwarded-Proto $scheme;
-
}
-
...
-
}
-
-
--- $tomcat/conf/server.xml ---
-
...
-
<Host ...>
-
...
-
<Valve className="org.apache.catalina.valves.RemoteIpValve"
-
remoteIpHeader="X-Forwarded-For"
-
protocolHeader="X-Forwarded-Proto"
-
protocolHeaderHttpsValue="https"/>
-
...
-
</Host>
-
...