Python+Apache+CGI完全配置


 

(1).Apache安裝

 首先要安裝APR、APR-Util和PCRE。安裝之前,來看下怎么下載它們。先來看下APR與APR-Util的下載,大家可以去http://apr.apache.org進行下載,看下面兩張圖:

  1. Linux系統下Apache2.4.17的安裝過程
    Linux系統下Apache2.4.17的安裝過程
  2.  

    再來看下怎么下載PCRE。大家可以去http://www.pcre.org進行下載,看下面四張圖:

    Linux系統下Apache2.4.17的安裝過程
    Linux系統下Apache2.4.17的安裝過程
    Linux系統下Apache2.4.17的安裝過程
    Linux系統下Apache2.4.17的安裝過程
  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。

    Linux系統下Apache2.4.17的安裝過程
  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。

    Linux系統下Apache2.4.17的安裝過程
  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的時候會看到下圖的錯誤提示。

    Linux系統下Apache2.4.17的安裝過程
  7.  

    下面,我們來安裝PCRE。首先,解包PCRE,並查看/mysoft目錄下的文件,依次執行命令:

    gzip  -d  pcre-8.36.tar.gz

    tar  -xf  pcre-8.36.tar

    ls  -l

    可以看到/mysoft目錄下多了一個目錄pcre-8.36。

    Linux系統下Apache2.4.17的安裝過程
  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

    Linux系統下Apache2.4.17的安裝過程

     

 

至此,准備工作就緒,開始准備安裝Apache Server2.4,首先,來看下怎么下載Apache2.4,我們可以去http://httpd.apache.org進行下載,看下圖。

Linux系統下Apache2.4.17的安裝過程

 

 

  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。

    Linux系統下Apache2.4.17的安裝過程
  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

    Linux系統下Apache2.4.17的安裝過程
  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

    Linux系統下Apache2.4.17的安裝過程
    Linux系統下Apache2.4.17的安裝過程
    Linux系統下Apache2.4.17的安裝過程
  7. 防火牆關閉后,接着來看下你系統的IP地址:ifconfig  -a。可以看到我的IP是192.168.0.104。

    Linux系統下Apache2.4.17的安裝過程
  8. 打開瀏覽器,在地址欄中輸入:192.168.0.104,回車。可以看到It  works!

    Linux系統下Apache2.4.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
<Directory />
     AllowOverride none
     Require all denied
< /Directory >

    將上面的內容全部修改為下面的內容:

1
2
3
4
5
6
<Directory  "/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  '<html>'
print  '<head>'
print  '<title>Hello</title>'
print  '</head>'
print  '<body>'
print  '<h2>Hello Word! This is my first CGI program</h2>'
print  '</body>'
print  '</html>'

    注意#!/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

    

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM