티스토리 뷰
본 포스팅은 WebtoB Fast CGI 설명 및 예제를 다루어 보겠습니다.
Fast CGI 란 웹 서버의 응용 프로그램 언어인 공통 게이트웨어 인터페이스(CGI)에서 하나의 프로세스가 다중 CGI 요청을 처리하도록 하여 속도를 향상시킨 웹 서버 플러그 인 프로그램이다. CGI에서는 요청 시마다 서비스를 제어하고 수행하는 프로세스를 새롭게 열고 닫아야 하지만, Fast CGI는 모든 프로세스 요청이 하나의 프로세스를 공유하기 때문에 많은 프로그램 명령이 절약되어 처리 속도가 빠르다. Open Market, Inc.에서 개발된 공개 프로그램이다.
Fast-CGI는 CGI프로그램의 많은 한계를 없애버렸다. (FastCGI is removes a lot of the limitations of CGI programs.) 그럼 CGI프로그램의 문제(한계)는 무엇인가? 가장 일반적으로 생각되는것이 실행 방법 이다.
* CGI프로그램처리순서
메모리 로딩 -> 처리 -> 종료
CGI는 항상 위와 같은 방법으로 호출이 된다. 우리가 JAVA의 FOR문, C의 LOOP문등을 반복적으로 사용할 경우 발생할 수 있는 이슈와 어느정보 비슷하다고 보면될 듯하다.
호출 할때마다 위와 같은 방식으로 반복 호출이 된다면, 이는 간단한 프로그램이야 문제가 안될지 모르지만, 복잡하고 자원을 많이 필요로 하는 프로그램의 경우 사용자가 많아질 수록 급격히 느려지고, 자원의 소모가 많이 된다. (병목현상 발생)
일반적으로 쉽게 비교하는것이 CGI는 프로세스 프로그램(fork())으로 Fast-CGI는 쓰레드 프로그램으로 비교할 수 있다.
fork와 쓰레드의 비교는 오랜기간 많이 되었으므로 따로 설명할 필요가 없을것 같다.
사용 가능 버전
WebtoB 4.1.3.0 부터 기능이 추가되었다. SvrType이 CGI일 경우만 동작한다.
Fast CGI 다운로드 및 설치
http://www.fastcgi.com 에서 모듈을 다운(fcgi-2.4.0.tar.gz )받아 압축을 해제 입니다.
./configure 를 실행 후 make를 실행한다.
[configure 실행]
[nrson@infrasvr fcgi-2.4.0]$ ./configure checking for a BSD compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for mawk... no checking for gawk... gawk checking whether make sets ${MAKE}... yes checking for gcc... gcc checking for C compiler default output... a.out --------------- 생략 ------------------------ |
[make 실행]
[nrson@infrasvr fcgi-2.4.0]$ make cd . \ && CONFIG_FILES= CONFIG_HEADERS=fcgi_config.h \ /bin/sh ./config.status config.status: creating fcgi_config.h config.status: fcgi_config.h is unchanged make all-recursive make[1]: Entering directory `/user/nrson/webapp/fcgi-2.4.0' Making all in libfcgi make[2]: Entering directory `/user/nrson/webapp/fcgi-2.4.0/libfcgi' --------------- 생략 ------------------------ |
설정 방법
WebtoB 설정 파일인 http.m 파일 fast cgi를 설정한다.
html SVGNAME = htmlg, MinProc = 10, MaxProc = 10 fcgi SVGNAME=CGI, MinProc=10, MaxProc=10
Fcgi Uri = "/", SvrType = CGI, CFGI = Y, SvrName = "fcgi"
|
- FCGI = Y 옵션은 SvrType = CGI인 경우, 요청이 Fast CGI인지 설정한다. 기본값은 N으로 Y로 설정하면 요청을 Fast CGI 방식으로 처리한다.
예제 파일 작성 및 컴파일
[fcgi.c 파일 작성]
#include "/user/nrson/webapp/fcgi-2.4.0/include/fcgi_stdio.h"
printf("Content-type: text/html; charset=euc-kr\n\n"); |
- fcgi_stdio.h 파일은 fast cgi 모듈을 압축을 푼 디렉토리에 존재하므로 fcgi.c파일에 해당 경로를 맞춰준다.
[fcgi.c 컴파일]
gcc -o test_fcgi.fcgi fcgi.c /user/nrson/webapp/fcgi-2.4.0/libfcgi/.libs/libfcgi.a |
- libfcgi.a 파일은 make후 생성되며, fast cgi의 압축푼 경로의 ./libfcgi/.libs/ 경로에 생성된다.
6. 실행결과
[hosts에 www.testcfgi.com을 등록하여 실행한 결과]
CGI를 하나의 개발 방식으로 구현하는데 도움이 되었으면 합니다.
고맙습니다.
'④ 미들웨어 > ⓦ WebtoB' 카테고리의 다른 글
[WebtoB] PHP 설치 및 연동 가이드 (0) | 2018.08.09 |
---|---|
[WEBTOB] 로그 설정가이드 (로그레벨, TraceLog, AccessLog) (0) | 2018.08.07 |
[WebtoB] URLRewrite 설정 가이드 (1) | 2018.07.11 |
[WebtoB] Caching Test (0) | 2018.07.06 |
[WebtoB] 로드밸런싱 테스트 (0) | 2018.07.05 |
- Total
- Today
- Yesterday
- nodejs
- openstack token issue
- SA
- Architecture
- 마이크로서비스
- API Gateway
- wildfly
- 마이크로서비스 아키텍처
- apache
- MSA
- git
- aws
- OpenStack
- Docker
- openstack tenant
- JEUS7
- JBoss
- k8s
- 아키텍처
- 오픈스택
- jeus
- SWA
- node.js
- webtob
- aa
- TA
- 쿠버네티스
- Da
- kubernetes
- JEUS6
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |