운영체제/Linux

[아파치]CGI 와 UserDir 사용 (feat. 스크립트 언어 루비, 파이썬)

ahgle 2023. 3. 2. 08:53
728x90
반응형

안녕하세요, 아글입니다.

 

오늘은 

아파치 CGI와 UserDir 에 대해서 알아보겠습니다.

 

먼저 해당 개념을 알기 전에 미리 알아야 할 내용이 있습니다.

 

아파치와 같은 웹 서버가 클라이언트(PC)에게 제공하는 데이터는 HTML(Hyper Text Markup Language)로 작성된 데이터입니다. HTML로 작성된 데이터는 프로토콜 HTTP에 의해 클라이언트에게 전달됩니다. 그런데 이러한 HTML은 사용자들이 요구하는 동적 데이터를 제공하지 못한다는 단점이 있습니다.

 

이러한 단점을 보완하기 위해 사용하는 것이 PHP, Perl, Python 과 같은 서버 사이드 스크립트 언어입니다. (서버 단에서 사용하는 언어이기 때문에 '서버 사이드 스크립트 언어' 라고 합니다)

 

그리고 이러한 서버 사이드 스크립트 언어와 아파치와 같은 웹 서버가 통신하는 방법을 정의한 것이

바로  CGI(Common Gateway Interface)입니다.

 

 

Perl

먼저, CGI 언어 중 꽤 오래된 언어인 Perl 을 설치하며 알아보도록 하겠습니다.

 

1. Perl 패키지 설치

# yum install -y perl perl-CGI

▶명령어 yum을 이용해 Perl을 사용하기 위한 패키지를 설치합니다. 여기서 두 번째로 설치하는 perl-CGI 패키지는 CGI에 대한 CGI에 대한 HTTP의 요청과 응답을 담당하는 역할을 합니다.

[root@test www]# yum install -y perl perl-CGI

 

2. 관련 설정 확인

# vim /etc/httpd/conf/httpd.conf 

아파치 설정 파일인 httpd.conf를 열어서 지시어인 ScriptAlias를 사용해  URL 상에서의 디렉토리 cgi-bin은 시스템 상에서 /var/www/cgi-bin을 가르킨다고 선언해줍니다.

 

보통은 아래와 같이 247번 줄 근처에 선언이 돼있습니다.

247     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

 

그리고 CGI 데이터를 저장하고 실행할 디렉토리를 정의하는데, +ExecCGI 옵션을 추가해서 Apache 서버가 이 디렉토리에서 CGI 실행을 허용하도록 합니다.

(*ExecCGI : 선언된 디렉터리에서 CGI 사용을 허용)

255 <Directory "/var/www/cgi-bin">
256     AllowOverride None
257     Options +ExecCGI
258     Require all granted
259 </Directory>

그리고 파일의 확장자가 .cgi, .pl로 끝나는 파일을 CGI로 인식하도록 설정합니다.

(*.pl 은 Perl 스크립트 파일입니다)

AddHandler cgi-script .cgi .pl

 

3. 설정 적용을 위한 웹 서버 재시작

# systemctl restart httpd

설정한 사항들이 적용되도록 아파치 웹 서버를 재시작해줍니다.

[root@test]# systemctl restart httpd

 

Pyhton

 

1. Python 패키지 설치

두 번째 CGI 언어로 Perl 과 자주 비교되며 가독성이 뛰어난 Python을 설치해보겠습니다.

#yum install -y python

 

2. 관련 설정 확인

# vim /etc/httpd/conf/httpd.conf 

아파치 설정 파일인 httpd.conf를 열어서 지시어인 Addhandler를 이용해 Perl 과 마찬가지로 파이썬 확장자  py를 추가해주어서 Apache 서버가 py 확장 자파일도 CGI로 인식되게끔 합니다.

vim /etc/httpd/conf/httpd.conf

AddHandler cgi-script .cgi .pl .py // AddHandler 부분에 .py 확장자를  추가해줍니다.

 

3. 설정 적용을 위한 웹 서버 재시작

# systemctl restart httpd

역시, 설정한 사항들이 적용되도록 아파치 웹 서버를 재시작해줍니다.

[root@test]# systemctl restart httpd

 

 

 

 

USERDIR에서 CGI 사용 방법

사용자에게 웹사이트를 제공하기 위해 필요한 지시어는 UserDir이며 이 지시어는 mod_useridr 모듈이 제공합니다. 이 모듈은  httpd 패키지를 설치하면 사용 가능합니다.

 

아파치 서버에서 사용자에게 웹사이트를 제공하기 위한 디렉터리 관련 설정은 아래와 같습니다.

vim /etc/httpd/conf.d/userdir.conf

#일부 사용자에게 UserDir 허용하는 경우
UserDir dsiabled
UserDir kim lee park

#대부분 사용자에게 UserDir 허용, 일부만 거부하는 경우
UserDir enabled
UserDir disabled kim lee // kim, lee 사용자만 UserDir을 거부

#모든 사용자에게 UserDir을 허용하는 경우
#UserDir disbaled
UserDir public_html

<Directory "/home/*/public.html">
	Options +ExecCGI //일반 사용자의 웹사이트에서도 CGI를 허용
    AllowOverride None //디렉터리 접근 제어를 위해 사용되는 파일, .htaccess 를 읽을 지 결정, None일 경우 그 파일이 있어도 무시!
    Require method GET POST OPTIONS
</Directory>

 

설정 적용을 위한 웹 서버 재시작

# systemctl restart httpd

역시, 설정한 사항들이 적용되도록 아파치 웹 서버를 재시작해줍니다.

[root@test]# systemctl restart httpd

 

오늘은 이렇게 아Apache CGI와 UserDir 사용 방법에 대해서 알아보았습니다.

 

이전 글이 궁금하신 경우 아래 링크를 통해 확인 가능합니다!

https://wowy0211.tistory.com/42

 

아파치 웹서버에 대해서-2 (feat. 서비스 명령어, PHP)

안녕하세요, 아글입니다. 오늘은 아파치 서버 서비스 및 PHP 사용 에 대해서 알아보겠습니다. 아파치 서비스를 시작하는 명령어 #systemctl start httpd [root@test www]# systemctl start httpd Apache 서버의 httpd

wowy0211.tistory.com

 

728x90