mod_mruby를 Amazon EC2, Apache2.2에 배포
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.27
mod_mruby 버전: 1.4.1
Amazon Linux: AMI 2014.03.2(HVM) 64bitApache의 도입 순서는 아래와 같습니다만, 아마 디폴트의
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
※ apxs
와 apachectl
의 패스는, 이번 환경은 /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
로 이동합니다.
제대로 작동하는 것 같아요^^
결론
이번에는 환경의 구축과 동작 확인까지를 실시했습니다. 다음에는 실제로 뭔가 모듈을 써 갑니다.
Reference
이 문제에 관하여(mod_mruby를 Amazon EC2, Apache2.2에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hkusu/items/09d0515c80206d264bee
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ sudo yum -y install httpd-devel
$ sudo /etc/init.d/httpd start
httpd を起動中: [ OK ]
$ sudo yum -y install git
$ 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
$ sudo yum -y install gcc bison openssl-devel
$ sudo yum -y install hiredis-devel --enablerepo=epel
$ cd mod_mruby
$ sudo make install
$ sudo /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
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
로 이동합니다.제대로 작동하는 것 같아요^^
결론
이번에는 환경의 구축과 동작 확인까지를 실시했습니다. 다음에는 실제로 뭔가 모듈을 써 갑니다.
Reference
이 문제에 관하여(mod_mruby를 Amazon EC2, Apache2.2에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hkusu/items/09d0515c80206d264bee
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(mod_mruby를 Amazon EC2, Apache2.2에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hkusu/items/09d0515c80206d264bee텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)