搭建簡易的c語言CGI和Apache伺服器的開發環境

來源:互聯網
上載者:User

今天中午在研究c語言gui時看到了cgi。之前花了些時間找c語言的gui架構,也找到了幾個暫時比較滿意的,但是看到了cgi後覺得也可以嘗試一下。在web開發方面有點經驗,或許會簡單一些。Google了一下,現在討論cgi,尤其是c語言cgi的話題已經很少了,花了些精力,總算搭建好了一個可用的開發環境,也運行出了程式。下面簡單分享一下,我的實驗過程。其實是很簡單的事情。

首先,需要用到的這些工具和代碼:

  • C語言編譯器,我用了IDE(Vsiual C++ 2008 Express Edition,下面稱VC2008),其他編譯器(gcc、tcc等)也可;
  • Apache伺服器,我用的是USBWebSever中包含的Apache伺服器() ,這是個AMP伺服器套裝,不用安裝即可使用,而本地安裝的Apche伺服器也可以使用;
  • cgic( ),這是用ANSI C寫的一個cgi庫,這裡用它提供的代碼來測試我們的運行環境,其他規範的c代碼也是可以的;

接著,編譯C語言的cgi程式。

在VC2008裡面建一個Visual C++空項目;
從剛才下載的cgic代碼壓縮包中提取cgic.h、cgic.c和cgictest.c三個檔案,添加到建立的項目裡面;
開啟當前項目的屬性頁面(在方案總管右擊項目名稱,選菜單中的屬性),在配置屬性-C/C++-前置處理器中找到前置處理器定義,添加WIN32;
這時可以按F7產生解決方案,VC2008開始編譯代碼和連結,產生可執行檔(.exe)。報出若干警告,忽視之。這樣cgi程式就做好了。

然後,配置和啟動Apache伺服器。

對於本地安裝的Apache服務,需要修改設定檔httpd.conf若干內容(參考文章連結),如下:

ScriptAlias /cgi-bin/ "E:/apache2/Apache2/cgi-bin/"
<Directory "E:/apache2/Apache2/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .exe .pl .cgi

其中E:/apache2/Apache2/cgi-bin/要改成你準備放cgi程式的目錄。修改好httpd.conf後可能需要重啟Apache伺服器。

對USBWebSever,似乎不用修改httpd.conf。如果需要,應該對settings目錄下的httpd.conf類比上面的內容進行修改,文中{rootdir}/cgi-bin/這類文字最好不要修改!修改好以後,雙擊USBWebSever.exe就可以啟動Apache伺服器了。

最後把剛才產生的cgi程式(.exe檔案),複製放到上文中提到的/cgi-bin/目錄下,檔案名稱最好改成index.cgi這樣的形式。對於USBWebSever,cgi-bin目錄應該是root目錄下的cgi-bin目錄(如果沒有要建立一個),不是和USBWebSever在同一目錄下的cgi-bin目錄。我的目錄結構是這樣的

開啟瀏覽器輸入http://localhost:8080/cgi-bin/index.cgi(地址取決於你自己的具體設定),就可以看到cgi程式已經運行了。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.