Hyun Chul's Utopia

CGI 환경 구축하기 본문

프로그래밍/CGI

CGI 환경 구축하기

디프시다루핀 2013. 2. 6. 17:29

 하고나니 간단한데.. 제가 모르는게 많아서 삽질을 했네요.. 결론만 말씀 드리면 Apache 설정값을 약간 수정해 주는게 전부입니다.  우선 apache2가 설치가 되고, 정상 동작이 되고 있어야 합니다. 그렇지 않다면 apache부터 설치해 주세요..


제가 구축한 환경은 다음과 같습니다.

- uBuntu 12.04LTS

- APM 설치 (해당 설치 방법은 제 블로그 http://darphin.tistory.com/37 에 설명되어 있습니다.)

정도 입니다.


우선 설치해야할 것이 하나 있습니다. 간단히 한줄을 적어줍니다.

$apt-get install libapach2-mod-perl2


 설치 완료 후, CGI대상 경로를 하나 생성해 주면 됩니다. 이름은 마음데로... 일반적으로는 cgi-bin이라는 이름을 많이 사용하는 듯 합니다. 저같은 경우 기본 웹페이지 경로인 /var/www/ 경로상에 cgitest 라는 폴더를 만들었습니다. 즉 /var/www/cgitest/ 가 되겠네요.

$mkdir /var/www/cgitest


 CGI는 기본적으로 대상 폴더를 하나 지정해야 합니다. ScriptAlias지시어를 이용하여 Apaphe는 특정 디렉토리를 CGI프로그램 용으로 인지합니다. Apache는 이 디렉토리 안에 있는 모든 파일이 CGI프로그램 이라고 가정하여 클라이언트가 요청을 하면, 해당 작업을 실행하려 합니다.


 방금 만든 CGI대상 경로를 적용해야 합니다. 설정 파일을 변경해 주면 되는데요 해당 경로는 다음과 같습니다. (저의 경우 uBuntn 12.04인데 다른 배포판은 어떤지 모르겠네요;;)

설정파일 경로 : /etc/apache2/sites-enabled/000-default


해당 파일을 편집해 줍니다. ScriptAlias 항목을 눈여겨 보시면 됩니다.

<VirtualHost *:80>

ServerAdmin webmaster@localhost


DocumentRoot /var/www

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>


ScriptAlias /cgi-bin/ /var/www/cgitest/   ----> 아까 생성한 CGI경로를 적어주세요

<Directory "/var/www/cgitest">               ----> 아까 생성한 CGI경로를 적어주세요

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

AddHandler cgi-script cgi pl        ----> 추가해 주세요

Order allow,deny

Allow from all

</Directory>


ErrorLog ${APACHE_LOG_DIR}/error.log


# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

LogLevel warn


CustomLog ${APACHE_LOG_DIR}/access.log combined


    Alias /doc/ "/usr/share/doc/"

    <Directory "/usr/share/doc/">

        Options Indexes MultiViews FollowSymLinks

        AllowOverride None

        Order deny,allow

        Deny from all

        Allow from 127.0.0.0/255.0.0.0 ::1/128

    </Directory>


</VirtualHost>


변경 후, 저장까지 완료하면 아파치 서버를 재시작 시켜야 합니다.

$ sudo apache2ctl restart

끝입니다... 이제 정상 동작하는지 확인을 해보아야 겠죠?


예제코드 입니다.

// Hello CGI World

// File name : test_1.cpp

//

// Bae Hyunchul

// bhchhjc@gmail.com



#include<iostream>

using namespace std;


#include<stdlib.h>

#include<string.h>


int main()

{

char *pStrGet = NULL;



// Http Header

cout<<"Content-type: text/html\n\n"; // MIME Type

// Html Data

cout<<"<html>"<<endl;

cout<<"<body>"<<endl;

cout<<"Hello, CGI World, BHC !!!"<<endl;

cout<<"<BR>"<<endl;

cout<<"Your IP Address is "<<getenv("REMOTE_ADDR")<<endl;

cout<<"<BR>"<<endl;


pStrGet = getenv("QUERY_STRING");


if(pStrGet != NULL)

{

if(strlen(pStrGet) != 0)

cout<<"Get Message :: "<<pStrGet<<"<BR>"<<endl;

else

cout<<"Get Message :: No Data<BR>"<<endl;

}

else

{

cout<<"Get Message :: getenv() :: NULL<BR>"<<endl;

}


cout<<"</body>"<<endl;

cout<<"</html>"<<endl;

return 0;




 컴파일 하고 나서 웹페이지를 띄워보면.. 정상적으로 동작하는 것을 확인할 수 있습니다. 생성된 CGI파일은 아까 지정한 CGI경로 안에 있어야 합니다.

$g++ -o ./test_1.cgi ./test_1cpp







 자세한 설명은 http://httpd.apache.org/docs/2.2/ko/howto/cgi.html 이곳에 되어 있습니다. 보다 자세한 내용을 알고 싶으신 분들은 한번 확인해 보셔도 좋겠네요..

'프로그래밍 > CGI' 카테고리의 다른 글

CGI 간략한 소개  (0) 2013.02.06
Comments