cgi (common gateway interface)

2021. 12. 29. 10:08개발일지

cgi: 정보를 제공하는 웹 서버와 정보를 이용하는 클라이언트 간에 필요한 정보 교환을 하게 해주는 일종의 웹 인터페이스

 

아파치 웹서버에서 파이썬을 사용한 cgi를 사용할 일이 있었다. https://nowonbun.tistory.com/676 여기 예시처럼 html을 출력하는 방식으로 작동하는데 아무래도 유연성이 낮다보니, 현재는 해당 웹데모를 장고로 교체하였다. 

 

사용 전 설정을 위해 apps/apache-[version(2.x.xx)]/conf/httpd.conf 를 수정한다.

아래 부분 주석 제거하여 아파치에서 cgi 모듈이 작동되도록 한다. 

LoadModule cgid_module modules/mod_cgid.so

 

보통 보안 상 이유 때문에 cgi 프로그램은 ScriptAlias를 통해 등록된 디렉토리에 한정되어 작동한다. (https://httpd.apache.org/docs/2.2/ko/howto/cgi.html) 그래서 관리자는 누가 CGI 프로글매을 사용할 수 있는지 엄격하게 관리할 수 있다. 그러나 적당한 보안조치를 취했다면 아무 디렉토리에서나 CGI 프로그램을 실행하지 않을 이유가 없다. 

어떤 사용자가 자신의 홈디렉토리에서 cgi를 사용하고 싶은데 cgi.bin에 접근권한이 없다면 사용할 수 없다. 

아무 디렉토리에서나 cgi 실행을 허용하려면 두 과정이 필요하다. 먼저, AddHandler나 SetHandler를 사용하여 cgi-script 핸들러를 작동해야한다. 두 번째로, Options 지시어에 ExecCGI를 지정해야 한다. 

 

1. httpd.conf 파일에서 cgi 검색하여 다음과 같이 'Options +ExecCGI' 추가한다. 디렉토리는 cgi 파일 실행을 허용할 특정 디렉토리를 입력한다. 

<Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
</Directory>

2. 어떤 파일이 cgi 파일인지 컴퓨터에 알려야 한다. AddHandler는 서버에게 확장자가 cgi나 pl, py인 파일은 모두 cgi 프로그램이라고 알린다. apache의 cgi로는 perl과 python을 사용할 수 있다. 

<IfModule mime_module>
    AddHandler cgi-script .cgi .pl .py
</IfModule>

설정 후에 웹서버 다시 시작한다. 

반응형

'개발일지' 카테고리의 다른 글

git config  (0) 2022.01.18
vscode tab 간격 설정  (0) 2021.12.31
[linux] tmux 단축키 안 먹음  (0) 2021.12.23
[ElasticSearch] ElasticSearch DSL 더보기  (0) 2021.12.22
[ElasticSearch] ElasticSearch 개요  (0) 2021.12.22