安装hustoj和VirtualJudge后,想着把他们弄在一起,因为端口号太多访问者着实不方便。下面的教程中有些省略了,可以在前面几篇帖子找到。
网上已经有很多关于如何整合Apache2与Tomcat的文章,但是实际应用的时候却相差甚远。自己摸索了一番,才稍微明白了一些。实现过程大同小异。
这里就以配置vjudge为例。
整合步骤
1.安装Apache2与Oracle JDK和Tomcat7(不必解释)
2.设置Tomcat7,打开AJP端口
3.安装AJP13并配置
AJP13是连接Apache2与Tomcat的连接器. 通过mod_jk来实现,命令如下
apt-get install libapache2-mod-jk
安装后到/etc/libapache2-mod-jk目录, 查看下有没有workers.properties
使用vi workers.properties命令编辑该文件.
需要修改以下几个地方
1). 修改workers.tomcat_home与workers.java_home的值为正确的路径 (这一步可选)
2). 在worker.list后面添加jk-status,jk-manager的值, 配置后如下
worker.list=ajp13_worker,jk-status,jk-manager
(若不加上这两个值为在apache2启动后看到一些警告信息)
jk-status与jk-manager用于监控mod_jk的运行与管理(默认只能在本机才能访问)
其他的使用默认值, 在这儿可以看到默认已经创建了一个名叫ajp13_worker 的worker.
4.配置拦截规则
此处最重要,用于指定哪些URL由Apache处理, 哪些URL需要转给Tomcat处理.
进入/etc/apache2/sites-available目录.编辑default文件(命令vi default)
在</VirtualHost>标签之前与最后一个</Directory>之后添加,示例如下
JkMount /*.jsp ajp13_worker
JkMount /vjudge/* ajp13_worker
应该一看就明白了吧, JkUnMount 指定哪些匹配的URL由Apache处理, JkMount指定哪些匹配的URL转给Tomcat处理
除了使用JkUnMount与JkMount方式以外, 还有其他的方式。
至此 , 整合配置完成, 下来是测试了.
1.先确定Tomcat访问没问题;
2.重启Apache2, 命令 /etc/init.d/apache2 restart
通过http://$HOST/vjudge 访问,若能访问成功并且内容与之前直接访问Tomcat的一致,则说明配置成功(注意: 此处不加端口)
同理, 你可访问一个html页面,测试是否由Apache进行处理。
这样整合的OJ和虚拟OJ可以不必使用端口号了