想通过请求触发部署在tomcat上的非java应用程序,需要用到Common Gateway Interface(CGI)。Tomcat提供了Servlet CGI支持。

  • 修改web.xml

web.xml配置文件中默认注释了CGIServlet,只需要打开注释即可。修改apache-tomcat-x.x.xx/conf/web.xml文件可以影响服务器上所有的部署应用。另外有几个配置需要注意,

  1. cgiPathPrefix:部属应用中,cgi脚本的位置。tomcat会在所有应用的该目录啥寻找。
  1. executableCGI脚本的执行程序。
  1. passShellEnvironmentshell的环境变量。
  2.  
  3. URL pattern:应用程序实际的webroot + /cgi-bin/*
  1. <servlet>
  2. <servlet-name>cgi</servlet-name>
  3. <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
  4. <init-param>
  5. <param-name>cgiPathPrefix</param-name>
  6. <param-value>WEB-INF/cgi</param-value>
  7. </init-param>
  8. <init-param>
  9. <param-name>executable</param-name>
  10. <param-value>C:\Anaconda3\python.exe</param-value>
  11. </init-param>
  12. <init-param>
  13. <param-name>passShellEnvironment</param-name>
  14. <param-value>true</param-value>
  15. </init-param>
  16. <load-on-startup>5</load-on-startup>
  17. </servlet>
  18.  
  19.   <servlet-mapping>
  20. <servlet-name>cgi</servlet-name>
  21. <url-pattern>/cgi-bin/*</url-pattern>
  22. </servlet-mapping>
  • 修改context.xml

修改apache-tomcat-x.x.xx/conf/context.xml文件会影响所有服务器上部署的应用。

  1. <Context privileged="true">
  • 将python脚本部署在web应用

创建hello.py,将其放在web应用test工程,“WEB-INF/cgi”目录下。

  1. from os import *
  2. from cgi import *
  3.  
  4. print('Hello')
  • 在浏览器中访问程序

http://localhost:8180/test/cgi-bin/hello.py

  1. -Dec- ::55.232 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8109"]
  2. -Dec- ::55.249 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in ms
  3. -Dec- ::04.408 INFO [http-nio--exec-] org.apache.catalina.servlets.CGIServlet$CGIRunner.run Bad header line [Hello]

如何在Tomcat服务器配置CGI运行Python的更多相关文章

  1. 如何在cmd命令下运行python脚本

    1.打开cmd窗口,输入:cd c:\\python27  (首先得确认python已加入环境变量) 2.第二条命令:python[空格]完整的python脚本路径,运行即可 3.一个案例: Micr ...

  2. SpringBoot 项目如何在tomcat容器中运行

    一. SpringBoot内嵌容器的部署方式 SpringBoot内部默认提供内嵌的tomcat容器,所以可以直接打成jar包,丢到服务器上的任何一个目录,然后在当前目录下执行java -jar de ...

  3. SpringBoot1.5.10.RELEASE项目如何在tomcat容器中运行

    一. SpringBoot内嵌容器的部署方式 SpringBoot内部默认提供内嵌的tomcat容器,所以可以直接打成jar包,丢到服务器上的任何一个目录,然后在当前目录下执行java -jar de ...

  4. 怎样用QtCreator编辑运行python脚本

    QtCreator作为一款开发基于qt库的程序.以及开发C语言.c++语言项目都是一个利器,轻便好用.那么作为开发者来说,经常换着使用各种IDE是家常便饭,但是要是这些语言都能够集成到一个工具里岂不是 ...

  5. Apache运行python cgi程序

    Apache运行python cgi程序 环境 win10 x64 专业版 Apache2.4 python 2.7 Apache安装和配置 Apache服务器的安装请自行搜索.在Apache2.4中 ...

  6. 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE

    http://www.crifan.com/how_to_do_python_development_under_windows_environment/ 本文目的 希望对于,如何在Windows下, ...

  7. windows+phpstudy(apache) 以cgi方式运行python

    Apache配置 在httpd.conf中查找DocumentRoot: +ExecCGI 支持cgi DocumentRoot "F:\phpStud\PHPTutorial\WWW&qu ...

  8. 如何在Windows系统中设置Python程序定时运行

    文章出处:http://blog.csdn.net/wwy11/article/details/51100432 首先,我们肯定是要用到Windows下的[计划任务]功能 之后点击右侧的[创建基本任务 ...

  9. 编写我的第一个CGI代码——python学习

    在编程学习网站学习Python语言,学习到cgi编程章节遇到了一些小问题,课程介绍的为linux环境的Apache配置方法,具体如下: [linux环境配置方法:] 在进行CGI编程前,确保您的Web ...

随机推荐

  1. android灭屏后调用binder通讯竟然影响了socket的POLL_OUT事件,怪事。

    当你的android在灭屏(休眠)时分派(dispatch) Ice调用过程中,如果创建了新的进程,你的响应将不会预期那样工作,尽管你已经调用 ice_response或 ice_exception, ...

  2. spring 工具类大集合

    接以前的文章 apache-commons 常用工具类 和文章 apache-commons 工具类扩展 小家 Spring 对 spring 的工具类做了详细的介绍(一) 这里我抽出一些好用的类,不 ...

  3. Mysql 存储过程声明及使用

    存储过程(Stored Procedure):是一组用于完成特定数据库功能的sql语句集,该sql语句集经过编译后存储在数据库系统中,在使用的时候,用户通过调用指定已经定义好的存储过程并执行它,从而完 ...

  4. nexus auto start

    cd /etc/init.d ln -s /opt/nexus/nexus-2.3.1-01/bin/jsw/linux-x86-64/nexus nexus chkconfig --add nexu ...

  5. JavaScript 关于setTimeout与setInterval的小研究

    说明 在开发功能"轨迹播放"时,遇到了一个情况. 原先同事已经开发了一版,这次有个新功能:点击线上任意一点后可以从点击处重新播放. 看了一下原来的版本,发现同时使用了setTime ...

  6. PythonI/O进阶学习笔记_7.python动态属性,__new__和__init__和元类编程(上)

    content: 上: 1.property动态属性 2.__getattr__和__setattr__的区别和在属性查找中的作用 3.属性描述符 和属性查找过程 4.__new__和__init__ ...

  7. Mysql数据库调优和性能优化的21条最佳实践

    Mysql数据库调优和性能优化的21条最佳实践 1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开 ...

  8. 音频工具kaldi部署及模型制作调研学习

    语音识别简介 语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR).计算机语音识别(英语:Comput ...

  9. ES6之Set

    阮大神的es6看了一遍,但是对于Set和Map还是一知半解的,主要还是没怎么用吧,这里总结一下,以后再工作中也要多用用才行 怎么定义set呢?有什么用处? set是ES6中新增的类型,和数组类似,唯一 ...

  10. 关于新浪和腾讯短网址API接口的调用

    最新新浪t.cn短网址和腾讯url.cn短网址生成api接口,快速生成t.cn及url.cn超短链接,接口都可以正常调用,觉得不错可以收藏一下. 新浪短网址api接口:1. http://yldwz. ...