Perl 설치
이전 포스트(http://tapito.tistory.com/546)에서 Apache를 설치했다면, 마찬가지로 이번에는 perl
을 설치해 본다.
# yum --disablerepo=\* --enablerepo=c7-media install perl_
다음, perl 실행 파일이 어디에 위치해 있는지 확인한다. 이 경로는 perl 소스의 첫 줄을 작성할 때 중요하다.
# whereis perl_
경로가 /usr/bin/perl
또는 이에 준하는 경로를 확인할 수 있다. 실행이 잘 되는지를 보기 위해 홈 디렉터리(~
)에 테스트 파일을 작성하여 실행해보기로 한다.
# cd ~
# cat > hello.pl
#!/usr/bin/perl
print "Hello, World!\n";
[^C] (=Ctrl + C를 의미한다.)
이 파일에 실행 속성을 부여 한 후 실행해 보자.
# chmod +x hello.pl
# ./hello.pl_
Hello, World!가 뜨면 정상이다. 이제 이 Perl을 Apache에 연동해 본다.
Perl을 Apache에 연동시키기
Apache(httpd
)의 설정 파일 이름은 httpd.conf
이다. 이 파일은 일반적으로 /etc/httpd/conf
디렉터리에 있다. vi로 이 파일을 열어보자.
# vi /etc/httpd/conf/httpd.conf_
Perl은 웹 언어이기 이전에 쉘 스크립트로 기능할 수 있는 언어이다. 이 때문에 웹으로 perl을 노출시킬 경우 보안을 위해서 cgi-bin이라는 특정 디렉터리에 몰아넣을 것을 권장하고 있고, httpd.conf
파일에는 이미 /var/www/cgi-bin
이라는 로컬 디렉터리가 /cgi-bin/
이라는 가상 디렉터리로 ScriptAlias
설정되어 있다. 즉 웹에서 http://somewhere/cgi-bin/foo.cgi
를 접근한다면 이 설정을 통해 /var/www/cgi-bin/foo.cgi
를 보여주게 된다는 뜻이다.
ScriptAlias "/cgi-bin/" "/var/www/cgi-bin/"
httpd.conf
를 잘 찾아보면 다음과 같은 부분이 있다.
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
- AllowOverride
- 각 디렉터리에는
.htaccess
라는 이름의 파일을 생성해서 그 파일에httpd.conf
의 내용을 기술할 수 있다. 즉, 특정 디렉터리에는 별도의 Apache 설정을 적용할 수 있다는 뜻이다.AllowOverride
가None
으로 되어 있으면 디렉터리에.htaccess
등의 설정 파일이 있어도 이를 무시하라는 뜻이다. 이 항목에 올 수 있는 값은None
,All
,AuthConfig
,FileInfo
,Indexes
,Options
,Limit
중 하나이며, 자세한 내용은 http://webdir.tistory.com/178를 참고한다. - Options
- 접근 제어(권한)와 관련된 설정이다.
None
,All
,Indexes
,Includes
,IncludesNOEXEC
,FollowSymlinks
,ExecCGI
,MultiViews
중에서 몇 가지를 고를 수 있다. 자세한 내용은 http://webdir.tistory.com/178를 참고한다. - Require / Deny
- 특정 IP의 허용/차단을 지정한다. 화이트리스트는
Required all denied
, 블랙리스트는
Require ip <허용할 IP>Require all granted
이다.
Require not ip <차단할 IP>
이 부분을 Perl이 연동할 수 있게 아래와 같이 약간의 수정을 해 본다. Options 항목은 CGI를 실행할 수 있도록 +ExecCGI로 고치고, .pl
과 .cgi
를 Perl 스크립트로 인식할 수 있도록 AddHandler
항목을 추가한다.
<Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI
AddHandler cgi-script .pl .cgi
Require all granted
</Directory>
다음, Apache를 재시작한다.
# service httpd restart_
Perl이 Apache와 잘 연동되고 있는지를 확인하기 위해 테스트 페이지를 작성한다. cat
를 사용하든 vi
를 사용하든 아무거나 좋다.
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<!doctype html>\n";
print "<html>\n";
print "\t<head>\n";
print "\t\t<meta charset=\"utf-8\" />\n";
print "\t\t<title>First Example</title>\n";
print "\t</head>\n";
print "\t<body>\n";
for ($num = 1; $num <= 10; $num++) {
print "\t\t<p>Hello, World!</p>\n";
}
print "\t</body>\n";
print "</html>\n";
작성한 파일을 /var/www/cgi-bin
경로에 저장한다. 파일명을 여기에서는 hello.cgi
로 하겠다.
chmod
명령으로 이 파일을 실행 가능하도록 설정한다. 여기서 +x는 실행 가능, a는 불특정 사용자에게 적용되도록 하는 옵션이다.
# chmod a+x hello.cgi_
그 다음 로컬에서 실행해 보아 이 파일에 구문 오류가 있는지 검사해 본다.
# ./hello.cgi_
lynx
로 이 페이지를 열어본다. 아래와 같이 "Hello, World!" 문구가 10번 출력되면 정상이다.
# lynx http://127.0.0.1/cgi-bin/hello.cgi_
이번에는 wget
으로 이 페이지를 다운로드 받아본다. 정상적이라면 perl 코드는 보이지 않고 html 소스만이 보일 것이다.
# cd ~
# wget http://127.0.0.1/cgi-bin/hello.cgi
# cat hello.cgi_
덧. CGI 모듈 설치하기
Perl에 쿠키 및 세션과 같은 웹 기능을 사용하기 위해서는 CGI 모듈이 필요하다. CGI 모듈의 설치는 http://tapito.tistory.com/597를 참고한다.
'Operating System Theme > Unix/Linux' 카테고리의 다른 글
CentOS Minimal Intallation으로부터 서버 구축 방법 #5 (PHP 설정) (0) | 2017.08.18 |
---|---|
CentOS Minimal Intallation으로부터 서버 구축 방법 #4 (Postgre SQL 설치 및 Perl 연동) (0) | 2017.07.23 |
CentOS Minimal Intallation으로부터 서버 구축 방법 #2 (Apache 설치와 부팅시 자동 실행 설정) (0) | 2017.07.22 |
CentOS Minimal Intallation으로부터 서버 구축 방법 #1 (장치 마운트, yum, lynx, wget 설치) (0) | 2017.07.19 |
VMWare를 통해 PC에 안드로이드 설치하기 (20) | 2012.04.07 |