Ouistiti (ˈ wistiti)是Marmoset的法国名称,这是新世界的小猴子。
OUISTITI是一个小型Web服务器,可管理和配置小型设备。它允许在文档, WebSocket , REST API等上创建一个统一的Web界面,以进行安全性。
OUISTITI专门用于嵌入到设备上,以从Web服务器进行控制。
使用OUISTITI ,所有页面,Websockets,脚本都以相同的方式保护。通过您的自我管理身份验证是没有用的。
TLS/SSL连接可作为带有MBEDTL或OPENSL库的模块提供。
身份验证可在所有客户端连接上可用。用户的密码可以用于存储。支持以下挑战:
一个模块在HTTP套接字客户端和UNIX套接字之间构建Websocket桥。它能够管理握手和数据传输到您的应用程序。您可以在UNIX插座上开发cammands的服务器, Ouistiti使用HTTPS连接及其身份验证门保护它。您可以找到服务器的示例:
像Websocket一样, Ouistiti能够保护您的流服务器。您的应用程序只能在UNIX插座上发送数据,其余的Ouistiti都会完成。
像任何Web服务器一样, Ouistiti可以将任何类型的文件发送给您的客户端。与此同时,它可以在您的服务器上管理它们:
可以从客户端调用CGI脚本。
某些URI必须在另一个URI上重定向。该模块仅使用配置文件来做到这一点。
服务器可能以IP地址的黑名单和白名单开头。
服务器存储到数据库中的URI访问规则。规则是用户的“角色”,请求类型和在URI上表达式的组合。在身份验证后和访问Ressource之前,请检查每个请求。
该模块包含其自己的RESTAPI来设置数据库,并使用身份验证模块进行权利检查。
该模块能够在打开的套接字和UNIX套接字服务器之间升级连接和传输数据。
UNIX服务器可以在插座上发送并接收任何类型的数据。它允许重复使用不安全的服务器,并使用诸如身份验证和TLS连接之类的HTTP功能。
它已将其关闭到Websocket模块,但对于通过HTTP的某些协议可能很有用。
该模块运行Python解释器来调用脚本。当前,此模块正在登台,并希望运行Django站点。
OUISTITI可能仅使用一个过程来管理客户连接,以成为最快的Web服务器。或者它可能会为每个客户连接创建一个独立过程,以创建一个围绕它的沙盒。
OUISTITI写成是在最大系统上构建的。该代码为C99符合C99,可以禁用线程,并且可以从内存中加载配置。
Ouistiti建立在libhttpserver库上。该库包含HTTP解析器,插座的管理和一些通用模块。
该项目可在GitHub上找到
当图书馆的来源可在Ouistiti项目中获得时,可以将libhttpserver重命名为libouistiti 。
Libb64项目是必不可少的。该来源可在Ouistiti-Project或Ouistiti项目中找到。
SSL/TLS支持可以由几个库提供:
对于使用客户端的身份验证对话框,可以使用MD5算法对密码进行加密(这是不安全的,但至少对于基本和消化验证是必须的)。如果不可用SSL/TLS,则必须为身份验证模块进行一个MD5库:
OUISTITI可能不使用Pthread库,这取决于配置。但是有些工具可能会使用诸如WebSocket服务器之类的Pthread库。
Ouistiti使用libconfig库来设置服务器和不同的模块。
文档:mod_auth
第一个版本在Linux和Windows上运行。目前,仅测试了Linux版本。
第一步下载源树。
$ git clone https://github.com/ouistiti-project/ouistiti和libhttpserver项目
$ git clone https://github.com/ouistiti-project/libhttpserver有两种构建方法:
该项目使用Makemore来构建所有二进制文件。
makemore包含一个gnumake文件和配置脚本。该脚本用于从default.config文件编写配置文件。使用配置,您可以选择“安装目录”和要构建的零件。
$ ./configure --prefix=/usr --libdir=/usr/lib/ouistiti --sysconfdir=/etc/ouistitiMakemore可能会作为Kbuild Makefile运行。可以直接选择一个使用Make的配置文件。
其他配置是配置/目录中的可用配置: *快速服务器的FastMono_DefConfig ,但没有崩溃保护。 *服务器的FullForked_DefConfig ,该服务器能够在连接崩溃后继续运行。
$ make fastmono_defconfig或者
$ make fullforked_defconfig或用于默认配置:
$ make defconfig对于嵌入式设备,例如网关或盒子,建议使用FullForked_DefConfig 。
配置是具有字段和值的文本文件。根目录上的Defconfig文件不得更改。可以在配置/目录中修改或复制现有文件。
字段
file_config:使用ouistiti.conf文件进行配置。
vthread:将多线程启用到服务器中。
vthread_type:以[fork | pthread | Windows]之类的值指定如何管理线程。
静态:构建应用程序,库(libhttpserver,libouiutils ...),然后将模块放入独立的二进制文件中。
共享:构建/链接动态库(libhttpserver,...)和具有集成模块的应用程序。
模块:将模块构建为动态库,该应用程序将在运行时加载。
max_servers:允许选择服务器和虚拟主机的数量来管理。
该汇编是用gmake完成的,并在命令行中接受配置。
OUISTITI可用一个特定的选项调试,以在代码和调试符号中添加痕迹。
$ make DEBUG=y[Makemore]允许使用V选项观看编译线:
$ make V=1与构建主机相比, OUISTITI可能是另一个目标的构建。为此,您需要添加一些配置:
$ make CROSS_COMPILE=arm-linux-gnueabihf默认安装将将库将库复制到/usr/local/lib/ Directory中,并使用默认配置将二进制库复制到/usr/local/bin中。在项目配置期间可以更改路径(见下文)
> make install要在安装之前创建新目录的树,可以更改DestDir变量。
> make DESTDIR= ~ /packages/ouistiti installOuistiti与食谱一起分发以构建发行版的包裹。
Ouistiti使用libconfig进行配置。在配置章节中找到更多信息。
OUISTITI允许在构建配置期间选择所需的每个功能。默认配置允许将所有功能用于最小位置。
在这里,剥离后有一些尺寸的手臂:
内存使用量取决于构建配置和同时连接的数量。
使用ARM体系结构的默认配置,主过程的用法约为4.5mo ,每个客户的连接的使用率约为13.5mo 。但是小型配置只需要5.5 mo 。
在Ouistiti中只有一个过程,VMIZE约为26MO 。
性能页面提供了有关内存使用情况的更多信息。
OUISTITI不是大型网络的Web服务器,但可以在文档交付中获得良好的结果。性能取决于构建配置,您需要。
Ouistiti可能比LightTPD 1.4快,但没有所有功能。您可以在性能页面中找到一些测试结果。