Ouistiti ((wistiti) 는 Marmoset의 프랑스 이름입니다.
Ouistiti는 작은 장치를 관리하고 구성 할 수있는 작은 웹 서버입니다. 문서 , WebSocket , REST API 등의 보안을 위한 통합 웹 인터페이스를 만들 수 있습니다.
Ouistiti는 웹 서버에서 제어 할 수 있도록 장치에 내장되어 있습니다.
Ouistiti를 사용하면 모든 페이지, WebSockets, 스크립트는 동일한 방식으로 보호됩니다. 귀하의 자체로 인증을 관리하는 것은 쓸모가 없습니다.
TLS/SSL 연결은 MBEDTLS 또는 OPENSSL 라이브러리가있는 모듈로 사용할 수 있습니다.
인증은 모든 클라이언트 연결 에서 사용할 수 있습니다. 사용자의 비밀번호는 스토리지를 위해 암호화 될 수 있습니다. 다음과 같은 도전이 뒷받침됩니다.
모듈은 HTTP 소켓 클라이언트와 UNIX 소켓 사이에 WebSocket 브리지를 구축합니다. 핸드 셰이크와 데이터 전송을 응용 프로그램으로 전송할 수 있습니다. Unix 소켓에서 Cammands의 서버를 개발하면 Ouistiti 는 HTTPS 연결 및 인증 게이트로 보호합니다. 서버의 예를 찾을 수 있습니다.
WebSocket 과 마찬가지로 Ouistiti는 스트림의 서버를 보호 할 수 있습니다. 응용 프로그램은 UNIX 소켓에서만 데이터를 보내야하며 Ouistiti는 나머지를 수행합니다.
Webserver와 마찬가지로 Ouistiti는 모든 종류의 파일을 고객에게 보낼 수 있습니다. 그리고 동시에 서버에서 관리 할 수 있습니다.
CGI 스크립트는 클라이언트에서 호출 할 수 있습니다.
일부 URI는 다른 URI에서 리디렉션되어야합니다. 이 모듈은 구성 파일 만 사용합니다.
서버는 블랙리스트 와 IP 주소의 화이트리스트 로 시작할 수 있습니다.
서버는 URI Access의 규칙을 데이터베이스에 저장합니다. A 규칙은 사용자의 "역할", 요청 유형 및 URI의 표현식의 조합입니다. 각 요청은 인증 후 및 Ressource에 액세스하기 전에 확인됩니다.
이 모듈에는 데이터베이스를 설정하기 위해 자체 RESTAPI가 포함되어 있으며 권한 검사를 위해 인증 모듈을 사용합니다.
이 모듈은 열린 소켓과 UNIX 소켓 서버간에 연결 및 전송 데이터를 업그레이드 할 수 있습니다.
UNIX 서버는 소켓에서 모든 종류의 데이터를 보내고받을 수 있습니다. 보안되지 않은 서버를 재사용 할 수 있으며 인증 및 TLS 연결과 같은 HTTP 기능을 사용합니다.
WebSocket 모듈에 닫히지 만 HTTP를 통한 일부 프로토콜에 유용 할 수 있습니다.
이 모듈은 Python 해석자를 실행하여 스크립트를 호출합니다. 현재이 모듈은 준비 중이며 Django 사이트를 실행하려고합니다.
Ouistiti는 가장 빠른 웹 서버가 되려면 하나의 프로세스만으로 클라이언트 연결을 관리하기 위해 빌드 될 수 있습니다. 또는 각 클라이언트 연결에 대한 독립성 프로세스를 만들어 주변에 샌드 박스를 만들 수 있습니다.
Ouistiti는 최대 시스템에 구축되도록 작성되었습니다. 코드는 C99를 준수하고 스레드가 비활성화되고 구성이 메모리에서로드 될 수 있습니다.
Ouistiti 는 libhttpserver 라이브러리 위에 구축됩니다. 이 라이브러리에는 HTTP 파서, 소켓 관리 및 일부 일반 모듈이 포함되어 있습니다.
이 프로젝트는 Github 에서 제공됩니다
Libhttpserver 의 출처가 Ouistiti Project 내부에서 사용할 수있는 경우 libouistiti 로 이름이 바뀔 수 있습니다.
프로젝트 LIBB64는 일부 패치로 필수입니다. 이 소스는 Ouistiti-Project 또는 Inside 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로 직접 구성 파일을 선택할 수 있습니다.
다른 구성은 Configs/ Directory 내부에서 이용할 수 있습니다 . * 연결 충돌 후 계속 실행할 수있는 서버 용 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=1Ouistiti는 빌드 호스트 이외의 다른 대상을 위해 빌드 될 수 있습니다. 그렇게하려면 구성을 추가해야합니다.
$ 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 에서는 하나의 프로세스 만 있으면 VMSize는 약 26MO 입니다.
성능 페이지는 메모리 사용에 대한 더 많은 정보를 제공합니다.
Ouistiti는 대형 네트워크의 웹 서버가 아니지만 문서 전달에 대한 결과가 좋습니다. 성능은 빌드 구성에 따라 다르며 필요합니다.
Ouistiti는 LightTPD 1.4보다 빠르지 만 모든 기능이 없습니다. 성능 페이지에서 일부 테스트 결과를 찾을 수 있습니다.