zoukankan      html  css  js  c++  java
  • 有电脑就能做网站,赶紧行动起来吧

    文章更新于:2020-03-05
    本文默认你安装过 python 和 配置过 web 环境了

    注1:安装 python 参见: python 的安装使用和基本语法
    注2:配置 web 环境参见: Windows&linux使用集成环境搭建 web 服务器
    注3:linux 配置 CGI参见:linux 配置 python3 CGI
    注4:更多 CGI 配置参见:python CGI 编程实践

    一、修改配置文件

    学了 python 以后光想耍两招儿?各位煤老板,来吧!用 python 写个网页程序,炫酷!

    1、修改 ScriptAlias

     ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
    

    ScriptAlias指令使Apache允许执行一个特定目录中的CGI程序。当客户端请求此特定目录中的资源时,Apache假定其中所有的文件都是CGI程序并试图运行它。

    说白了就是这行代码指定了你网站 CGI 程序的存放位置。


    #1、那什么是 CGI 程序?

    CGI 程序就是说这玩意不是简单的 HTML 静态页面,而是将请求发送给这个程序,然后由这个程序处理之后再返回响应信息给服务器,服务器在将返回值作为 HTML 返回。


    #2、那各位煤老板看到这就要问了,那为什么需要这玩意?

    因为这玩意处理能力比较强大,就比如说今天我们配置的 python-cgi 环境就是其中一种。


    #3、那煤老板又有疑问了,那服务器怎么知道哪些需要这样处理?

    好办,上面那一行代码就是处理这个问题的。

    上面代码定义了一个 /cgi-bin/ 目录,

    也就是说,访问 x.x.x.x/cgi-bin/ 后面的所有页面都当成 CGI 程序进行处理。

    而且这个 /cgi-bin/ 后面实际指向 “${SRVROOT}/cgi-bin/” 目录。

    比如访问 localhost/cgi-bin/hello.py 实际访问的是 localhost 主机下的 ${SRVROO}/cgi-bin/hello.py 文件。


    #4、${SRVROOT} 是什么东西?

    ${SRVROOT} 是 Apache 的安装路径,用到这个地址的时候写这个变量就可以了。如下图,这个在配置文件中定义着。


    段一图一修改scriptalias

    2、补充知识点!重要!

    注1:修改过ScriptAlias以后不需要其他处理,即可在该目录下运行CGI程序。

    注2:不但是这样此目录下的所有文件都会被当做CGI程序处理,如果你放一个HTML文件进去,访问的时候是会出错的。

    注3:那有没有折中的办法呢?有。在主配置文件中建立对应的目录,并AddHandler如下图所示,即可只处理该目录下 .py结尾的文件,而其他文件正常处理。

    段一图二更改配置文件

    二、写 CGI 程序

    1、尝试用 python 写一个 CGI 程序

    #1、在我们设置到的 cgi-bin 目录下建立一个 .py 的文件,并写入内容。

    其中第一行用来指定此文件的解释器,也就是 python.exe 的位置。

    第二行输出空行告诉服务器头部信息结束,下面的是正文。
    段二图一写CGI程序
    #2、浏览器尝试访问

    段二图二访问正常
    #3、注意解析器必须指定到 /python.exe ,第二行必须输出空行,不然会出现如下错误:

    段二图三500错误

    2、尝试将 cgi-bin/ 换成其他字符

    #1、修改配置文件,比如我们将 cgi-bin 换成 python ,并指定路径到 c: est

    并在其目录下写一个 world.py 的CGI程序。

    段二图四更改配置

    #2、访问一下~ ok,shit!居然没权限了!!
    段二图五没权限了
    #3、原来是咱跑太远了,人家不认了。不过也好办,看

    段二图六更改配置

    #4、重启服务,重新访问一下

    段二图七

    三、Enjoy!

  • 相关阅读:
    Nginx浅谈
    MySQL 规范
    使用nginx反向代理实现隐藏端口号
    -bash: /etc/profile: line 11: syntax error near unexpected token `$'{ ''报错问题解决
    为什么禁止在 foreach 循环里进行元素的 remove/add 操作
    Java中String字符串常量池
    前端学习路径
    Linux关闭防火墙命令
    CXF实现webService服务
    Jquery Ajax 的例子。
  • 原文地址:https://www.cnblogs.com/amnotgcs/p/12694371.html
Copyright © 2011-2022 走看看