웹 서버에서 CGI 스크립트가 정상적으로 동작하도록 하려면, 먼저 웹 서버를 적절히 구성해야 합니다. 이 글에서는 Apache 웹 서버에서 CGI 스크립트(특히 Python)를 실행할 수 있도록 설정하는 다양한 방법을 단계별로 살펴봅니다.
CGI를 위한 Apache 웹 서버 구성
서버가 CGI 스크립트를 올바르게 처리하려면 Apache의 설정 파일(httpd.conf)에 CGI 관련 지시문을 추가하거나 수정해야 합니다. 대표적인 방법으로는 ScriptAlias 지시문 사용, 특정 디렉터리에 ExecCGI 옵션 부여, 사용자 디렉터리 설정, 그리고 .htaccess 파일 활용 등이 있습니다.
ScriptAlias 지시문 사용하기
ScriptAlias는 Apache 설정 옵션 중 하나로, 특정 디렉터리를 CGI 전용 디렉터리로 지정합니다. 이렇게 설정하면 해당 디렉터리 내의 모든 파일을 Apache가 CGI 스크립트로 인식하여 실행합니다. 가장 간단하게 CGI를 구동할 수 있는 방법이기도 합니다.
Apache 설정 파일인 httpd.conf에서 일반적인 ScriptAlias 설정은 다음과 같습니다.
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
httpd.conf 파일에서 ScriptAlias 항목을 검색한 뒤, 앞의 #(주석 기호)를 제거하면 Apache가 기본으로 제공하는 /cgi-bin/ 디렉터리에서 모든 CGI 파일을 실행할 수 있습니다.
다만 기본 경로가 항상 요구 사항에 맞는 것은 아니므로, 상황에 따라 아래의 다른 방법들을 함께 고려해 보는 것이 좋습니다.
기본 디렉터리 외의 특정 디렉터리에서 CGI 실행하기
원하는 특정 디렉터리에서 CGI 파일을 실행하고 싶다면, 다음과 같이 <Directory> 블록에 +ExecCGI 옵션을 지정합니다.
<Directory /usr/local/apache2/htdocs/somedir> Options +ExecCGI </Directory>
여기서 'somedir'은 사용자가 직접 지정한 원하는 디렉터리입니다.
위와 같이 설정한 경우에는 어떤 확장자를 가진 파일을 CGI로 실행할지 서버에 알려주어야 합니다. 이를 위해 다음 설정을 추가합니다.
AddHandler cgi-script .cgi .pl
이 설정은 Apache에게 .cgi 및 .pl 확장자를 가진 파일을 CGI 스크립트로 실행하라고 지시합니다. Python 스크립트를 사용한다면 AddHandler cgi-script .py처럼 .py 확장자를 추가할 수도 있습니다.
사용자 디렉터리(User Directories)에서 CGI 실행하기
각 사용자의 홈 디렉터리에서 CGI 파일을 실행하려면 다음과 같이 설정할 수 있습니다.
<Directory /home/*/public_html> Options +ExecCGI AddHandler cgi-script .cgi </Directory>
이 설정은 사용자 디렉터리(/home/*/public_html) 내에 있는 .cgi 확장자를 가진 모든 파일을 CGI로 실행하도록 Apache에 지시합니다.
만약 사용자 디렉터리 내의 모든 파일을 CGI로 실행하고 싶다면, 다음과 같이 SetHandler 지시문을 사용합니다.
<Directory /home/*/public_html/cgi-bin> Options +ExecCGI SetHandler cgi-script </Directory>
.htaccess 파일 활용하기
httpd.conf 파일에 접근할 권한이 없는 공유 호스팅 환경이라면, .htaccess 파일을 사용하여 CGI 스크립트를 실행할 수 있습니다.
특정 확장자를 가진 파일만 CGI로 실행하려면 .htaccess 파일을 다음과 같이 작성합니다.
Options +ExecCGI AddHandler cgi-script cgi pl
반대로 특정 디렉터리 안의 모든 파일을 CGI로 실행하고 싶다면 다음과 같이 설정합니다.
Options +ExecCGI SetHandler cgi-script
참고로 .htaccess 사용이 허용되려면 httpd.conf에서 해당 디렉터리에 대해 AllowOverride 옵션이 활성화되어 있어야 합니다.
마무리
이처럼 Apache에서 CGI를 구동하는 방법은 여러 가지가 있으며, 서버 관리 권한의 유무나 프로젝트 구조에 따라 적합한 방식이 달라집니다. 서버 설정을 변경한 후에는 반드시 Apache를 재시작(systemctl restart apache2 또는 apachectl restart)하여 변경 사항을 적용하고, CGI 스크립트에 실행 권한(chmod 755 script.py)을 부여했는지 확인하세요.