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>

Flock 浏览器 创建

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据