美文网首页
mac上使用tomcat配置CGI

mac上使用tomcat配置CGI

作者: YocnZhao | 来源:发表于2019-05-17 15:28 被阅读0次

    如果没有安装tomcat可以使用apache调用CGI,参考apache配置CGI。如果安装了tomcat,可以配置到tomcat上,比apache方便一些。
    具体mac上安装tomcat可以看mac上jenkins和tomcat的配置
    首先浏览器输入localhost:8080/ 先看到那只猫,不要展示文件列表。
    1、打开web.xml,我机器上的地址是/usr/local/Cellar/tomcat/9.0.19/libexec/conf/,打开下面两段的注释。

     <servlet>
            <servlet-name>cgi</servlet-name>
            <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
            <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>
    

    2、打开conf目录下的context.xml。<Context>改为<Context privileged="true">

    <Context privileged="true">
    
        <!-- Default set of monitored resources. If one of these changes, the    -->
        <!-- web application will be reloaded.                                   -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
        <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    
        <!-- Uncomment this to disable session persistence across Tomcat restarts -->
        <!--
        <Manager pathname="" />
        -->
    </Context>
    

    这个时候我们应该已经可以执行CGI了。那我们的python文件放哪儿呢?我们看上面配置的web.xml

    <init-param>
              <param-name>cgiPathPrefix</param-name>
              <param-value>WEB-INF/cgi</param-value>
            </init-param>
    

    可以看到我们要放到WEB-INF/cgi这下面,这个时候目录结构是

    当前目录pwd:       /usr/local/Cellar/tomcat/9.0.19/libexec/webapps/ROOT
    
    ├── WEB-INF
    │   ├── cgi
    │   │   ├── hello.py
    │   └── web.xml
    └── main.html
    

    这个时候我们浏览器输入 http://localhost:8080/cgi-bin/hello.py 就可以看到我们第一个CGI程序,这里给一个最简单的py示例:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    print "Content-type:text/html"
    print                               # 空行,告诉服务器结束头部
    print '<html>'
    print '<head>'
    print '<meta charset="utf-8">'
    print '<title>Hello World - 我的第一个 CGI 程序!</title>'
    print '</head>'
    print '<body>'
    print '<h2>Hello World! 我是来自菜鸟教程的第一CGI程序</h2>'
    print '</body>'
    print '</html>'
    

    如果想展示Html,也就是部署一个静态网页。我们要打开\conf\server.xml
    在Host节点下加这么一段

            <Context path="" docBase="ROOT" debug="0" reloadable="true" crossContext="true"/>
    

    ROOT是存放html文件夹的文件夹,配置结束后是这样子的:

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    
            <!-- SingleSignOn valve, share authentication between web applications
                 Documentation at: /docs/config/valve.html -->
            <!--
            <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
            -->
    
            <!-- Access log processes all example.
                 Documentation at: /docs/config/valve.html
                 Note: The pattern used is equivalent to using pattern="common" -->
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    
            <Context path="" docBase="ROOT" debug="0" reloadable="true" crossContext="true"/>
    
            <!-- <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="tot_log." suffix=".txt" timestamp="true"/> -->
    
          </Host>
    

    我们可以看到appBase="webapps",也就是说我们配置的文件夹是基于webapps的,也就是webapps下的一个文件目录,可以看到我是在ROOT下面做的修改

    ├── WEB-INF
    │   ├── cgi
    │   │   ├── hello.py
    │   └── web.xml
    └── main.html
    

    我们浏览器输入http://localhost:8080/main.html就可以看到网页了。

    相关文章

      网友评论

          本文标题:mac上使用tomcat配置CGI

          本文链接:https://www.haomeiwen.com/subject/ygkoaqtx.html