Apache2 jk 配置
因为不是每个应用都需要使用 jk 转发到 Tomcat 所以修改了下加载。
首先当前的 Ubuntu Server 似乎把 jk.conf 直接丢在 /etc/apache2/conf.d 下,而不是放在 /etc/apache2/mods-available 目录。
自然使用 sudo a2enmod jk 的时候就不会创建 /etc/apache2/mods-enabled/jk.conf 软连接。
所以先要把这个文件移到 /etc/apache2/mods-available:
sudo mv /etc/apache2/conf.d/jk.conf /etc/apache2/mods-available
修改 /etc/apache2/mods-available/jk.conf 内容如下:
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
Set the jk log level [debug/error/info]
JkLogLevel info
Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
#JkMount /servlet/* ajp13_worker
#JkMount /.jsp ajp13_worker
#JkMount /.do ajp13_worker
JkShmFile /var/log/jk-runtime-status
#<LocationMatch .web-inf.="">
AllowOverride None
deny from all
#</LocationMatch>
也就是注释掉 JkMount 设置和 LocationMatch 节。
如果已经启动 jk 模块,需要自行创建一个软连接:
sudo ln -s /etc/apache2/mods-available/jk.conf /etc/apache2/mods-enabled/jk.conf
没有启用,直接使用 sudo a2enmod jk 即可。
然后创建一个 mods-optional 用来放置可选的模块配置文件。
sudo nano /etc/apache2/mods-optional/jk.conf
内容如下:
<IfModule mod_jk.c>
将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
#JkMount /servlet/* ajp13_worker
JkMount /.jsp ajp13_worker
JkMount /.do ajp13_worker
<LocationMatch '.WEB-INF.'>
# AllowOverride None
deny from all
</LocationMatch>
</IfModule>
也就是在 /etc/apache2/mods-available/jk.conf 注释掉的内容,并且加上了 IfModule mod_jk.c 判断。
最后就是在虚拟主机的配置文件中 Include:
sudo nano /etc/apache2/sites-available/test
示例内容如下:
<VirtualHost *:80>
Servername www.test.com
ServerAdmin webmaster@test.com
DocumentRoot /var/www/jsp/test
DirectoryIndex index.html index.htm index.jsp
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/jsp/test>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Include /etc/apache2/mods-optional/jk.conf
ErrorLog /var/log/apache2/error.test.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.test.log combined
ServerSignature On
</VirtualHost>
一点题外话:最近配置 tomcat 虚拟主机的时候总是处理不了 *.do 转发,原因是一直以来都是将虚拟主机的 appBase 目录和应用的 docBase 目录放在同一目录下。
也就是 appBase 直接指向程序,docBase 为 . 当前目录。实际上这种配置不能完全满足需要。
修改 server.xml 相关部分如下:
<Host name="www.test.com" debug="0"
appBase="/var/www/jsp" unpackWARs="false"
autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="test" />
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs"
prefix="test_log." suffix=".txt" timestamp="true" />
</Host>
发表评论