注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr. almost

Never mind,live goes on.On my way again.

 
 
 

日志

 
 

配置tomcat调用cgi——一定要注意目录  

2011-02-18 21:09:27|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
“tomcat 6” 上面可以成功, 其他版本不知道。

  可能我笨,弄了很久,以下将有用的资料整理加上自己的理解总结贴出来,希望帮助新手同仁少走弯路,节省时间。

  配置cgi,以支持exe文件.

 
 1.配置文件。   如果使用exe文件来做cgi,还需要设置一个参数executable,这个参数的默认值是支持perl的,也就是说是用来解释perl脚本的。如果你用c++来写cgi脚本,那么executable这个参数的value要设为 cmd /c 。在下面的配置文件中您将会看到。

     如果想让Tomcat下所有的Application支持支持CGI,可以修改 $CATALINA_BASE/conf/web.xml(CATALINA_BASE就是你的tomcat的路径)如果只希望某些项目支持CGI,那么只需要修改这些应用root目录下的/WEB-INF/web.xml文件。

配置tomcat调用cgi——一定要注意目录 - ℃uRRy -    Remember the Time

    这里要说一下,上图就是项目的root目录,除了foo是我自己创建的其他都是tomcat自带的,每个项目里面一般都应该有WEB-INF,而且里面应该有自己的web.xml以作一些只使用与本项目的一些配置。
 
 好了,看看 $CATALINA_BASE/conf/web.xml要怎么配置,在文件里可以找到下面的servlet,去掉注释,修改和增加一些变量:

 <servlet>
  <servlet-name>cgi</servlet-name>
  <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
  <init-param>
   <param-name>clientInputTimeout</param-name>
   <param-value>100</param-value>
  </init-param>
<!--debug的值越高,调试信息越详细-->
  <init-param>
   <param-name>debug</param-name>
   <param-value>0</param-value>
  </init-param>
<!--cgiPathPrefix是cgi路径前缀,我个人目前就当做是可以用cgi-bin来替代WEB-INF/cgi使用,但是访问时必须使用cgi-bin而不能用WEB-INF/cgi,其中可能涉及到什么,暂时不太清楚。还有cgi是一个自己建的文件夹名,随意取-->
  <init-param>
   <param-name>cgiPathPrefix</param-name>
   <param-value>WEB-INF/cgi</param-value>
  </init-param>
<!--这里代表以c++的方式来解释cgi脚本-->
        <init-param>
            <param-name>executable</param-name>
            <param-value>cmd /c </param-value>
        </init-param>
  <load-on-startup>5</load-on-startup>
 </servlet>

可以看到下面的几行就代表一个变量,param-name是变量名,param-value就是变量的值
  <init-param>
   <param-name>clientInputTimeout</param-name>
   <param-value>100</param-value>
  </init-param>

接下来同样是在配置文件找到cgi的servlet映射,去掉注释,这里要说明一下cgi-bin可以看成是个变量,代表上面的”WEB-INF/cgi“,以后会用到,这里一般不作修改。

 <servlet-mapping>
  <servlet-name>cgi</servlet-name>
  <url-pattern>/cgi-bin/*</url-pattern>
 </servlet-mapping>

如果修改<url-pattern>/cgi-bin/*</url-pattern>为<url-pattern>/mycgibin/*</url-pattern>,那么访问时要做相应修改
原来访问地址 http://localhost:8080/foo/cgi-bin/Hello.exe 要想应改为 http://localhost:8080/foo/mycgibin/Hello.exe,这里foo是项目名称,等下将作进一步说明。

2.配置文件做好了,还要修改权限,否则启动tomcat服务器会提示错误
同样是conf文件夹, 打开context.xml文件,改为

<!-- The contents of this file will be loaded for each web application -->
<Context privileged="true">
    <!-- Default set of monitored resources -->
    <WatchedResource>myweb/web.xml</WatchedResource>
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->
</Context>

其实就是<Context privileged="true">,这里,加了privileged="true"。

3.好了,可以启动tomcat服务器,就是双击bin文件夹下的 startup.bat (windows下,linux是startup.sh),没有提示错误就成功了,恭喜。

4.举个cgi运行的例子吧。
   在webapps文件夹下建立自己的项目foo(也就是新建文件夹foo),在foo下新建文件夹WEB-INF,在WEB-INF里新建文件夹cgi (这个要根据配置文件WEB-INF/cgi , 看你写的是什么),WEB-INF可以新建一个web.xml文件作为这个项目的配置,前面提到过了,怎么写就要自己学习下。

#include <stdio.h>
main(int argc,char * argv[]){
printf("Content-type:text/html%c%c",10,10);
printf("<html><body>");
printf("<font color = blue>");
printf("<H1>Hello there!</H>");
printf("</font>");
printf("</body></html>");
}

  接下来用以上代码编译生成exe文件,就是我们要的脚本文件。<url-pattern>/cgi-bin/*</url-pattern>,如果你注意到这行和上面jsp的servlet映射,也会推测我们的cgi文件是不要求后缀名,也就是你可以将其改任何后缀名或者没有后缀名,姑且改为Hello.cgi。好了,吧脚本文件放到cgi文件夹里面吧,然后在浏览器地址栏贴上http://localhost:8080/foo/cgi-bin/Hello.cgi , 回车,恭喜,调用成功
配置tomcat调用cgi——一定要注意目录 - ℃uRRy -    Remember the Time
 
若不成功,一定什么步骤错了,检查吧。



 
  评论这张
 
阅读(2024)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018