본문 바로가기

Operating System Theme/Mac OS X

macOS에서 Apache + Perl(CGI) 구동하기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

macOS에서 Apache + Perl(CGI) 구동하기


이번 포스팅에서는 macOS(10.13.5 High Sierra 기준)에서 Apache 서버를 설정하고 Perl(CGI)로 작성된 웹 페이지를 출력하는 방법에 대해 정리한다.

 

Apache와 Perl의 설치(?)


macOS에는 Apache와 Perl이 기본으로 설치되어 있다. CPAN조차도 기본으로 설치되어 있다. 특정 버전을 사용하고자 하는 것이 아닌 이상 그대로 이용하면 된다. 다음과 같이 whereis를 통해 해당 실행 파일이 존재함을 확인 정도만 하고 넘어간다.

$ whereis perl
$ whereis cpan
$ whereis httpd

 

CPAN으로 CGI의 설치


우선 perl이 설치된 경로를 확인한다.

$ sudo perl -e 'print join("\n", @INC)'

 

/System/Library/Perl/5.18 경로를 찾아가서 CGI 디렉터리가 있는지 확인한다.

$ sudo cd /System/Library/Perl/5.18
$ sudo ls -al | grep "^d" | grep "CGI"
ls -al
파일 목록을 읽어오는데 상세 정보까지 보여주고(-l), 모든 파일을 숨김없이 보여주라는(-a) 뜻이다.
grep "^d"
파일은 한 줄에 한 파일씩 상세하게 보여주게 되는데, 디렉터리인 경우 첫 글자가 "d"로 시작하므로 이를 정규표현식으로 필터링한다. 즉 디렉터리만 보겠다는 뜻이다.
grep "CGI"
디렉터리 목록 중에서 이름이 "CGI"인것을 보여준다.

그리고 위의 세 단계가 순차적으로 이뤄지도록 파이프라인(|)으로 연결되어있다. 이를 실행한 결과는 다음과 같다. CGI라는 이름의 디렉터리가 뜬다면 이미 CGI CPAN 모듈이 설치되어 있는 것이므로 부가적인 작업이 필요하지 않다.

 

만일 CGI 라는 디렉터리가 나타나지 않는다면 다음과 같이 모듈을 설치한다.

$ sudo span install CGI

 

지시사항대로 설치하면 된다. 그냥 yes 입력 후 엔터만 쳐도 무난하다.

 

게시 디렉터리 확인하기


이제 웹으로 노출할 파일들이 놓인 디렉터리를 본다. 보통의 리눅스 또는 유닉스에서 /var/www에 해당하는 디렉터리는 macOS에서 /Library/WebServer/Documents이고, /var/www/cgi-bin에 해당하는 디렉터리는 /Library/WebServer/CGI-Executables이다.

즉, http://localhost/로 접속했을 때 나타나는 파일들은 /Library/WebServer/Documents에 두고 http://localhost/cgi-bin/으로 접속했을 때 나타나는 파일들은 /Library/WebServer/CGI-Executables에 둔다는 뜻이다.

 

Apache 설정하기


보통의 리눅스 또는 유닉스라면 Apache의 설정파일명은 httpd.conf일 것이다. macOS도 마찬가지로 /etc/apache2/httpd.conf로 존재한다.

$ sudo vi /etc/apache2/httpd.conf

 

에디터로 이를 열어서 Dynamic Shared Object 설정 내용 중 LoadModule로 시작하는 다음의 라인들을 주석 해제한다.

LoadModule perl_module libexec/apache2/mod_perl.so
LoadModule cgi_module libexec/apache2/mod_cgi.so

 

/Library/WebServer/Documents 디렉터리 설정을 다음과 같이 수정한다.

<Directory "/Library/WebServer/Documents">
# ... 중략 ...
    AllowOverride None # 방문자의 접근 인증에 관한 것인데 그냥 기본값
    Options +ExecCGI # 이렇게 수정해야 서버 스크립트가 실행 가능함
    AddHandler cgi-script .pl .cgi # 이렇게 추가해야 .pl, .cgi 파일을 PERL 해석기가 처리 가능함
    Require all granted # 외부에서 접근 가능
# ... 중략 ...
</Directory>

 

Apache 시작하기

이제 apache를 시작해보자.

$ sudo apachectl start

또는.

$ sudo apachectl restart

 

특별한 메시지가 나타나지 않는다면 맥에서 apache 데몬이 돌아가고 있다는 뜻이다. 웹 브라우저를 열고 우선 http://localhost/에 접속해본다. It Works! 글자가 보이면 정상 실행이다.

 

Perl 페이지 테스트하기

/Library/WebServer/CGI-Executables디렉터리에 다음과 같은 내용의 cgi 파일을 생성하고 테스트 페이지를 작성한다. 실행에 앞서 해당 파일에 chmod로 실행 권한을 주어야 제대로 작동할 것이다.

#!/usr/bin/perl
print "Content-type: text/html;charset=UTF-8\n\n";
print "Hello, World!";

 

위 내용을 /Library/WebServer/CGI-Executables/hello.pl에 저장한 다음 chmod a+x hello.pl로 실행 권한을 부여한다. 이제 웹 브라우저를 열고 http://localhost/cgi-bin/hello.pl을 접속해보자. Perl 소스가 그대로 노출되지 않고 Hello, World! 문자열만 다음과 같이 출력되면 정상이다.

 

오류 메시지 확인

HTTP 403/500과 같은 오류가 발생하여 그 상세한 사유가 알고 싶다면 아래의 경로에 로그파일(error_log, access_log)들이 기록되므로 이를 참조한다.

$ cd /var/log/apache2