2014-05-04 49 views
-1

我有一個在php codeigniter框架中創建的應用程序和一個運行在apache web服務器(xampp安裝)上的mysql數據庫。fastreport cgi wrapper的問題

我的FastReport知道,有通過網絡提供報告的方法有兩種:

  1. 使用它的HTTP服務器作爲Web服務器來服務報告

  2. 使用CGI包裝,你可以使用一個不同的網絡服務器(IIS/Apache)以服務報告與從CGI垃圾箱運行的快速報告應用程序

問題是我希望使用CGI包裝方法服務報告,因爲我已經有一個Web服務器的Apache,但我不知道如何去做。

任何人都有使用fastreport CGI包裝的經驗嗎?

回答

2

我自己並沒有使用Fast Report web服務器,但對於我自己的Delphi/Free Pascal HTTP服務器應用程序,我使用Apache作爲反向代理。

CGI將爲每個傳入的HTTP請求啓動Delphi應用程序,導致比使用FastReport HTTP服務器更多的服務器資源負載。

將Apache配置爲reverse proxy相當簡單。然後,您可以啓動Fast report HTTP服務器(位於同一個網絡/同一臺服務器上),並且所有傳入的HTTP請求都將從Apache路由到FastReport服務器。安全注意事項:使用ProxyRequests off來確保外部ProxyRequests不被允許。

反向代理(httpd.conf文件)基本例如

LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so 

ProxyRequests off 

ProxyPass/http://127.0.0.1:8097/ 
ProxyPassReverse/http://127.0.0.1:8097/ 

這是不是與FastReport的測試,如果服務器已經需要服務器內容的根路徑(/)上快速報告網絡服務器可能需要使用不同的資源路徑,例如http://127.0.0.1:8097/reports/以允許爲其他現有內容提供服務。

+0

感謝您的意見,幫助我指出了正確的方向。 – KE50

1

終於搞定了;

解決方案:

  1. 用於啓動和停止FastReport的HTTP服務器
  2. 設置config.xml文件時要小心創建TServiceApplication,端口設置爲8097 (默認備用端口服務器)
  3. 創建報告模板(.fr3)並將它們放置在您的報告文件夾中(根據您的設置)
  4. 創建index.html文件(主頁)並將其放置在htdocs文件夾中(根據您的設置)
  5. 第一次測試 - 測試應用程序是否使用http服務器,即使用您的瀏覽器轉到位置服務器:8097/index.html(localhost:8097/index。html)並確保您可以看到主頁

// --------------------------------- --------------------

設置CGI

a。配置Apache以使用cgi bin。將以下內容複製到httppd.conf文件中,然後重新啓動Apache服務

ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/" 

<Directory "C:/xampp/cgi-bin/"> 
AllowOverride None 
Options ExecCGI 
Order allow,deny 
Allow from all 
</Directory> 

AddHandler cgi-script .cgi .dll .pl .exe 

b。從快速報告站點提供的演示中,將cgi文件夾的內容複製到apache的cgi-bin文件夾中。c。 第二個測試 - 測試您是否可以將位置

服務器/ cgi-bin目錄/ fastreport.exe(本地主機/ cgi-bin目錄/ fastreport.exe)後,看到首頁

注:

無論您使用的是直接選項還是CGI選項,您都必須使用fastreport http服務器。

+0

對我來說,配置看起來像Apache調用CGI,後者又調用8097端口上的FastReport HTTP服務器。相當多的繞道,因爲Apache可以僅僅向8097「轉發」(代理)請求,跳過整個CGI部分...: ) – mjn

+0

這正是發生的事情。 – KE50