要运行cgi,主要是改两个文件,一个是web.xml,一个是context.xml。
1.web.xml
先把下面这段的注释去掉,然后添加默认没有的段
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>/usr/bin/perl</param-value>
</init-param>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>100</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
去掉下面的注释
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
参数的含义大家百度一下啦
下面详细解释以下内容
<init-param>
<param-name>executable</param-name>
<param-value>/usr/bin/perl</param-value>
</init-param>
参数executable,这个参数的默认值是支持perl的,也就是说是用来解释perl脚本的。如果你用c++来写cgi脚本,那么executable这个参数的value要设为 cmd /c,还支持python,php等等,cgi接口程序使用什么语言编写就使用什么参数,
2.context.xml
context.xml主要是改这么一行:
<Context privileged="true">
直接在context后加上privileged="true"就可以了,用于放行可执行文件
3.添加测试程序
[root@zonghe cgi]# cd/usr/local/tomcat6/webapps/ROOT/WEB-INF
[root@zonghe WEB-INF]# mkdir cgi
[root@zonghe WEB-INF]# cd cgi/
[root@zonghe cgi]# ls
test1.cgi
[root@zonghe cgi]# cat test1.cgi
#!/usr/bin/perl
print "Content-type:text/html\n\n";
$now = localtime();
print "<h1>It is$now</h1>";
使用浏览器打开相关网页http://10.58.1.96:8080/cgi-bin/test1.cgi
看到图片上的内容表示设置成功