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
'Operating System Theme > Mac OS X' 카테고리의 다른 글
VMware에서 만든 Virtual Machine을 VMware Fusion에서 사용하기 (0) | 2018.04.09 |
---|---|
macOS에서 리눅스 ll 명령어 사용하기 (0) | 2018.04.01 |