python - 在 Tomcat 上安装 CGI 代理

标签 python module environment

我想设置一个代理供 openlayers 使用,因此我按照以下步骤操作:

  1. 从 OpenLayers 网站下载 proxy.cgi 文件: http://trac.osgeo.org/openlayers/browser/trunk/openlayers/examples/proxy.cgi

  2. 修改 proxy.cgi 文件以将我的域包含在 allowedHosts 列表中:

    allowedHosts = ['localhost:6901']

  3. 将 proxy.cgi 文件复制到以下文件夹:

    $TOMCAT_PATH$/webapps/yourApp/WEB-INF/cgi/

  4. 通过添加以下部分来修改 Web 应用程序的 web.xml 文件。您可以在

    找到该文件

    $TOMCAT_PATH$/webapps/yourApp/WEB-INF/web.xml

评论:如果您的 Web 应用程序不存在 web.xml 文件,只需自行创建它或从另一个 Web 应用程序复制并修改它。 (已创建!)

注释:“executable”参数的“param-value”必须包含 Python 安装路径。 (确实如此!)

<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> 
    <init-param> 
      <param-name>executable</param-name> 
      <param-value>c:\python25\python.exe</param-value> 
    </init-param> 
    <init-param> 
      <param-name>passShellEnvironment</param-name> 
      <param-value>true</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>
  1. 通过添加以下元素来修改 Web 应用程序的 context.xml 文件。您可以在 $TOMCAT_PATH$/webapps/yourApp/META-INF/context.xml

    中找到该文件

  2. 重新启动 Tomcat

  3. 要将代理与 OpenLayers 一起使用,只需将这一行包含到您的代码中:

    OpenLayers.ProxyHost = "/yourWebApp/cgi-bin/proxy.cgi?url=";

但是当我尝试使用它时:

/webappname/cgi-bin/proxy.cgi?url=labs.metacarta.com

我收到此错误:

Some unexpected error occurred. Error text was: list index out of range

我认为它与 os.environ["REQUEST_METHOD"] 有关,但我不知道它是如何相关的..

最佳答案

您请求的环境变量未定义。

您需要捕获并处理异常或使用os.environ.get:

try:
    methodq = os.environ["REQUEST_METHOD"]
except KeyError:
    methodq = "default value"

或者:

methodq = os.environ.get("REQUEST_METHOD", "default value")

关于python - 在 Tomcat 上安装 CGI 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816910/

相关文章:

python - pip 或 pip3 为 Python 3 安装包?

python - 使用 Python 将文件从一个 FTP 位置传输到另一个位置

php - 从 Drupal 7 中的模块调用 $site_name 变量

java - 如何在另一个应用程序模块中使用项目源代码

python - Pandas :使用分组数据创建滞后列

python - 如何为每列绘制具有不同线条颜色的 Pandas 数据框?

mysql - 使用 Joomla 模块并收到错误 "No valid database connection You have > an error in your SQL syntax"

asp.net - 网站/Web 服务部署环境不同/监控?

node.js - NodeJS - 使用 cmd 获取环境变量设置

r - 如何在 R 包中创建常量?