2012年9月26日 星期三

Perl 教學 -- 安裝

Perl 教學 -- 安裝

This tutorial is copyrighted and provided as is and can be used as supplement to any CGI tutorial materials such as Common Gateway Interface, written by 網際工作室(Internet Studio). You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu
請勿轉貼
看其他教材

我的電腦可以安裝 Perl 嗎?

目前已知可以安裝 Perl 的系統有 Unix(含各式各樣的 Linux 版本;如 FreeBSD、 Debian、Ubuntu 等), OS/2, Mac, Amiga, Win32, etc. DOS 不行。

何處可以取得 Perl?

你可以從所有的 CPAN 網站取得免費的 Perl 軟體。 在台灣, 你可以到 Perl 資源 網站以 取得更進一步的消息。另外,在 Win32 的系統上,本人推薦安裝 ActivePerl,讀者可以 下載其免費的 ActivePerl Community Edition 版。

安裝 Apache 與 Perl 在你的 PC

由於我們希望能藉由 Web 伺服器來執行 perl 程式,因此我們需要先安裝一個 Web 伺服器。目前市佔率最高的 Web 伺服器是 Apache 的 HTTP Server,所以 我們先安裝 Apache 2.2.x 版; 本文假設你的 PC 安裝的作業系統是 Win32 系列(含 XP/Server/Vista/Win7 等), 請至 下載網頁 下載 Win32 Binary including OpenSSL 0.9.8m (MSI Installer);如果你使用的是 其他類的作業系統,請依據必要的程序安裝。基本上,本文介紹的 Perl 語法以及 用法與你使用的作業系統應該無關。 安裝 Apache 的過程中,有幾個地方要注意的:第一,先確認你安裝 Apache 的 電腦是否已經有了註冊過的 hostname(例如,www.nchu.edu.tw);如果有,請 在以下的畫面中的 "Network Domain" 填入 nchu.edu.tw,"Server Name" 填入 www.nchu.edu.tw,以及 "Administrator's Email Address" 填入 一個可以聯絡的到你的 email 帳號。



如果讀者沒有 hostname 的話(大多只是為了學習或者測試的人都沒有),請在 "Network Domain" 填入任意值(不能留空白),在 "Server Name" 填入 localhost,然後就可以按 "Next" 繼續安裝。另外,由於我不太喜歡 預設的安裝位置(路徑名稱太長,而且名稱中含有空格,容易造成不必要的麻煩), 我將其安裝於 e:\apache22,在之後的解說中,我們也是以這個路徑 為主;如果讀者安裝在其他的路徑,請作適當修改。 如果讀者的安裝環境跟我的差不多(沒有 hostname 又安裝了防毒軟體 Kaspersky), 安裝的結果是無法正常的啟動 Apache 的,畫面大概如下所示:



這個畫面說明了兩個問題;第一個是 Apache 無法從剛才輸入的 "Network Domain" 和 "Server Name" 找到適當的 IP。這個問題的解決方式就是手動的修改 Apache 的設定檔 httpd.conf;請再修改前先備份設定檔,以便於改錯的時候, 還可以再來一次。設定檔的鎖在位置在 e:\apache22\conf\httpd.conf, 請依據以下畫面



請將畫面中 #ServerName localhost:80 前的井字號(#)刪除,變成 ServerName localhost:80。第二個問題在於 Apache 試圖跟 IP 位置 0.0.0.0:80 連結卻失敗了;為了解決這個問題,我需要明確在 httpd.conf 中明確告訴 Apache 連結上一個特定的 IP;另外,我也 必須確定防毒軟體是否阻擋了該項連結(Kaspersky 會阻擋,你必須在防火牆的 設定中,在"封包篩選規則"中允許"Localhost Loopback TCP Activity")。 設定檔的修改畫面如下:



請將畫面中 Listen 80 修改成 Listen IP:80,在 IP 的地方放入你電腦的 IP 位置即可。一切修改完成之後,你就可以啟動 Apache 了。啟動的方式可以經由 ApacheMonitor (出現在 XP 右下角) 或者在"命令提示字元"輸入 e:\apache22\bin\httpd -k start 來啟動。在 Apache 成功啟動後,請在瀏覽器內輸入 http://yourip (也就是剛才輸入 Listen 後面的 IP) 你就可以看到如下的畫面;如果沒有,你必須重來一次。
就像之前的建議,我們安裝 ActivePerl Community Edition。ActivePerl 的安裝非常簡單,我們就不再贅述。最後, 為了能讓 Apache 更有效率的執行 perl 程式,我們建議安裝一個 Apache 的 perl 模組 mod_perl。根據 mod_perl 2.0 Win32 Installation Instructions 的說法, 由於我們安裝的 ActivePerl 是 10xx 版(或者 perl 5.10 版),安裝的方式是在 "命令提示字元"內輸入

set PATH=c:\perl\bin;%PATH%
ppm install http://cpan.uwinnipeg.ca/PPMPackages/10xx/mod_perl.ppd


兩行指令;第一個指令在於設定 PATH 環境變數,第二個指令在於安裝 mod_perl 2.0 版。執行後,你會看到如下的畫面:



在安裝的過程中,我們只需要如紅色框框中所顯示的,輸入 mod_perl 的安裝位置; 在我們的範例中,安裝位置在 e:/apache22/modules。安裝完成後, 我們需要對 httpd.conf 進行修改,請將下列兩行敘述加入設定檔:

LoadFile "c:/perl/bin/perl510.dll"
LoadModule perl_module modules/mod_perl.so


另外,為了告訴 Apache 什麼時候需要載入 mod_perl 來處理 perl 程式, 我們必須在 httpd.conf 的最後,加入以下設定:

    <Files ~ "\.(pl)$">
    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    Options +ExecCGI
    PerlOptions +ParseHeaders
</Files>


這項設定明確的告訴 Apache,當使用者要求的 URL 中,最後的副檔名是 .pl, 則該檔案就交給 mod_perl 來處理。 設定檔修改完成後,我們需要重新啟動 Apache。由於安裝的過程,我們安裝 了一些套件,而這些套件又需要某些環境變數的配合,所以如果安裝後,無法正常 使用 Apache + Perl,這時候你可能需要重新開機。

確認你的 Apache + Perl 的安裝

按一下執行看看。如果你依據我們的說明,你應該會看到 一個相同的執行結果。以下是我們第一個 Perl 程式,其程式碼如下:

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html><head><title>My First Perl Program</title></head>\n";
print "<body><h1>Hello World</h1></body></html>\n";


請將該程式碼儲存成一個名為 test.pl 的檔案,並將其放置於 e:/apache22/htdocs 目錄內,然後請在瀏覽器內輸入 http://yourip/test.pl 即可正確執行。

沒有留言:

張貼留言