ASP 原生於 Windows IIS,但若既有系統僅後台使用 ASP、前台靜態化、併發低,將 ASP 移植至 Linux 可發揮 Linux 穩定、資源效率高的優勢。主流方案為 **Apache + mod_perl + Apache::ASP (Perl 實作 ASP 解析器)**。本文記錄完整編譯安裝流程。
perl -MCPAN -e shell
cpan> install CPAN
cpan> install MLDBM
cpan> install MLDBM::Sync
cpan> install Apache::ASP
若 CPAN 安裝失敗 (網路/編譯問題),可下載原始碼包手動編譯:
wget https://search.cpan.org/CPAN/authors/id/D/DM/DMAKI/MLDBM-2.01.tar.gz
wget https://search.cpan.org/CPAN/authors/id/D/DM/DMAKI/MLDBM-Sync-0.30.tar.gz
wget https://search.cpan.org/CPAN/authors/id/J/JO/JOSHUA/Apache-ASP-2.37.tar.gz
# 依序解壓並執行
perl Makefile.PL
make
make test
make install
wget https://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz # 或 2.4.x
tar zxf httpd-2.2.34.tar.gz
cd httpd-2.2.34
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-ssl
make
make install
cd ..
--enable-so 允許動態載入模組 (mod_perl 需要)。
wget https://archive.apache.org/dist/perl/mod_perl-2.0.11.tar.gz
tar zxf mod_perl-2.0.11.tar.gz
cd mod_perl-2.0.11
perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache/bin/apxs EVERYTHING=1
make
make install
cd ..
apxs 是 Apache 擴展工具,mod_perl 編譯需連結 Apache 內建標頭與庫。
編輯 /usr/local/apache/conf/httpd.conf:
# 1. 避開 80 埠 (假設主力是 Nginx 佔 80)
Listen 81
# 2. 文件根目錄指向 Nginx 同目錄 (實現動靜共存)
DocumentRoot "/var/webhosts/htdocs/www"
<Directory "/var/webhosts/htdocs/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 3. 載入 mod_perl 並註冊 ASP 處理器
LoadModule perl_module modules/mod_perl.so
PerlModule Apache::ASP
<Files ~ "\.asp$">
SetHandler perl-script
PerlHandler Apache::ASP
PerlSetVar Global .
PerlSetVar StateDir /tmp/asp
</Files>
關鍵參數**:
Global .:全域變數命名空間。StateDir:Session/狀態儲存目錄,需可寫入。/usr/local/apache/bin/apachectl start
建立測試檔 /var/webhosts/htdocs/www/test.asp:
<% for (1..7) { %>
Size = <%= $_ %><br>
<% } %>
瀏覽 https://server-ip:81/test.asp 應輸出 1-7 字體大小遞增。
| 限制 | 影響 | 對策 |
|---|---|---|
| ASP 內建物件不全 | Server、Response、Request、Application、Session 僅部分支援 | 避免使用 COM 物件、ADODB、FileSystemObject 等 Windows 專屬元件 |
| VBScript 不支援 | 僅支援 PerlScript (語法近 Perl) | 改寫為 PerlScript 或移植邏輯至 PHP/Python |
| 效能較低 | Perl 解析 ASP 比原生 IIS 慢 | 僅用於低併發後台、靜態化前台 |
| 編碼問題 | Big5/GB2312 與 UTF-8 混用亂碼 | 統一 UTF-8,Response.CharSet = "utf-8" |