基於php寫的web伺服器:nanoweb
nanoweb是乙個由php語言寫的web伺服器,這個不是吹的,跟apache/iis一類的web伺服器乙個性質,功能和擴充套件性跟apache絕對有一拼。看看官方的介紹。
官方**:http://nanoweb.si.kz
【介紹】
nonaweb 是乙個由php寫的http伺服器,設計的小巧、安全、容易擴充套件,它很小巧、快速和強壯,它能夠很容易的使用php開發專有的擴充套件。
它的發行完全遵守gnu的公共許可協議。
nanoweb的主要特點:
- 支援http/1.1
- 簡單高效的配置
- 模組化的結構
- 支援fastcgi、cgi和ssi
- 可以構建基於名字和埠的虛擬主機
- 訪問控制列表
- 支援通過htpasswd,mysql,postgresql和ldap的訪問驗證
- 相容apache的日誌記錄格式,或者用mysql來記錄日誌
- 目錄瀏覽
- 支援inetd,通過外部幫助可以支援ssl
- dos的防範
- **伺服器擴充套件
- 支援filters和gzip
- 支援rbl
- 支援擴充套件協議
- 更多...
其實我自己大致看了一下那些模組和幫助手冊,它遠遠支援的不知這些,比如它支援php指令碼、支援url rewrite、虛擬主機等,基本上是乙個比較完善功能的web server。
【安裝】
因為是使用php編寫的,所以基本上是可以執行在任意安裝了php cli的平台,不過目前主要是支援windows和linux(類linux)的系統中,我這裡的例子就是安裝在windows xp sp2 上面。
記得安裝之前必須有php的指令碼引擎,我的指令碼引擎是php 5.2.0,放在 c:/php 目錄下,後面會用到。現在我們用文字編輯工具開啟 install.bat 檔案,能夠看到開頭的部分內容:
@echo off
echo ********************************************
echo * aegis nanoweb installer v1.0 for windows *
echo ********************************************
echo.
set instroot=c:/nanoweb
echo installing in %instroot%
echo.
這個 instroot 就是我們nanoweb的程式安裝目錄,預設是c:/nanoweb目錄,可以自己修改,我這裡就使用預設的目錄。直接執行 install.bat 檔案就開始安裝了,自動會拷貝一些檔案和目錄到 c:/nanoweb 目錄下,結束安裝成功。
【執行】
安裝完成後,現在我們到c:/nanoweb目錄下,能夠看到這麼幾個目錄:log、modules、tmp、www等,檔案有mime.types、modules.conf、nanoweb.bat、nanoweb.conf、nanoweb.php、vhost.conf。
我分別簡單介紹下這幾個檔案,log 目錄是儲存日誌的包括伺服器執行日誌和錯誤日誌,modules是儲存所有nanoweb伺服器用到的模組檔案,tmp是臨時目錄,www目錄下是**主目錄,可以存放各個**,www/default 是預設的**目錄。mime.types是儲存了所有nanoweb支援的mime頭型別,modules.conf檔案是關於各個擴充套件模組的載入配置的,nanoweb.bat 是啟動nanoweb的批處理檔案,nonaweb.conf 是我們nanoweb的主要配置檔案,包括一些基本的配置,nanoweb.php 檔案是我們nanoweb伺服器的核型程式檔案,大概67kb左右,vhost.conf檔案是虛擬主機配置檔案。
現在我們需要啟動我們的nanoweb伺服器,nanoweb主要包括的啟動資訊有:
usage: nanoweb.php [/path/to/nanoweb.conf] [options]
nanoweb supports the following command line options :
--help -h : this help screen
--version -v : show version info
--config=/path/to/nanoweb.conf -c : configuration file
--set-option="optionname=optionvalue" -o : set configuration option
--add-option="optionname=optionvalue" -a : add configuration option
--start-daemon -d : start nanoweb and run in background
--config-test -t : test configuration and exit
--quiet -q : don't send text to console
我們要啟動的話,只需要 c:/php/php.exe c:/nanoweb/nanoweb.php --config=c:/nanoweb.conf 就行了,現在我們先簡單修改一些 nanoweb.bat 檔案,預設的檔案內容:
@echo off
c:/php/php-cli.exe c:/nanoweb/nanoweb.php --config=c:/nanoweb/nanoweb.conf
我用的 php 5.2.0 安裝在 c:/php 目錄下,但是沒有 php-cli.exe ,只有 php.exe,修改這個bat檔案為:
@echo off
c:/php/php.exe c:/nanoweb/nanoweb.php --config=c:/nanoweb/nanoweb.conf
開啟瀏覽器,輸入 http://localhost ,如果能夠順利出現nanoweb 的網頁介面,說明安裝成功,我的就是安裝成功,能夠看到nanoweb的logo。我們自己寫乙個網頁 test.html 放在 c:/nanoweb/www/default 目錄下,內容是:
開啟瀏覽器,輸入 http://localhost/test.html ,順利看到輸出的內容。再來測試一下php支援情況,在 c:/nanoweb/www/default 下建立乙個 test.php 的檔案,輸入**:
<?
echo 'ok';
?>
然後用瀏覽器訪問 http://localhost/test.php,順利看到輸出:ok,成功!
關閉nanoweb也是比較簡單,只需要關閉執行nanoweb的cmd視窗就行了。
【總結】
nanoweb卻是是乙個不錯的web伺服器程式,執行簡單,**量也不大,我個人認為是乙個非常不錯學習web伺服器運作方式的例子,當然,如果實際把nanoweb執行到正常的伺服器中還是有一定的距離,畢竟php只是指令碼語言,很多不可控性,當然,執行在linux下會被執行在windows下更穩定和安全。
學習nanoweb能夠更多的了解php下socket的完美操作和關於一些web伺服器的設計方式,還有就是要知道,php同樣也是強大的,能夠做很多事情,只看你怎麼做,發掘到什麼程度。
自己寫的WEB伺服器
這個平台,可以替代jsp,servlet 這一點和servlet很相似.執行裡,雙擊bin myweb.bat就可以了 擴充套件起來,還是比較容易,至少我覺得是.自己寫幾個在這個平台上跑的小東東.如果你想測試一下.可以點 在根目錄下有乙個index.html檔案,是嚮導,裡面是我實現的幾個小東西.如...
基於TcpListener的web伺服器
上篇文章根據 asp.net 本質論 書上提供的例子,實現了乙個簡單的web伺服器,本篇文章將介紹另一種實現方式 基於tcplistener的web伺服器。命名空間system.net.sockets下的tcplistener類簡化了基於tcp協議的監聽程式。using system using s...
基於TcpListener的web伺服器
上篇文章根據 asp.net 本質論 書上提供的例子,實現了乙個簡單的web伺服器,本篇文章將介紹另一種實現方式 基於tcplistener的web伺服器。命名空間system.net.sockets下的tcplistener類簡化了基於tcp協議的監聽程式。using system using s...