我正在尝试设置我的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脚本时,我得到一个空白页而不是下载。
答案 0 :(得分:1)
我不熟悉Tomcat配置,但是,基于多年来运行许多Apache服务器,我立即想到您可能没有在该级别启用cgi-bin
的脚本执行:< / p>
ScriptAlias /cgi-bin/ /filesystem/path/to/cgi-bin/directory
请注意,必须在主apache配置或虚拟主机配置中设置ScriptAlias。它不会在.htaccess
文件中工作。
答案 1 :(得分:1)