[CONFIG] CGI 설정
준비
리눅스를 쓰는 분이라면 당연히 리눅스를 인스톨 하면서 아파치와 펄등이 함께 인스톨 되기 때문에 아파치의 설정 파일만 (httpd.conf) 조금 수정 하시면 쉽게 펄로 만든 cgi를 실행해 볼 수 있습니다. 그러나 윈도우즈 환경에서는 하나 하나 다운로드를 해야 하고, 또 리눅스와는 약간 다른 측면이 있어서 조금 수고를 해야 합니다.
먼저, 어디서 다운로드를 하는지 부터:
펄 : 액티브펄 에 가서 오른편의 "Download" 를 이용
아파취 : Apache.org에서 "no_src" 붙은것 다운로드
다운로드 하셨으면 인스톨 하세요. msi 파일들이기 때문에 그냥 클릭만 해주면 setup 프로그램이 뜨고 평이하게 진행됩니다. 설정은 아무것도 건드리지 마세요.
이제 아파취 설정을 합니다. 리눅스에서 해보신 분은 잘 아시겠지만 아파취는 httpd.conf 라는 텍스트 파일을 편집해서 설정을 합니다. 이 파일은, 아무것도 안 건드렸다면 C:\Program Files\Apache Group\Apache\conf 디렉토리 안에 있습니다. 거기 보면 "httpd.default.conf"라는 것도 있는데 그건 건드리지 말고 "httpd.conf"를 여세요. 메모장이나 기타 아무런 텍스트 에디터로나 여시면 됩니다.
아파치 설정에서 하나 주의할 점은, 윈도우즈에서는 디렉토리 구분을 \를 이용하지만 아파취는 유닉스식 그대로 /를 사용한다는 것입니다. 예를들어 C: 최상위에 "dog"이라는 폴더가 있다면 윈도우즈에서는 C:\dog 라고 표현하지만 아파취에서는 C:/dog 라고 해야 합니다. 일반적인 웹페이지 주소(url)도 마찬가지지죠? 웹이 유닉스를 기반으로 만들어진 데서 비롯된 것입니다. 어쨌든 C: 최상위에 "mysite"라는 디렉토리를 하나 만드세요. 여기에 모든 html 파일, cgi 스크립트 등이 담기게 됩니다. 내 웹써버의 문서 루트가 c:\mysite가 되는 겁니다.
C:\Program Files\Apache Group\Apache\conf 디렉토리 안에 있는 httpd.conf를 텍스트 에디터로 열었다면 다음을 수정하세요.
1. 먼저 DocumentRoot 라는 것을 찾으세요. 아마,
DocumentRoot "C:/Program Files/Apache Group/Apache/htdoc"
라고 되어 있을 것입니다. 이것을,
DocumentRoot "C:/mysite"
로 바꾸세요.
2. 그 밑에 조금 더 내려가보면
가 나옵니다.
이것은 위의 DocumentRoot와 똑같이 맞춰줘야 합니다.
로 바꾸세요.
3. 그 다음 중요한 것이 나옵니다. ScriptAlias 라는 것을 찾으세요.
5백번대 줄에 있을 것입니다. (CTRL-F 키를 이용하면 빠르겠죠? ^^) 아마 이렇게 나와 있을 것입니다.
ScriptAlias "C:/Program Files/Apache Group/Apache/cgi-bin/"
그것을,
ScriptAlias "C:/mysite/cgi-bin/"
으로 고치세요.
고친 다음 mysite 디렉토리 안에 cgi-bin 이라는 디렉토리를 하나 새로 만드세요.
ScriptAlias의 의미는, "Alias" 즉, 바로가기나 맥에서의 가상본과 같은 개념 입니다. 특별히 cgi 스크립트를 담고 있다고 해서 "ScriptAlias" 라는 이름이 붙었을 뿐이죠. 즉, 웹브라우져의 주소창에서 http://www.domain.com/cgi-bin/somecgi.cgi 와 같이 주소를 입력했을 때 웹주소(url)에 들어있는 cgi-bin"은 웹써버 셋팅(http.conf)에서 지정해준 C:\mysite\cgi-bin 폴더를 가르키게 되는 것입니다. 주소창의 cgi-bin 이 가르키는 실제 디렉토리를 지정하는 것이 ScriptAlias인 것이죠. 보통의 경우 cgi 파일들은 다 cgi-bin 디렉토리에 모아 두기 때문에 위와 같이 지정을 해둔 경우 특별한 설정이 없이도 C:\mysite\cgi-bin 디렉토리에 들어 있는 파일들은 cgi로 인식하고 실행을 하게 됩니다.
그런데, "ScriptAlias"로 지정한 디렉토리 바깥에 있는 파일을 cgi로 인식해서 실행하려면 어떻게 해야 할까요. 몇 가지 다른 것을 수정해줘야 합니다. 이를테면 어떤 특정 디렉토리에 (하부 디렉토리까지 포함) 담긴 어떤 파일들을 cgi로 간주해서 실행하려면 다음과 같이 Directory를 지정해주면 됩니다.
AllowOverride None
Options ExecCGI
AddHandler cgi-script .pl .cgi
Order allow,deny
Allow from all
위와 같이 설정하면, C:\mysite 디렉토리 (하부 디렉토리 포함) 내에 들어 있는 파일 중에 확장자가 .pl 이나 .cgi인 파일들은 cgi 스크립트로 취급해서 실행하게 됩니다. 위의 코드를 아파치 설정 파일 httpd.conf 의 아무 부분에나 첨가해주면 파일 확장자만으로 cgi 파일을 식별해서 실행하는 것입니다.
위와 같이 파일 확장자를 이용해서 지정하는 방법 외에도 "Addtype"을 이용하는 방법 등 여러가지가 더 있지만 다른 글에서 기회가 되면 다루기로 하구요.
자. 이제 위에서 말씀드린대로 ScriptAlias를 적절히 지정 하셨다면 이제 아파취를 restart 합니다. restart 하는 방법은 정말 간단합니다. 시작 메뉴의 "프로그램" 에 보면 "Apache httpd Server" 란 것이 있습니다. 거기 보면 "Control Apache Server" 항목이 있고, 그것을 선택해보면 restart가 있습니다. 이것을 실행시키세요. 명령어 입력창이(cmd.exe) 잠시 떴다가 사라지면서 아파치는 재시동됩니다. 이제 아파취 설정 끝!
CGI 작성과 실행
이제, 텍스트 에디터를 열고 cgi를 하나 만들어서 테스트 해봅시다.
cgi는 많은 복잡한 이야기가 있습니다만, 여기서는 그냥 가장 간단한 것 하나만 만들어서 아파치 셋팅이 제대로 되었는지만 확인해 봅시다. 일단 다음과 같이 입력하세요.
#!C:/Perl/bin/Perl.exe
print "Content-type: text/html\n\n";
print "";
print "Hello, world !";
중요한 것은 첫 줄입니다. 다른 줄들은 그냥 html 태그를 뿌려주는 것이구요. 유닉스에서 "Shebang" 이라고 하는 것입니다. (#!이니까 sharp+bang = shebang) Shebang은, 다음 줄부터 나오는 코드를 어떤 어떤 프로그램으로 (인터프리터로) 실행해라는 의미입니다. 우리는 펄을 이용해서 cgi를 만들것이므로 펄이 어디에 있는지를 알려줘야 합니다. 위 코드를 보시면 C드라이브-->Perl-->bin 디렉토리 안에 있는 Perl.exe라는 프로그램으로 실행해라고 알려주고 있습니다. 여기서 주의하실 점은 3가지입니다. 첫째, 위에서 얘기했지만, 윈도우즈의 패쓰 쓰는것과 달리 /를 사용해서 Perl.exe 위치를 지정하고 있다는 점입니다. 둘째, Perl.exe는 그냥 Perl만 써도 됩니다. (윈95 중 어떤 건 안됩니다. 그 경우엔 Perl.exe 까지 다 입력) 즉, #!C:/Perl/bin/Perl이라고 해도 됩니다. 셋째, #!를 쓸 때 디렉토리 이름이나 파일이름의 대소문자는 구분 안하셔도 됩니다. Perl 이나 perl 이나 똑같습니다. 유닉스에서는 당연히 대소문자 구분해야 합니다.
위와 같이 입력했으면 C:\mysite\cgi-bin 디렉토리에 "hello.cgi" 등의 이름으로 저장하세요.
이제 인터넷 익스플로러를 띄우고 주소창에 http://localhost/cgi-bin/hello.cgi라고 입력하고 엔터를 치세요.
Hello, Wolrd!라고 뜨죠? 성공을 축하드립니다. ^_^
만약 에러가 났다면, -_-
아파치 설정을 잘 못했다
#! 에서 C:/Program Files/Perl/Perl과 같은 엉뚱한 패쓰를 사용했다
등의 원인일 가능성이 높습니다. 반드시 내 컴퓨터의 어디에 "Perl.exe" 파일이 있는지 확인해서 정확한 패쓰를 쓰세요.
리눅스를 쓰는 분이라면 당연히 리눅스를 인스톨 하면서 아파치와 펄등이 함께 인스톨 되기 때문에 아파치의 설정 파일만 (httpd.conf) 조금 수정 하시면 쉽게 펄로 만든 cgi를 실행해 볼 수 있습니다. 그러나 윈도우즈 환경에서는 하나 하나 다운로드를 해야 하고, 또 리눅스와는 약간 다른 측면이 있어서 조금 수고를 해야 합니다.
먼저, 어디서 다운로드를 하는지 부터:
펄 : 액티브펄 에 가서 오른편의 "Download" 를 이용
아파취 : Apache.org에서 "no_src" 붙은것 다운로드
다운로드 하셨으면 인스톨 하세요. msi 파일들이기 때문에 그냥 클릭만 해주면 setup 프로그램이 뜨고 평이하게 진행됩니다. 설정은 아무것도 건드리지 마세요.
이제 아파취 설정을 합니다. 리눅스에서 해보신 분은 잘 아시겠지만 아파취는 httpd.conf 라는 텍스트 파일을 편집해서 설정을 합니다. 이 파일은, 아무것도 안 건드렸다면 C:\Program Files\Apache Group\Apache\conf 디렉토리 안에 있습니다. 거기 보면 "httpd.default.conf"라는 것도 있는데 그건 건드리지 말고 "httpd.conf"를 여세요. 메모장이나 기타 아무런 텍스트 에디터로나 여시면 됩니다.
아파치 설정에서 하나 주의할 점은, 윈도우즈에서는 디렉토리 구분을 \를 이용하지만 아파취는 유닉스식 그대로 /를 사용한다는 것입니다. 예를들어 C: 최상위에 "dog"이라는 폴더가 있다면 윈도우즈에서는 C:\dog 라고 표현하지만 아파취에서는 C:/dog 라고 해야 합니다. 일반적인 웹페이지 주소(url)도 마찬가지지죠? 웹이 유닉스를 기반으로 만들어진 데서 비롯된 것입니다. 어쨌든 C: 최상위에 "mysite"라는 디렉토리를 하나 만드세요. 여기에 모든 html 파일, cgi 스크립트 등이 담기게 됩니다. 내 웹써버의 문서 루트가 c:\mysite가 되는 겁니다.
C:\Program Files\Apache Group\Apache\conf 디렉토리 안에 있는 httpd.conf를 텍스트 에디터로 열었다면 다음을 수정하세요.
1. 먼저 DocumentRoot 라는 것을 찾으세요. 아마,
DocumentRoot "C:/Program Files/Apache Group/Apache/htdoc"
라고 되어 있을 것입니다. 이것을,
DocumentRoot "C:/mysite"
로 바꾸세요.
2. 그 밑에 조금 더 내려가보면
가 나옵니다.
이것은 위의 DocumentRoot와 똑같이 맞춰줘야 합니다.
로 바꾸세요.
3. 그 다음 중요한 것이 나옵니다. ScriptAlias 라는 것을 찾으세요.
5백번대 줄에 있을 것입니다. (CTRL-F 키를 이용하면 빠르겠죠? ^^) 아마 이렇게 나와 있을 것입니다.
ScriptAlias "C:/Program Files/Apache Group/Apache/cgi-bin/"
그것을,
ScriptAlias "C:/mysite/cgi-bin/"
으로 고치세요.
고친 다음 mysite 디렉토리 안에 cgi-bin 이라는 디렉토리를 하나 새로 만드세요.
ScriptAlias의 의미는, "Alias" 즉, 바로가기나 맥에서의 가상본과 같은 개념 입니다. 특별히 cgi 스크립트를 담고 있다고 해서 "ScriptAlias" 라는 이름이 붙었을 뿐이죠. 즉, 웹브라우져의 주소창에서 http://www.domain.com/cgi-bin/somecgi.cgi 와 같이 주소를 입력했을 때 웹주소(url)에 들어있는 cgi-bin"은 웹써버 셋팅(http.conf)에서 지정해준 C:\mysite\cgi-bin 폴더를 가르키게 되는 것입니다. 주소창의 cgi-bin 이 가르키는 실제 디렉토리를 지정하는 것이 ScriptAlias인 것이죠. 보통의 경우 cgi 파일들은 다 cgi-bin 디렉토리에 모아 두기 때문에 위와 같이 지정을 해둔 경우 특별한 설정이 없이도 C:\mysite\cgi-bin 디렉토리에 들어 있는 파일들은 cgi로 인식하고 실행을 하게 됩니다.
그런데, "ScriptAlias"로 지정한 디렉토리 바깥에 있는 파일을 cgi로 인식해서 실행하려면 어떻게 해야 할까요. 몇 가지 다른 것을 수정해줘야 합니다. 이를테면 어떤 특정 디렉토리에 (하부 디렉토리까지 포함) 담긴 어떤 파일들을 cgi로 간주해서 실행하려면 다음과 같이 Directory를 지정해주면 됩니다.
AllowOverride None
Options ExecCGI
AddHandler cgi-script .pl .cgi
Order allow,deny
Allow from all
위와 같이 설정하면, C:\mysite 디렉토리 (하부 디렉토리 포함) 내에 들어 있는 파일 중에 확장자가 .pl 이나 .cgi인 파일들은 cgi 스크립트로 취급해서 실행하게 됩니다. 위의 코드를 아파치 설정 파일 httpd.conf 의 아무 부분에나 첨가해주면 파일 확장자만으로 cgi 파일을 식별해서 실행하는 것입니다.
위와 같이 파일 확장자를 이용해서 지정하는 방법 외에도 "Addtype"을 이용하는 방법 등 여러가지가 더 있지만 다른 글에서 기회가 되면 다루기로 하구요.
자. 이제 위에서 말씀드린대로 ScriptAlias를 적절히 지정 하셨다면 이제 아파취를 restart 합니다. restart 하는 방법은 정말 간단합니다. 시작 메뉴의 "프로그램" 에 보면 "Apache httpd Server" 란 것이 있습니다. 거기 보면 "Control Apache Server" 항목이 있고, 그것을 선택해보면 restart가 있습니다. 이것을 실행시키세요. 명령어 입력창이(cmd.exe) 잠시 떴다가 사라지면서 아파치는 재시동됩니다. 이제 아파취 설정 끝!
CGI 작성과 실행
이제, 텍스트 에디터를 열고 cgi를 하나 만들어서 테스트 해봅시다.
cgi는 많은 복잡한 이야기가 있습니다만, 여기서는 그냥 가장 간단한 것 하나만 만들어서 아파치 셋팅이 제대로 되었는지만 확인해 봅시다. 일단 다음과 같이 입력하세요.
#!C:/Perl/bin/Perl.exe
print "Content-type: text/html\n\n";
print "";
print "Hello, world !";
중요한 것은 첫 줄입니다. 다른 줄들은 그냥 html 태그를 뿌려주는 것이구요. 유닉스에서 "Shebang" 이라고 하는 것입니다. (#!이니까 sharp+bang = shebang) Shebang은, 다음 줄부터 나오는 코드를 어떤 어떤 프로그램으로 (인터프리터로) 실행해라는 의미입니다. 우리는 펄을 이용해서 cgi를 만들것이므로 펄이 어디에 있는지를 알려줘야 합니다. 위 코드를 보시면 C드라이브-->Perl-->bin 디렉토리 안에 있는 Perl.exe라는 프로그램으로 실행해라고 알려주고 있습니다. 여기서 주의하실 점은 3가지입니다. 첫째, 위에서 얘기했지만, 윈도우즈의 패쓰 쓰는것과 달리 /를 사용해서 Perl.exe 위치를 지정하고 있다는 점입니다. 둘째, Perl.exe는 그냥 Perl만 써도 됩니다. (윈95 중 어떤 건 안됩니다. 그 경우엔 Perl.exe 까지 다 입력) 즉, #!C:/Perl/bin/Perl이라고 해도 됩니다. 셋째, #!를 쓸 때 디렉토리 이름이나 파일이름의 대소문자는 구분 안하셔도 됩니다. Perl 이나 perl 이나 똑같습니다. 유닉스에서는 당연히 대소문자 구분해야 합니다.
위와 같이 입력했으면 C:\mysite\cgi-bin 디렉토리에 "hello.cgi" 등의 이름으로 저장하세요.
이제 인터넷 익스플로러를 띄우고 주소창에 http://localhost/cgi-bin/hello.cgi라고 입력하고 엔터를 치세요.
Hello, Wolrd!라고 뜨죠? 성공을 축하드립니다. ^_^
만약 에러가 났다면, -_-
아파치 설정을 잘 못했다
#! 에서 C:/Program Files/Perl/Perl과 같은 엉뚱한 패쓰를 사용했다
등의 원인일 가능성이 높습니다. 반드시 내 컴퓨터의 어디에 "Perl.exe" 파일이 있는지 확인해서 정확한 패쓰를 쓰세요.
댓글