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快,但沒有所有功能。您可以在性能頁面中找到一些測試結果。