`

[原创]基于PHP写的Web服务器:Nanoweb

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

基于PHP写的Web服务器:Nanoweb

作者:heiyeluren
博客:
http://blog.csdn.net/heiyeshuwu
时间:2006-11-20

Nanoweb 是一个由PHP语言写的Web服务器,这个不是吹的,跟Apache/IIS一类的Web服务器一个性质,功能和扩展性跟Apache绝对有一拼。看看官方的介绍。

官方网站:http://nanoweb.si.kz
最新版本:nanoweb 2.2.8
下载地址:http://nanoweb.si.kz/downloads/dist/nanoweb_2.2.8.zip


【介绍】

官方网站介绍:

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 上面。

先去官方网站把程序下载回来,可以下载zip包或者tgz包都行,里面的文件是一样的。文章上面提供了下载地址,我下载的就是zip包。下载后解压缩后,能够看到若干目录,包括 conf、contrib、docs、modules、src、www 等,docs是文档目录,文档都在里面,另外根目录下install.bat和install-sh两个文件,这是安装文件,安装在windows下使用install.bat,如果是Linux就使用install-sh文件。

记得安装之前必须有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

现在就能够启动了,现在开始启动我们的Nanoweb,直接执行 nanoweb.bat 文件,出现一个command的窗口界面,同时有很多输出信息,提示: pcntl_fork和posix_setuid不能使用,当e/然了,这个是Windows系统嘛,其他貌似都正常,现在我们来访问一下。(记得启动之前关闭其他占用80端口的Web服务器程序,比如IIS、Apache之类的)

打开浏览器,输入 http://localhost ,如果能够顺利出现Nanoweb 的网页界面,说明安装成功,我的就是安装成功,能够看到Nanoweb的Logo。我们自己写一个网页 test.html 放在 c:/nanoweb/www/default 目录下,内容是:

welcome to heiyeluren's world!

打开浏览器,输入 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同样也是强大的,能够做很多事情,只看你怎么做,发掘到什么程度。




分享到:
评论

相关推荐

    php写的web服务器nanoweb

    php写的web服务器,支持phpFastcgi,更多扩展

    Nano:Nano是一个微型Web框架,用于为.NET构建基于Web的HTTP服务和网站

    奈米 AppVeyor(Windows): Travis CI(Linux): Nano是一个.NET跨平台微型Web框架,用于构建基于Web的HTTP服务和网站。 通过编写静态方法快速创建Web API 典礼,使您可以专注于业务逻辑,而不必关注基础架构和...

    NanoWeb

    纳米网

    NanoWeb-开源

    这是适用于 Windows 的 NanoWeb 网络浏览器。

    鸡国大冒险运行程序,点开即用

    基于Python+Flask的安全多方计算的隐私保护系统设计与实现+全部资料齐全+部署文档.zip

    【资源说明】 基于Python+Flask的安全多方计算的隐私保护系统设计与实现+全部资料齐全+部署文档.zip基于Python+Flask的安全多方计算的隐私保护系统设计与实现+全部资料齐全+部署文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    聊天系统(java+applet).zip

    聊天系统(java+applet)

    setuptools-11.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip

    基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip基于UCI Heart Disease数据集的心脏病分析python源码+数据集+演示ppt+详细资料.zip

    setuptools-1.3.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    setuptools-40.3.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    公开整理-各省碳排放数据集(1990-2022年).xlsx

    详细介绍及样例数据:https://blog.csdn.net/li514006030/article/details/138872006

    基于Java的两个通用安全模块的设计与实现.zip

    基于Java的两个通用安全模块的设计与实现

    setuptools-14.1.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    华为-智慧园区数字平台技术qytp.pptx

    华为-智慧园区数字平台技术qytp.pptx

    30个Python游戏源码

    30个Python游戏源码

    基于python深度度量学习准确预测蛋白质二级结构源码.zip

    基于python深度度量学习准确预测蛋白质二级结构源码.zip基于python深度度量学习准确预测蛋白质二级结构源码.zip基于python深度度量学习准确预测蛋白质二级结构源码.zip基于python深度度量学习准确预测蛋白质二级结构源码.zip基于python深度度量学习准确预测蛋白质二级结构源码.zip基于python深度度量学习准确预测蛋白质二级结构源码.zip基于python深度度量学习准确预测蛋白质二级结构源码.zip基于python深度度量学习准确预测蛋白质二级结构源码.zip

    基于单片机的语音存储与重放系统.zip

    基于单片机的系统

    Java项目之jspm房屋租赁系统(源码 + 说明文档)

    Java项目之jspm房屋租赁系统(源码 + 说明文档) 2开发技术介绍 6 2.1B/S架构 6 2.2Java技术 6 2.3MySQL介绍 6 2.4MySQL环境配置 7 2.5JSP技术介绍 7 3系统分析 8 3.1可行性分析 8 3.1.1技术可行性 8 3.1.2经济可行性 8 3.1.3操作可行性 8 3.1.4运行可行性 9 3.2系统性能需求分析 9 3.3系统功能分析 9 3.4系统流程的分析 10 3.4.1用户管理的流程 11 3.4.2个人中心管理流程 12 3.4.3登录流程 12 4系统设计 13 4.1软件功能模块设计 13 4.2数据库设计与实现 13 4.2.1概念模型设计 13 4.2.2物理模型设计 15 5系统详细设计 22 5.1系统功能模块 22 5.2管理员功能模块 23 5.3租客功能模块 27 6系统测试 28 7总结与心得体会 29 7.1总结 29 7.2心得体会 29

    小红书-课程网盘链接提取码下载 (2).txt

    小红书-课程网盘链接提取码下载 (2).txt

Global site tag (gtag.js) - Google Analytics