작은숲:위키노트/Mod perl

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
(Mod perl에서 넘어옴)

설치

편하고 깔끔한 방법은 Yum으로 설치하는 것이다.

# yum -y install mod_perl

그렇지 못할 경우 수동으로 설치한다. 우선 소스 파일을 다운로드 한다. 다운로드 할 수 있는 버전은 http://perl.apache.org/download/index.html에서 확인한다. 2016년 1월 17일 현재, 최신 버전은 2.0.9이다.

# cd /usr/local/src
# wget http://apache.mirror.cdnetworks.com/perl/mod_perl-2.0.9.tar.gz
--2016-01-27 01:13:48--  http://apache.mirror.cdnetworks.com/perl/mod_perl-2.0.9.tar.gz
Resolving apache.mirror.cdnetworks.com... 14.0.101.165
Connecting to apache.mirror.cdnetworks.com|14.0.101.165|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3846584 (3.7M) [application/x-gzip]
Saving to: `mod_perl-2.0.9.tar.gz'
100%[==========================================================>] 3,846,584   17.9M/s   in 0.2s
2016-01-27 01:13:48 (17.9 MB/s) - `mod_perl-2.0.9.tar.gz' saved [3846584/3846584]
# tar zxvf mod_perl-2.0.9.tar.gz
mod_perl-2.0.9/
mod_perl-2.0.9/Apache-Reload/
mod_perl-2.0.9/Apache-Reload/Changes
mod_perl-2.0.9/Apache-Reload/lib/
...
# cd mod_perl-2.0.9
# perl Makefile.PL MP_APXS=/usr/local/apache/bin/apxs
Reading Makefile.PL args from @ARGV
   MP_APXS = /usr/local/apache/bin/apxs
no conflicting prior mod_perl version found - good.
Using APXS => /usr/local/apache/bin/apxs
Configuring Apache/2.4.3 mod_perl/2.0.9 Perl/v5.10.1
...
Writing Makefile for ModPerl
Writing Makefile for ModPerl::XS
Writing Makefile for mod_perl2
[warning] mod_perl dso library will be built as mod_perl.so
[warning] You'll need to add the following to httpd.conf:
[warning]
[warning]   LoadModule perl_module modules/mod_perl.so
[warning]
[warning] depending on your build, mod_perl might not live in
[warning] the modules/ directory.
[warning] Check the results of
[warning]
[warning]   $ /usr/local/apache/bin/apxs -q LIBEXECDIR
[warning]
[warning] and adjust the LoadModule directive accordingly.
# make
cd "src/modules/perl" && make
make[1]: Entering directory `/usr/local/src/mod_perl-2.0.9/src/modules/perl'
...
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/mp2bug
Manifying blib/man3/mod_perl2.3pm
Manifying blib/man3/ModPerl::Config.3pm
Manifying blib/man3/ModPerl::Code.3pm
Manifying blib/man3/ModPerl::CScan.3pm
Manifying blib/man3/Bundle::Apache2.3pm
Manifying blib/man3/Apache2::Build.3pm
# make install
...
Installing /usr/local/share/man/man3/Apache::TestRun.3pm
Installing /usr/local/share/man/man3/Apache2::Module.3pm
Installing /usr/local/bin/mp2bug
Appending installation info to /usr/lib64/perl5/perllocal.pod
+--------------------------------------------------------------+
|                                                              |
| For details on getting started with mod_perl 2, see:         |
|                                                              |
|   http://perl.apache.org/docs/2.0/user/intro/start_fast.html |
|                                                              |
|                                                              |
| Found a bug?  File a bug report:                             |
|                                                              |
|   http://perl.apache.org/bugs/                               |
|                                                              |
+--------------------------------------------------------------+
# ls /usr/local/apache/modules/mod_perl.so
/usr/local/apache/modules/mod_perl.so

makemake install 하는데 시간이 조금 걸리니 잠시 기다린다.

설정

/usr/local/apache/conf/httpd.conf 파일을 수정한다.

# mod_perl 추가
LoadModule perl_module modules/mod_perl.so
# DirectoryIndex 지시자 추가
DirectoryIndex index.html index.php index.pl
# AddHandler 지시자 수정
AddHandler cgi-script .cgi .pl
# Perl 스크립트를 실행할 디렉토리 설정
<Directory /var/www/perl>
    # 디렉토리에 있는 모든 파일이 Perl 파일이라면 아래 설정으로
    SetHandler perl-script
    # 특정 확장자를 가진 파일만 Perl 스크립트로 실행하도록 하려면 윗 줄 주석 처리하고 아래 주석 제거
    #AddHandler perl-script .cgi .pl
    # PerlRun 모드가 더 안정적이지만, 확실한 스크립트를 조금 더 빠르게 실행시키려면 Registry 모드로
    #PerlResponseHandler ModPerl::Registry
    PerlResponseHandler ModPerl::PerlRun
    PerlOptions +ParseHeaders
    Options +ExecCGI
    # 만약 접속을 제한해야 한다면 아래 내용 추가
    <IfModule mod_authz_core.c>
        # Apache 2.4	
        Require ip 184.0.0.94/24    # 접속할 IP 주소 설정
    </IfModule>
    <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order allow,deny
        Allow from 184.0.0.94/24    # 접속할 IP 주소 설정
        Allow from ::1
    </IfModule>
</Directory>
# mod_perl 상태 확인. 필요 없다면 주석 처리.
<Location /perl-status>
    SetHandler perl-script
    PerlResponseHandler Apache2::Status
    Order deny,allow
    Deny from all
    Allow from 184.0.0.94/24       # 접속할 IP 주소 설정
</Location>

아파치 재기동 후 모듈 확인.

# /usr/local/apache/bin/apachectl restart
# /usr/local/apache/bin/httpd -M | grep perl
 perl_module (shared)

참고 자료