Tomcat下载脚本而不是运行脚本

时间:2015-08-04 12:50:37

标签: apache perl tomcat7

我正在尝试设置我的tomcat来运行.pl和.cgi脚本,但每当我访问cgi servlet路径时,它只会下载脚本。

我知道在旧版本中,必须重命名两个.JAR文件,但我认为Tomcat 7不需要...

这是我的配置

操作系统

Linux version 2.6.32-504.30.3.el6.x86_64 (mockbuild@x86-027.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-9) (GCC) ) #1 SMP Thu Jul 9 15:20:47 EDT 2015

$ {CATALINA_HOME} /conf/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>cgiPathPrefix</param-name>
      <param-value>WEB-INF/cgi</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>

$ {CATALINA_HOME} /conf/context.xml

<Context privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

脚本目录

${CATALINA_HOME}/ROOT/WEB-INF/cgi/test.pl

${CATALINA_HOME}/webapp1/WEB-INF/cgi/test.pl

note :两者均设为 0775

$ {CATALINA_HOME} / Lib

的内容
-rw-r--r--.  1 root root   15979 May  7 13:17 annotations-api.jar
-rw-r--r--.  1 root root   54466 May  7 13:17 catalina-ant.jar
-rw-r--r--.  1 root root  130554 May  7 13:17 catalina-ha.jar
-rw-r--r--.  1 root root 1621907 May  7 13:17 catalina.jar
-rw-r--r--.  1 root root  259519 May  7 13:17 catalina-tribes.jar
-rw-r--r--.  1 root root 2310271 May  7 13:17 ecj-4.4.2.jar
-rw-r--r--.  1 root root   55535 May  7 13:17 el-api.jar
-rw-r--r--.  1 root root  124750 May  7 13:17 jasper-el.jar
-rw-r--r--.  1 root root  598396 May  7 13:17 jasper.jar
-rw-r--r--.  1 root root   87805 May  7 13:17 jsp-api.jar
-rw-r--r--.  1 root root  198014 May  7 13:17 servlet-api.jar
-rw-r--r--.  1 root root  210978 May  7 13:17 tomcat7-websocket.jar
-rw-r--r--.  1 root root    6143 May  7 13:17 tomcat-api.jar
-rw-r--r--.  1 root root  786806 May  7 13:17 tomcat-coyote.jar
-rw-r--r--.  1 root root  234043 May  7 13:17 tomcat-dbcp.jar
-rw-r--r--.  1 root root   71864 May  7 13:17 tomcat-i18n-es.jar
-rw-r--r--.  1 root root   43793 May  7 13:17 tomcat-i18n-fr.jar
-rw-r--r--.  1 root root   47036 May  7 13:17 tomcat-i18n-ja.jar
-rw-r--r--.  1 root root  125623 May  7 13:17 tomcat-jdbc.jar
-rw-r--r--.  1 root root   31948 May  7 13:17 tomcat-util.jar
-rw-r--r--.  1 root root   36271 May  7 13:17 websocket-api.jar

我也在tomcat前面运行Apache。这是虚拟主机:

 <VirtualHost *:80>
    ServerName localhost
    ServerAlias staging.website.com
    ProxyRequests Off
    ProxyPreserveHost On

    ErrorLog /var/log/httpd/tomcat.error.log
    CustomLog /var/log/httpd/tomcat.log combined

    <Proxy *>
           Order deny,allow
           Allow from all
    </Proxy>

    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
</VirtualHost>

我做错了什么?通过我经历的所有教程,它应该可以工作。

注意:当我通过tomcat的端口(:8080)直接访问perl脚本时,我得到一个空白页而不是下载。

2 个答案:

答案 0 :(得分:1)

我不熟悉Tomcat配置,但是,基于多年来运行许多Apache服务器,我立即想到您可能没有在该级别启用cgi-bin的脚本执行:< / p>

ScriptAlias /cgi-bin/ /filesystem/path/to/cgi-bin/directory

请注意,必须在主apache配置或虚拟主机配置中设置ScriptAlias。它不会在.htaccess文件中工作。

答案 1 :(得分:1)

  1. 是否在OS路径中可执行perl,因此可以通过tomcat进程找到它?
  2. 我不确定,但CGI和SSI servlet扩展必须一次重命名才能使它们可用。也许这是你正在寻找的缺失步骤?