mod_mruby를 Amazon EC2, Apache2.2에 배포

2014/12/03 추가:
Apache2.4에 도입하는 절차를 여기에 썼습니다.
mod_mruby를 Amazon EC2, Apache2.4에 배포


전부터 신경이 쓰였던 mod_mruby 를 시험해 보았던 메모입니다.
mod_mruby 에서 Apache 모듈을 Ruby (엄격하게는 mruby)로 작성할 수있는 것 같습니다.

과거에도 조금 Apache 모듈은 썼던 적이 있습니다만(쇼보입니다만 1개만 GitHub 에도 올리고 있습니다), Ruby 로 써, Apache 로 여러가지 할 수 있으면 멋진 잖아.. 라고 생각.

로컬로 환경을 만들어도 좋았습니다만, 역시 제대로 WEB 서버로 동작시키고 싶었으므로, Amazon EC2에 도입해 보았습니다.

Apache 버전: 2.2.27mod_mruby 버전: 1.4.1Amazon Linux: AMI 2014.03.2(HVM) 64bit

Apache의 도입 순서는 아래와 같습니다만, 아마 디폴트의 prefork 모드로 움직이고 있다고 생각합니다.

환경 구축 및 mod_mruby 도입



EC2 설정



이 섹션에서는 설정 절차를 다루지 않지만 AMI는 Quick Start 맨 위에 있는 Amazon Linux를 사용했습니다.



또한 Apache를 시작하려면 보안 그룹 설정에서 80번 포트를 열어 둡니다.



※ 액세스 원의 IP 는, 할 수 있으면 짜는 것이 좋다고 생각합니다.

Apache 설치



아마도 apxs가 필요할 것이라고 생각하고 devel 버전을 설치했습니다.
$ sudo yum -y install httpd-devel

동작 확인



Apache를 시작합니다.
$ sudo /etc/init.d/httpd start
httpd を起動中:                    [  OK  ]

적절한 브라우저에서 EC2의 Public DNS 또는 Public IP로 액세스해 봅니다. 다음과 같이 친숙한 페이지가 표시되면 OK입니다.



mod_mruby 소개



이 페이지의 설치 절차 를 참고하여 작업을 진행합니다. 먼저 Git이 필요하므로 Git을 yum으로 설치합니다.
$ sudo yum -y install git

GitHub에서 mod_mruby를 clone하고,
$ git clone git://github.com/matsumoto-r/mod_mruby.git

컴파일용 스크립트를 실행합니다.
$ cd mod_mruby
$ APXS_PATH_ENV='--with-apxs=/usr/sbin/apxs' APACHECTL_PATH_ENV='--with-apachectl=/usr/sbin/apachectl' sh build.sh

apxsapachectl 의 패스는, 이번 환경은 /user/sbin/ 였습니다. 그래서 위에서도 그렇게 지정하고 있습니다.

제 경우에는 컴파일 오류가 발생하여 다음을 설치 한 다음 다시 실행했습니다.
$ sudo yum -y install gcc bison openssl-devel
$ sudo yum -y install hiredis-devel --enablerepo=epel

hiredis-devel 는 통상의 yum 리포지터리에 존재하지 않는다?

컴파일이 성공하면 다음과 같이 Apache에 포함됩니다.
$ cd mod_mruby
$ sudo make install

그러면 /usr/lib64/httpd/modules/mod_mruby.so 가 배치됩니다.



Apache 구성 파일 /etc/httpd/conf/httpd.conf를 보면 이미이 모듈을 읽는 설명이 추가되었습니다.



Apache를 다시 시작하여 활성화합니다.
$ sudo /etc/init.d/httpd restart
httpd を停止中:                    [  OK  ]
httpd を起動中:                    [  OK  ]

이상으로 도입은 완료입니다^^

mod_mruby를 사용해보십시오.



git colone 했다.

테스트 스크립트를 Apache DocumentRoot 바로 아래에 복사합니다.
$ sudo cp test.rb /var/www/html/

Apache 측에서 mod_mruby를 설정합니다. mod_mruby 용 conf 파일을 만들고,
$ sudo touch /etc/httpd/conf.d/mruby.conf

다음과 같이 설명합니다.

/etc/httpd/conf.d/mruby.conf
<Location /mruby-test>
    mrubyHandlerMiddle /var/www/html/test.rb
</Location>

저장하면 Apache를 다시 시작하고,
$ sudo /etc/init.d/httpd restart

브라우저에서 mod_murby로 이동합니다.



제대로 작동하는 것 같아요^^

결론



이번에는 환경의 구축과 동작 확인까지를 실시했습니다. 다음에는 실제로 뭔가 모듈을 써 갑니다.

좋은 웹페이지 즐겨찾기