TOMCAT 安装教程 & 配置CGI & c语言exe

TOMCAT安装

参考原文网址:百度经验http://jingyan.baidu.com/article/154b4631aad2bb28ca8f4191.html

1.下载安装JDK

网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

设置环境变量

①新建JAVA_HOME,变量值为:  

        C:\Program Files\Java\jdk1.6.0_10

②新建ClassPath,变量值为:

        .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

③新建Path,变量值为:

         %JAVA_HOME%\bin;

 注意:根据自己安装的情况进行适当的修改。

 

2.下载安装TOMCAT

网址:http://tomcat.apache.org/download-60.cgi

①新建CATALINA_BASE,变量值为: 

      C:\Program Files\Apache Software Foundation\Tomcat 6.0

②新建CATALINA_HOME,变量值为:

      C:\Program Files\Apache Software Foundation\Tomcat 6.0

③新建TOMCAT_HOME,变量值为:

      C:\Program Files\Apache Software Foundation\Tomcat 6.0

④修改ClassPath,变量值为:

 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib\servlet-api.jar;

 ⑤修改Path,变量值为:

       %JAVA_HOME%\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;

      注意:根据自己安装的情况进行适当的修改。

启动服务

在浏览器中进行测试

 

 

注意事项:

配置环境变量时,需要细心,比如配置路径中的".;"是一定不能少的,而且软件安装的路径需要非常正确。

有时候,安装一些程序的时候,也会对环境变量进行修改,导致已经安装好的Tomcat出现error,那么请手动复原。重新启动,则可以生效。

 

3.配置CGI

修改配置文件前要先关闭Apache服务,否则无法保存修改。

cmd->  services.msc

参考网址:http://blog.csdn.net/chcbz/article/details/6032924

1、配置修改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>
-->

修改为:(去掉注释、将默认文件夹位置改为cgi-bin)

    <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>cgi-bin</param-value>
        </init-param>
         <load-on-startup>5</load-on-startup>
    </servlet>

【引】:注意:其中cgiPathPrefix是cgi文件的存放路径,默认是WEB-INF/cgi,我为了方面用awstats,所以改成cgi-bin。

可是这样还不能运行cgi-bin目录下的普通Win32 exe程序还需要设置参数指定使用console /c 来运行exe:

 

    <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>cgi-bin</param-value>
        </init-param>
    <init-param>
      <param-name>executable</param-name>
      <param-value>cmd /c</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>

 

具体参考网址:http://www.blogjava.net/Tauruser/archive/2007/09/06/143097.html

 

还是不行,

参考

 

网址:http://blog.csdn.net/debbykindom/article/details/5790871 Tomcat配置perl及exe的cgi

 

网址:http://www.iteye.com/problems/90014

网址:http://bbs.csdn.net/topics/70321596

【引用】

如果用c或者c++的话,应该编译成hello.exe这样的可执行文件,然后
把<FORM METHOD="post" ACTION="/cgi-bin/hello.cgi"> 改成
   <FORM METHOD="post" ACTION="/cgi-bin/hello.exe">
然后在浏览器访问 http://localhost:8080/cgi-bin/hello.exe
此外,因为hello.exe本身就是可执行程序,所以executable的值配置成空也没问题
<param-name>executable</param-name>
<param-value></param-value>
报错的原因应该是windows不知道hello.cgi应该用什么程序打开(没有设置cgi的文件关联),也就是不识别cgi扩展名。直接在 windows的cmd窗口中执行cmd /c hello.cgi的话,会直接弹出对话框,让你选择用什么程序打开hello.cgi文件。

perl版本:

其中参数executable需要自已添加进去,它的值就是我们用来解释CGI脚本的程序。一般情况下这里会配置为Perl。"C:/Perl/bin/"为Perl的安装目录。

 

接着继续修改:

原来:

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

 修改后:(去掉注释)

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

/cgi-bin/*意思是,访问cgi文件的默认地址为cgi-bin/*(???)

 其中url-pattern就是将来我们访问CGI脚本的url地址模式。

 

2、修改context.xml文件:

修改前:

 

<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/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>

 

修改后:(添加privilege=“true")

<Context privileged="true">
    。。。
</Context>

 

4、实例

最后我的配置文件修改为:

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>cgi-bin</param-value>
        </init-param>
    <init-param>
      <param-name>executable</param-name>
      <param-value></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>

 <!-- The mapping for the CGI Gateway servlet -->
    <servlet-mapping>
        <servlet-name>cgi</servlet-name>
        <url-pattern>/cgi-bin/*</url-pattern>
    </servlet-mapping>

contex.xml文件:

<Context privileged="true">
    。。。
</Context>

 indexl根目录:(localhost:8080/)

  

1、编辑helloworld.exe,c程序:

#include <stdio.h>

int main()
{
    printf("Content-Type: text/plain;charset=utf-8\n\n");
    printf("Hello world!\n");
    return 0;
}

(第一个printf是cgi要识别http头,后面的换行是要和后面的内容区分开)

将生成的exe程序放到cgi-bin目录下:

2、编辑test.html

<html>
<body>
<form action="http://localhost:8080/cgi-bin/helloworld.exe">
 <div>
  <input type="submit" value="执行exe">
 </div>
</form>
</body>
</html> 

3、打开网页test.html

点击按钮执行之后:

 

[更换成以下c程序时]

printf输出html

#include <stdio.h>

int main(int argc,char **argv)
{
    printf("Content-Type: text/html;charset=utf-8\n\n");
    printf("<html><boady><p style=\"color:red;font-size:50pt\">Hello world!</p></body></html>");
    return 0;
}

效果:

 

posted @ 2014-07-25 23:20  sunnycs  阅读(638)  评论(0编辑  收藏  举报