cuteWebserv는 C++로 작성된 HTTP 서버입니다. 이 서버는 NGINX와 같은 웹 서버처럼 동작하며, 사용자가 정의한 설정 파일(*.config)에 따라 다양한 환경에서 실행될 수 있습니다. 실행시 config 파일을 따로 argument로 넘기지 않는경우, 이 프로젝트 내부 default.config 파일 기반으로 실행됩니다. HTTP/1.1 을 기준으로 만들었으며, RFC 7230~7235 까지의 메서드 및 기타 표준 사항등을 엄격히 준수합니다. 단 메서드는 (GET /POST / PUT / DELETE / HEAD) 만 구현했습니다.
2023.04.24 ~ 2023.06.15 (2개월)
- HTTP/1.1 프로토콜 지원(GET/POST/PUT/DELETE/HEAD 메서드만 구현)
- 정적 파일 서빙
- CGI 처리 지원(.py, perl 등 사용자 지정 언어로 쓰인 파일 필요)
- I/O 멀티플렉싱을 통한 동시 요청 처리
- 사용자 정의 설정 파일을 통한 유연한 구성
성능 테스트는 siege 툴을 이용해 진행했습니다.
- 25명의 사용자 동시 접속, 57분간 요청 지속
응답률 100%, 평균 응답 시간 0.01 초
- 100명의 사용자 동시 접속, 100초간 요청 지속
응답률 100%, 평균 응답 시간 0.03초
- 150명의 사용자 동시 접속, 39초간 요청 지속
응답률 99.21%, 평균 응답 시간 0.04초
- repository를 git clone 합니다.
git clone https://github.com/Elineely/CreateHTTPServerFromBottom.git
- clone 한 폴더에 들어갑니다.
cd CreateHTTPServerFromBottom
- makefile을 실행시켜 컴파일 합니다.
make
- 생성된 실행 파일을 실행합니다. 인자가 없는 경우 default.config 파일을 기반으로 웹 서버가 실행됩니다.
./cuteWebserv //default.config 기반으로 실행
./cuteWebserv yourConfigFile.config //사용자가 원하는 설정파일 기반 실행
- 사용자가 특정 config 파일로 HTTP 서버 실행을 원하는 경우, 실행파일(./cuteWebserv) 실행시 두번째 인자로 해당 cofig 파일 경로를 넘겨야합니다.
- HTTP 서버가 실행 되지 않는 경우, config 파일 내부에 지정된 포트번호가 이미 사용중인지 확인하십시오.