블로그 이사했습니다. http://smith17.net/tc로 접속해주세요



결론부터 말하면 이전과 다르게 정상적으로 동작합니다. 달라진 점이라면 ruby의 version과 mongrel의 version이 다르다는 정도입니다. 아래 버젼을 명시하니 참조하세요. 전에 포스팅한 방법으로 설치하면 한동안은 아래 버전과 동일하게 설치될 것입니다. 결론적으로 이야기 하면 이번에 왜 정상적으로 동작하는지 완변하게 알아내지 못했다는 점. 누가 설명 가능하다면 설명 부탁 드립니다.^^

0. 서버 설치 정보

Ruby version 1.8.5 (i486-linux)
RubyGems version 1.0.1
Rails version 2.0.2
Active Record version 2.0.2
Action Pack version 2.0.2
Active Resource version 2.0.2
Action Mailer version 2.0.2
Active Support version 2.0.2
Application root /home/smith17/workspace/maps
Environment development
Database adapter mysql


1. mongrel 설치

@sudo gem1.8 install mongrel   => fastthread가 필요하다고 함
@sudo gem1.8 install fastthread  =>mkmf  ruby1.8-dev 가 필요함

ruby1.8-dev
Header files for compiling extension modules for the Ruby 1.8

이런 상황으로 인하여 일단 ruby1.8-dev를 설치합니다.

ruby1.8-dev 설치 :
@sudo apt-get install ruby1.8-deb


fastthread 설치:
@sudo gem1.8 install fastthread


mongrel 및 mongrel_cluster 설치
@sudo gem1.8 install mongrel
@sudo gem1.8 install mongrel_cluster

설치 종료.
여기까지 설치하면 정상적인 mongrel server를 사용할 수 있다.

2. mongrel server 설정 및 시작

포트번호 및 서버 구동 수등을 생각하여 자신의 rails project의 mongrel 서버를 설정한다.
@sudo mongrel_rails cluster::configure -e development -p 8000 -N 3 \
                                                       -c /home/smith17/path/railproject

참고 : mongrel server start & stop
@mongrel_rails cluster::start
@mongrel_rails cluster::stop


3. proxybalancer 설치 및 apache2 설정

아파치 관련 모듈을 설치
: mod_proxy,  mod_proxy_balancer,  mod_proxy_http,mod_proxy_html, mod_rewrite

/etc/apache2/mods-available 디렉토리로 가서 설치되어있지 않은 모듈을 찾아서 apt-get을 통해서 설치합니다. 저는 proxy_html 만 설치하였습니다.
@sudo apt-get install libapache2-mod-proxy-html libxml2

/etc/apache2/mods-enable 에서 enable되지 않은 모듈을  enable 시킵니다.
@sudo a2enmod proxy
@sudo a2enmod proxy_html
@sudo a2enmod proxy_balancer
@sudo a2enmod rewite

/etc/apache2/apache2.conf에서 cgi 주석(#)을 제거 합니다.
AddHandler cgi-script .cgi

VirtualHost 추가
: /etc/apache2/site-available/[project name] 를 추가합니다. [project_name]에 자신의 프로젝트 명을 입력
<VirtualHost *:8180>        => 8180 : 자신이 서비스 제공할 포트 번호
  ServerName p-p.pe.kr
  DocumentRoot /home/smith17/workspace/maps/public

  RewriteEngine On
  RewriteRule ^/$ /index.html [QSA]
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule $/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]

  <Directory /home/smith17/workspace/maps/public/> => 레일스 프로젝트의 public  디렉토리경로
  AllowOverride all
  Options ExecCGI FollowSymLinks
  Order allow,deny
  Allow from all
  </Directory>
  <Proxy balancer://mongrel_cluster>
  BalancerMember http://127.0.0.1:8100  => mogrel server 가 사용하고 있는 포트번호 3개
  BalancerMember http://127.0.0.1:8101
  BalancerMember http://127.0.0.1:8102
  </Proxy>
</VirtualHost>
추가 설명 : 위의 설정 파일을 간단하게 설명하면 proxy balancer 안의 127.0.0.1:8100~8102 는 위에서 구동시킨 mongrel server의 주소이고 VirtualHost *:8180 은 아파시 서버에서 사용할 포트 번호가 됩니다.
결론적으로 위의 설정 파일은 http://p-p.pe.kr:8180/ 주소를 통해서 서비스를 제공하게 되고 proxy balancer를 통해서 mongrel 서버를 사용하게 됩니다.

/etc/apache2/ports.conf 를 열고 새로 추가한 포트 번호를 추가합니다. 위의 예제에서는 8180이 됩니다.
Listen 8180

project를 site-enable에 추가시킵니다.
@sudo a2ensite maps

apache2를 다시 시작.
@sudo /etc/init.d/apache2 restart


명령어가 실행되면 정상적으로 apache server가 동작하는 것을 확인 할 수 있다.
감격...뜨읍!!!
from Webdev 2008/02/19 20:17

Trackback Address :: http://smith17.net/tt/trackback/54

댓글을 달아 주세요