Python+Apache+CGI完全配置

 

(1).Apache安装

 首先要安装APR、APR-Util和PCRE。安装之前,来看下怎么下载它们。先来看下APR与APR-Util的下载,大家可以去http://apr.apache.org进行下载,看下面两张图:

  1. Python+Apache+CGI完全配置_第1张图片
    Python+Apache+CGI完全配置_第2张图片
  2.  

    再来看下怎么下载PCRE。大家可以去http://www.pcre.org进行下载,看下面四张图:

    Python+Apache+CGI完全配置_第3张图片
    Python+Apache+CGI完全配置_第4张图片
    Python+Apache+CGI完全配置_第5张图片
    Python+Apache+CGI完全配置_第6张图片
  3.  

    将下载的3个压缩包上传到你的Linux系统中去。我上传到了我Linux系统下/mysoft目录中。进入这个目录:cd  /mysoft。我们先解包APR,并查看/mysoft目录下的文件,依次执行命令:

    gzip  -d  apr-1.5.2.tar.gz

    tar  -xf  apr-1.5.2.tar

    ls  -l

    可以看到/mysoft目录下多了一个目录apr-1.5.2。

    Python+Apache+CGI完全配置_第7张图片
  4.  

    进入apr-1.5.2目录:cd  ./apr-1.5.2/。然后,进行APR的源码安装,依次执行命令:

    ./configure

    make

    make install

    安装完成后,我们可以在make install过程中看到如下图所示信息,我们可以看到APR的安装路径/usr/local/apr。当然,你也可以使用  --prefix=目录  选项来指定一个安装目录。

    Linux系统下Apache2.4.17的安装过程
  5.  

    接着,我们来解包APR-Util,并查看/mysoft目录下的文件,依次执行命令:

    gzip  -d  apr-util-1.5.4.tar.gz

    tar  -xf  apr-util-1.5.4.tar

    ls  -l

    可以看到/mysoft目录下多了一个目录apr-util-1.5.4。

    Python+Apache+CGI完全配置_第8张图片
  6.  

    进入apr-util-1.5.4目录:cd  ./apr-util-1.5.4/。然后,进行APR-Util的源码安装,依次执行命令:

    ./configure  --with-apr=/usr/local/apr

    make

    make install

    在安装APR-Util时,需要指定APR的安装路径,所以需要带上选项--with-apr=/usr/local/apr,如果你不带上这个选项,在configure的时候会看到下图的错误提示。

    Python+Apache+CGI完全配置_第9张图片
  7.  

    下面,我们来安装PCRE。首先,解包PCRE,并查看/mysoft目录下的文件,依次执行命令:

    gzip  -d  pcre-8.36.tar.gz

    tar  -xf  pcre-8.36.tar

    ls  -l

    可以看到/mysoft目录下多了一个目录pcre-8.36。

    Python+Apache+CGI完全配置_第10张图片
  8.  

    进入pcre-8.36目录:cd  ./pcre-8.36/。然后,进行pcre-8.36源码安装,但是,当你在执行./configure时,会看到下图所示提示:

    configure: error: You need a C++ compiler for C++ support

    不用担心,yum又派上用场了,执行命令:yum  install  -y  gcc  gcc-c++ 。

    gcc-c++安装完成后,我们继续我们的pcre-8.36源码安装,依次执行命令:

    ./configure

    make

    make  install

    Python+Apache+CGI完全配置_第11张图片

     

 

至此,准备工作就绪,开始准备安装Apache Server2.4,首先,来看下怎么下载Apache2.4,我们可以去http://httpd.apache.org进行下载,看下图。

Python+Apache+CGI完全配置_第12张图片

 

 

  1. 解包httpd,并查看/mysoft目录下的文件,依次执行命令:

    gzip  -d  httpd-2.4.17.tar.gz

    tar  -xf  httpd-2.4.17.tar

    ls  -l

    可以看到/mysoft目录下多了一个目录httpd-2.4.17。

    Python+Apache+CGI完全配置_第13张图片
  2. 进入httpd-2.4.17目录:cd  ./httpd-2.4.17/。然后,进行Apache源码安装,依次执行命令:

    ./configure  --enable-mods-shared=all

    make

    make  install

    Apache默认安装在/usr/local/apache2目录下。同样,这里你也可以使用

    --prefix=目录名

    来指定一个安装目录,例如:

    ./configure  --prefix=/usr/mydir  --enable-mods-shared=all

    Python+Apache+CGI完全配置_第14张图片
  3. Apache已经安装成功,现在启动httpd服务。执行命令:

    /usr/local/apache2/bin/apachectl  -k  start。

    大家会发现,httpd服务并没有启动,而是出现了一条如下图所示的错误信息:

    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

    Linux系统下Apache2.4.17的安装过程
  4. 出现上述错误信息,是因为配置文件httpd.conf中的ServerName没有修改。

    我们用Vim打开httpd.conf配置文件,执行命令:

    vi  /usr/local/apache2/conf/httpd.conf

    设置Vim在执行搜索时不区分大小写,执行命令:

    :set ic

    搜索"servername"字符串,执行命令:

    /servername

    找到servername后,按A键进行编辑。将ServerName前的#号去掉,将ServerName后面的字符串改为:localhost:80,如下图所示。

    修改完成后,按Esc键由编辑模式切换到命令模式,然后执行保存退出命令:

    :wq

    Linux系统下Apache2.4.17的安装过程
  5. 在启动httpd之前,我们先为其创建一个软链接(相当于windows下的快捷方式),否则每次重启Apache都要输那么一长串,很费劲。

    为httpd创建软链接,并查看一下软链接是否创建成功,依次执行命令:

    ln  -s  /usr/local/apache2/bin/apachectl  /mylinks/httpd。

    ls  -l  /mylinks

    来吧,启动httpd服务,执行命令:/mylinks/httpd  -k  start

    Linux系统下Apache2.4.17的安装过程
  6. 在测试Apache是否已经正常工作之前,我们先看下防火墙的状态:

    systemctl  status  firewalld

    如果处于running运行状态,就把它关掉:

    systemctl  stop  firewalld

    然后,查看一下防火墙是否已经关掉:

    systemctl  status  firewalld

    如果处于dead状态,就说明已经关掉了。

    如果你希望每次系统启动的时候都不要启动防火墙,可以执行命令:

    systemctl  disable  firewalld

    同样,如果你希望每次系统启动的时候都启动防火墙,可以执行命令:

    systemctl  enable  firewalld

    Python+Apache+CGI完全配置_第15张图片
    Linux系统下Apache2.4.17的安装过程
    Linux系统下Apache2.4.17的安装过程
  7. 防火墙关闭后,接着来看下你系统的IP地址:ifconfig  -a。可以看到我的IP是192.168.0.104。

    Python+Apache+CGI完全配置_第16张图片
  8. 打开浏览器,在地址栏中输入:192.168.0.104,回车。可以看到It  works!

    Python+Apache+CGI完全配置_第17张图片

