原創 基於PHP寫的Web伺服器 Nanoweb

2021-04-12 13:17:29 字數 3828 閱讀 5748

基於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...