Sun Java System Web Server 7.0 管理員指南

配置 Web Server 的 FastCGI 外掛程式

FastCGI 外掛程式隨附於 Web Server 7.0。外掛程式安裝在以下位置:

32 位元的 FastCGI 外掛程式二進位檔安裝在 <install_dir>/plugins/fastcgi 目錄下。

64 位元的 Solaris SPARC FastCGI 外掛程式二進位檔安裝在 <install_dir>/lib/plugins/fastcgi/64 目錄下。

將安裝下列 FastCGI 二進位檔:

libfastcgi.so (適用於 Solaris/Linux)

fastcgi.dll(適用於 Windows)

Fastcgistub.exe(適用於 Windows)

libfastcgi.sl(適用於 HP-UX)

Fastcgistub(可執行檔)

配置 FastCGI 外掛程式時,需使用位於 <instance-dir>/config 目錄下的 Web Server 配置檔案。若要配置 FastCGI 外掛程式,請執行下列步驟:

修改 magnus.conf

使用「load-modules」Init 函數載入 FastCGI 外掛程式共用程式庫。

Init fn=flex-init access="access" format.access="%Ses->client.ip%
- %Req->vars.auth-user% [%SYSDATE%] \"%Req->reqpb.clf-request%\"
%Req->srvhdrs.clf-status% %Req->srvhdrs.content-length%"

Init fn="load-modules" shlib="libJava EEplugin.so" shlib_flags="(global|now)"

Init fn="load-modules" shlib="libfastcgi.so" shlib_flags="(global|now)"

修改 MIME 類型 (可選擇)

編輯 mime.types 檔案以指定 MIME 對映。修改 MIME 類型對映是可選步驟。

例如,

#--Sun Microsystems Inc. MIME 資訊

# 請勿刪除上一行。該行用於識別檔案類型。

#

# Copyright 2006 Sun Microsystems, Inc. 版權所有。

# 使用應遵守授權合約的條款。

#


type=application/octet-stream exts=bin

type=application/astound exts=asd,asn

...

...

type=magnus-internal/fastcgi exts=php

...

...

修改 obj.conf

編輯 obj.conf 檔案,以使用之前各節所述的外掛程式 SAF,來配置 FastCGI 特有的請求。

修改後的 obj.conf 檔案範例如下所示:

#

# Copyright 2006 Sun Microsystems, Inc. 版權所有。

# 使用應遵守授權合約的條款。

#


# 您可以編輯此檔案,但如果使用管理 GUI 或 CLI,

# 註釋和格式變更可能會遺失。



<object name = "default">

		AuthTrans fn="match-browser" browser="*MSIE*" 
						ssl-unclean-shutdown="true"
		NameTrans fn="ntrans-Java EE" name="Java EE"
		NameTrans fn="pfx2dir" from="/mc-icons" 
						dir="/ws7/lib/icons" name="es-internal"
		NameTrans fn="assign-name" from="/fcgi/*" name="fcgi.config"

</object>

<Object name="fcgi.config">

		AuthTrans fn="auth-fastcgi" app-path="/fastcgi/apps/c/simpleAuth" 
				bind-path="localhost:2111"
		Service fn="responder-fastcgi" 
						app-path="/fastcgi_enabled_php_installation_dir/bin/php" 
				app-env="name1=abc"

</object>
...

請注意,針對不同的 URL 式樣定義不同的物件或將 SAF 對映至不同的 MIME 類型,便可以不同的方式呼叫 FastCGI SAF。

如需有關 obj.conf 配置及語法的更多資訊,請參閱「Administration Configuration File Reference Guide」。

FastCGI 外掛程式疑難排解

Fastcgistub 是一個程序管理程式,用於管理 FastCGI 應用程式程序的生命週期。Fastcgistub 將其訊息記錄至 Web Server 暫存目錄下的 Fastcgistub.log 檔案中。發生任何錯誤時,檢查此檔案有助於消除問題。

問題:FastCGI 請求未得到處理

可能的原因及解決方案如下:

  1. 請檢查是否載入 FastCGI 外掛程式。如果在啟動 Web Server 期間出現下列訊息,則表示已成功載入外掛程式。另外,請檢查 magnus.conf 中外掛程式程式庫的路徑: FCGI1000: Sun Java System Web Server 7.0 FastCGI NSAPI Plugin < build info>

  2. 請檢查在 obj.conf 中是否正確指定請求對映。如需有關 obj.conf 檔案的更多資訊,請參閱「Sun Java System Web Server Administrator's Configuration Reference File」。

  3. 請檢查錯誤記錄中的任何可能錯誤訊息。

  4. 請檢查 stub 二進位檔及 FastCGI 應用程式的權限。如果未授予足夠的權限,則外掛程式將無法啟動 stub 或應用程式。有關

  5. 請檢查 Fastcgistub.log 檔案中有關 stub 端的任何可能錯誤。

  6. 如果可能,請以獨立模式執行 FastCGI 應用程式,檢查該應用程式是否能夠正確無誤地執行。

