블로그 이사했습니다. 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

댓글을 달아 주세요



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



쓰던 글이 컴퓨터 다운으로 날라가서 다시 쓰는 중!!...흑흑
기억을 더듬어 보면

레일스는 이미 설치 되어 있었고 Webrick을 이용하여 테스트 중이였으나 너무 느리고 외부에서 작업이 제대로 이루어 지지 않아서  apache2로 서버를 갈아타려고 시도 했습니다.

간략하게 설치 환경을 써보면

리눅스 배보판 :  ubuntu 7.04 - Feisty Fawn
Ruby version1.8.5 (i486-linux)
RubyGems version0.9.4
Rails version1.2.3
Active Record version1.15.3
Action Pack version1.13.3
Action Web Service version1.2.3
Action Mailer version1.3.3
Active Support version1.4.2
Environmentdevelopment
Database adaptermysql



1. mongrel 설치


sudo gem install mongrel
sudo gem install mongrel_cluster

발생한 문제점 : mongrel 을 설치할 때 의존성 문제로 인해서 fastthread를 설치하게 되는데 fastthread 설치 중에 문제가 발행했습니다. fasstthread를 설치 할 때 include 하는 파일에 clibc에 있는 stdlib.h와 같은 파일이 존재하는데 우분투에 include할 파일이 존재하지 않았습니다. 원래 있어야 할 디렉토리는 /usr/include 입니다. 패키기 관리자나 apt-get을 이용하여 찾아서 설치하면 됩니다. 정확한 이름이 가물가물합니다.

mogrel cluster 설정

배포할 레이스 프로젝트 디렉토리로 이동한 후에 설정을 시작합니다.

sudo mongrel_rails cluster::configure -e development -p 8000 -N 3 \
                                                       -c /home/smith17/path/railproject

   -p :port number
   -N : number of cluster

mogrel cluster  시작하기

mongrel_rails cluster::start
mongrel_rails cluster::stop

   http://localhost:8000
   http://localhost:8001
   http://localhost:8002 에서 정상적으로 mongrel이 동작하고 있음을 확인할 수 있습니다.


2. apache2에서 mongrel 연결시켜 동작 시키기

필요한 모듈설치
: mod_proxy_html, mod_write 등 다양한 모듈이 필요합니다. 참조 site#1을 보세요
apt-get을 이용하여 설치하면 됩니다.

VirtualHost 추가

/etc/apache2/site-available/minilife 를 추가합니다.

NameVirtualHost *:3000

<VirtualHost *:3000>
   ServerName p-p.pe.kr
   DocumentRoot /home/smith17/workspace/minilife/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/minilife/>
       AllowOverride all
       Options ExecCGI FollowSymLinks
       Order allow,deny
       Allow from all
   </Directory>

   <Proxy balancer://mongrel_cluster>
       BalancerMember http://127.0.0.1:8000
       BalancerMember http://127.0.0.1:8001
       BalancerMember http://127.0.0.1:8002
   </Proxy>

</VirtualHost>

minilife를 site-enable에 추가시킵니다.

sudo a2ensite minilife


apache2를 다시 시작합니다.

sudo /etc/init.d/apache2 restart


여기까지가 참조 site#1을 바탕으로 작업을 한 것입니다.

발생한 문제점 : 3000포트로 웹브라우져를 통해서 접근이 되지 않습니다. /etc/apache2 디렉토리에 가면 ports.conf가 있습니다. 기본으로 80번 포트만 열려있습니다. 3000번 포트를 사용하려면 다음과 같이 추가해주어야 합니다.

Listen 3000

저의 작업 결과는 여기까지 할 경우 index 에는 정상적으로 접근이 가능합니다.


해결하지 못한 문제점 : 경험한 분이나 해결책을 아시는 분 답변 부탁합니다.

그러나 about your application's environment를 클릭할 경우에

Forbidden

You don't have permission to access /rails/info/properties on this server.

과 같은 퍼미션 에러가 발생합니다. 퍼미션 에러 같습니다.

서버의 브라우져에서 동작시켜보면
http://localhost:8001/ 로 접근(mongrel cluster에 직접접근)하면 모든 것이 정상적이지만
http://p-p.pe.kr:3000/ 로 접근(apache2의 virtual host)하면 초기 페이지만 뜨고 나머지 경우는 permission에러가 발생합니다.

해결책 : 나중에.... 아직 해결 못하였음!!!


참조 site#1 : http://iadle.tistory.com/#toc_1
from Webdev 2007/10/13 12:24

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

댓글을 달아 주세요

  1. BlogIcon reunion 2007/12/11 01:30  address  modify / delete  reply

    머 검색해도 자꾸 일루 들어오노~~~ 쩝