(2)、CGI配置

 

    Apache支持CGI配置,下面就来详细说明配置的过程。

    找到安装Apache的目录/usr/local/apache2/conf,并对httpd.conf配置文件进行修改,如下面的说明:

 

(1)加载cgi模块
    大概在httpd.conf的137行:

1
#LoadModule cgid_module modules/mod_cgid.so

    去掉注释:

1
LoadModule cgid_module modules /mod_cgid .so


(2)设置cgi脚本文件路径
    大概在httpd.conf的329行:

1
ScriptAlias  /cgi-bin/  "/usr/local/apache2/cgi-bin/"

    可以看到apache将"/usr/local/apache2/cgi-bin/"映射为/cgi-bin/,即当你通过浏览器访问/cgi-bin/目录时,实际上就是访问"/usr/local/apache2/cgi-bin/"目录,为了方便,我将其设置为如下:

1
ScriptAlias  /cgi-bin/  /home/xpleaf/Source_Code/cgi_for_py/

    注意这里路径末尾一定要加/,否则apache是无法打到该路径下的文件的。

(3)设置cgi路径的访问权限
    大概在httpd.conf195行:

1
2
3
4
     AllowOverride none
     Require all denied
< /Directory >

    将上面的内容全部修改为下面的内容:

1
2
3
4
5
6
"/home/xpleaf/Source_Code/cgi_for_py/" >
    AllowOverride None
    Options +ExecCGI
    Order allow,deny
    Allow from all
< /Directory >

    注意这里的目录是修改为前面我们改的:/home/xpleaf/Source_Code/cgi_for_py/

    这样的修改是有原因的,如果没有在这里设置权限,当你在浏览器中访问你的cgi脚本文件时,得到的可能是这样的提示:

Forbidden
You don't have permission to access /cgi-bin/hello.py on this server.

(4)设置apache可解释python的cgi脚本文件
    大概在httpd.conf的386行:

1
#AddHandler cgi-script .cgi

    去掉注释,将其修改为:

1
AddHandler cgi-script .cgi .py

    加上.py后,就可以解释python的脚本文件了,如果你需要解释shell的脚本文件,可以添加.pl,其它的类似。

 

    OK,完成上面的4步之后,CGI配置就算完成了。不过在配置完成之后,我们需要重启一下Apache服务:

1
2
xpleaf@leaf: /usr/local/apache2/conf sudo  /usr/local/apache2/bin/apachectl  restart
AH00558: httpd: Could not reliably determine the server 's fully qualified domain name, using 127.0.1.1. Set the ' ServerName' directive globally to suppress this message

 


 

(3)、添加CGI脚本文件

 

(1)创建cgi脚本文件

    在/home/xpleaf/Source_Code/cgi_for_py/目录下添加下面一个文件,并命名为hello.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
 
print  "Content-type:text/html"
print
print  ''
print  ''
print  'Hello'
print  ''
print  ''
print  '

Hello Word! This is my first CGI program

'
print  ''
print  ''

    注意#!/usr/bin/env python一定要加上,否则会出现500错误提示。   

 

(2)设置cgi脚本文件的文件权限为755    

1
2
3
xpleaf@leaf:~ /Source_Code/cgi_for_py chmod  755 hello.py
xpleaf@leaf:~ /Source_Code/cgi_for_py ls  -l hello.py
-rwxr-xr-x 1 xpleaf xpleaf 289  1月 31 16:02 hello.py

    此步非常非常重要,如果忘记这步,无论你怎么找配置文件也找不出错误,就算看代码也不会发现有错误,然后通过浏览器访问时会一直显示500错误,所以一定要记得该步操作!    

 


 

(4)、通过浏览器访问cgi脚本文件

浏览器中输入 服务器地址/cgi-bin/hello.py

    

 

 

  

你可能感兴趣的:(Python+Apache+CGI完全配置)