如果丟出任何程式庫相依性錯誤,請在 obj.conf 中將 LD_LIBRARY_PATH 指定為 app-env 參數,且參數具有 LD_LIBRARY_PATH=<>相依性程式庫路徑值。

問題:FastCGI 應用程式未啟動。

可能的原因及解決方案如下:

請檢查 Fastcgistub.log 檔案中的下列記錄訊息:

..
<pid> process startup failure, trying to restart
...
Even after trying <n> time(s), <application path> process failed to start...no more retries

啟動失敗的原因之ㄧ可能是由於無法載入相依性程式庫。此問題可透過以下方式解決:將適當的程式庫路徑當成 app-env 參數值,指定給 obj.conf 檔案中配置的 FastCGI 應用程式。例如︰


Service fn="responder_fastcgi" app-path="/fastcgi/c/tux-app" bind-path="localhost:2112" 
app-env="LD_LIBRARY_PATH=/tuxedo/lib"

開發 FastCGI 應用程式

您可以使用 Perl、PHP、C 和 Java 開發 FastCGI 應用程式。下列小節簡要說明使用一些常用程式設計語言開發應用程式的程序。

Procedure執行 FastCGI 應用程式

  1. 停止 Web Server。

  2. 重新啟動 Web Server。

  3. 存取以「fcgi」做為應用程式根的應用程式。

    例如:http://localhost/fcgi/ListDir.php

FastCGI 應用程式結構

一般 FastCGI 應用程式具有以下程式碼結構:

Initialization code

Start of response loop
		body of response loop
End of response loop

初始化程式碼僅在應用程式初始化時執行一次。初始化程式碼通常執行一些耗時作業,例如開啟資料庫或者計算表格或點陣圖的值。將 CGI 程式轉換為 FastCGI 程式的主要作業,是區分初始化程式碼與針對每個請求都需要執行的程式碼。

回應迴圈會持續執行,等待用戶端請求到達。迴圈以呼叫 FCGI_Accept (FastCGI 程式庫中的常式) 開頭。FCGI_Accept 常式將封鎖程式執行,直到用戶端請求 FastCGI 應用程式為止。收到用戶端請求時,FCGI_Accept 將解除封鎖、執行回應迴圈主體的一次重複運算,之後再次封鎖,等待另一個用戶端請求。僅當系統管理員或 Web Server 終止 FastCGI 應用程式時,該迴圈才會終止。

使用 Perl

從 CPAN 下載並安裝最新的 FCGI 模組。以 ActivePerl 而言,您可以從 http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/Zips 下載模組。

如需有關使用 Perl 撰寫 FastCGI 應用程式的更多資訊,請參閱 http://www.fastcgi.com/devkit/fastcgi-prog-guide/ch3perl.htm#3659

使用 PHP

從 PHP 4.3.0 開始,FastCGI 成為 PHP 引擎支援的配置。若要編譯支援 FastCGI 之 PHP 4.3.x 或更高版本的引擎,請將配置切換 --enable-fastcgi 納入建立程序,例如


./configure <other-options> --enable-fastcgi
gmake

編譯完成後,php 二進位檔將啟用 FastCGI。

當使用 PHP 版本 5.1.2 或舊版 (包括 PHP 4.x) 時,應使用 host:port 格式配置 FastCGI 外掛程式。例如,bind-path = “localhost:3333”。

對於 PHP 版本 5.1.3 及更高版本,bind-path 是可選擇的。如果已指定,則不應使用「host:port」格式。它可以是一個字串。例如,bind-path = “myphpbindpath”。

使用 C/Java

FastCGI 開發工具組提供撰寫 FastCGI C/Java 應用程式的 API。您可以從 http://www.fastcgi.com/devkit/doc/fcgi-devel-kit.htm 下載此工具組。

若要建立下載的 FastCGI 開發套件,請執行下列步驟:

  1. 解壓縮 tar 檔案。此動作將建立名為 fcgi-devel-kit 的新目錄

  2. fcgi-devel-kit 目錄中執行此指令序列:

    1. ./configure

    2. make

如需有關使用 C 撰寫 FastCGI 應用程式的更多資訊,請參閱 http://www.fastcgi.com/devkit/doc/fcgi-devel-kit.htm#S3

如需有關使用 Java 撰寫 FastCGI 應用程式的更多資訊,請參閱 http://www.fastcgi.com/devkit/doc/fcgi-java.htm