rbenv + rbenv-gemset + apache + passenger를 Mac에 넣기

마지막에 에러가 나와 고민했기 때문에 메모 대신에 둡니다.

rbenv, ruby-build, rbenv-gemset 설치



Homebrew 을 사용하여 rbenv 환경을 구축합니다.
도중에 의존관계 등으로 에러가 나왔을 경우는, 매번 대처해 주세요.

bash
~ lassy423$ brew install rbenv ruby-build rbenv-gemset
==> Downloading https://github.com/sstephenson/rbenv/archive/v0.4.0.tar.gz
######################################################################## 100.0%
==> Caveats
To use Homebrew's directories rather than ~/.rbenv add to your profile:
  export RBENV_ROOT=/usr/local/var/rbenv

To enable shims and autocompletion add to your profile:
  if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
==> Summary
?  /usr/local/Cellar/rbenv/0.4.0: 31 files, 152K, built in 3 seconds
==> Downloading https://github.com/sstephenson/ruby-build/archive/v20140225.tar.gz
######################################################################## 100.0%
==> ./install.sh
?  /usr/local/Cellar/ruby-build/20140225: 114 files, 496K, built in 4 seconds
==> Downloading https://github.com/jf/rbenv-gemset/archive/v0.5.6.tar.gz
######################################################################## 100.0%
?  /usr/local/Cellar/rbenv-gemset/0.5.6: 12 files, 52K, built in 3 seconds
~ lassy423$ 

~/.bashrc 와 ~/.profile 에 추가

~/.bashrc
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

~/.profile
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

추가한 내용을 다시 로드합니다.

bash
~ lassy423$ source ~/.profile

루비 설치



모든 버전의 루비를 설치합니다. 예로 2.1.1을 사용합니다.

bash
~ lassy423$ rbenv install --list
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
(中略)
  2.1.0-rc1
  2.1.1
  2.2.0-dev
(中略)
  ree-1.8.7-2012.01
  ree-1.8.7-2012.02
  topaz-dev
~ lassy423$ rbenv install 2.1.1
Downloading ruby-2.1.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/e57fdbb8ed56e70c43f39c79da1654b2
Installing ruby-2.1.1...
Installed ruby-2.1.1 to /Users/Yoshihiko/.rbenv/versions/2.1.1

~ lassy423$ rbenv rehash
~ lassy423$ rbenv versions
* system (set by /Users/Yoshihiko/.rbenv/version)
  2.1.1
~ lassy423$ rbenv global 2.1.1
~ lassy423$ rbenv versions
  system
* 2.1.1 (set by /Users/Yoshihiko/.rbenv/version)
~ lassy423$ 

gemset 만들기



rbenv-gemset을 사용하여 응용 프로그램 별 gemset을 만듭니다.

bash
~ lassy423$ rbenv gemset
version 0.5.6
rbenv-gemset [command] [options]

possible commands are:
  active
  create [version] [gemset]
  delete [version] [gemset]
  file
  init [gemset]
  list
  version

For full documentation, see: https://github.com/jf/rbenv-gemset#readme
~ lassy423$ rbenv gemset list
~ lassy423$ rbenv gemset create 2.1.1 demosite-gemset
created demosite-gemset for 2.1.1
~ lassy423$ rbenv gemset list
2.1.1:
  demosite-gemset
~ lassy423$ 

만든 gemset을 응용 프로그램 아래에서 사용할 수 있도록 설정합니다.

bash
~ lassy423$ cd $DEMOSITE_HOME
demosite_home lassy423$ echo demosite-gemset > .rbenv-gemsets
demosite_home lassy423$ rbenv gemset active
demosite-gemset global
demosite_home lassy423$ 

gems 설치



이번에는 기존 Rails 앱을 실행하고 싶으므로 먼저 bundler 만 설치합니다.

bash
demosite_home lassy423$ gem install bundler
Fetching: bundler-1.6.1.gem (100%)
Successfully installed bundler-1.6.1
1 gem installed
demosite_home lassy423$ 

그런 다음 bundle 명령으로 다른 gems를 설치합니다.

bash
demosite_home lassy423$ bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
(中略)
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
demosite_home lassy423$ 

마지막으로 설치한 gems를 활성화합니다.

bash
demosite_home lassy423$ rbenv rehash

이 시점에서 Rails 애플리케이션 단독으로 동작하게 됩니다.rails s 를 실행하여 제대로 작동하지 않는 경우 해결하십시오.

passenger 설치



apache는 이미 들어 있다고 가정하고 이야기를 진행하지만,
포함되어 있지 않으면 brew info httpd로 설치하십시오.
중간에 rbenv rehash를 잊지 마십시오.

bash
demosite_home lassy423$ gem install passenger
Fetching: daemon_controller-1.2.0.gem (100%)
Successfully installed daemon_controller-1.2.0
Fetching: passenger-4.0.40.gem (100%)
Building native extensions.  This could take a while...
Successfully installed passenger-4.0.40
2 gems installed
demosite_home lassy423$ rbenv rehash
demosite_home lassy423$ passenger-install-apache2-module
Welcome to the Phusion Passenger Apache 2 module installer, v4.0.40.
(中略)
Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /Users/lassy423/.rbenv/versions/2.1.1/gemsets/demosite-gemset/gems/passenger-4.0.40/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /Users/lassy423/.rbenv/versions/2.1.1/gemsets/demosite-gemset/gems/passenger-4.0.40
     PassengerDefaultRuby /Users/lassy423/.rbenv/versions/2.1.1/bin/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER to continue.


도중에 apache 설정이 표시되므로 복사해 둡니다.

apache 설정 수정(실패 패턴)



passenger 설치 중에 표시되는 apache 설정을 추가합니다.

/usr/local/etc/apache2/httpd.conf
LoadModule passenger_module /Users/lassy423/.rbenv/versions/2.1.1/gemsets/demosite-gemset/gems/passenger-4.0.40/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /Users/lassy423/.rbenv/versions/2.1.1/gemsets/demosite-gemset/gems/passenger-4.0.40
  PassengerDefaultRuby /Users/lassy423/.rbenv/versions/2.1.1/bin/ruby
</IfModule>

RailsEnv development
<VirtualHost *:80>
    ServerName somedomain.com
    # !!! Be sure to point DocumentRoot to 'public'!
    DocumentRoot /Users/lassy423/demosite/public
    <Directory "/Users/lassy423/demosite/public">
        # This relaxes Apache security settings.
        AllowOverride none
        # MultiViews must be turned off.
        Options -MultiViews
        Allow from all
    </Directory>
</VirtualHost>
sudo apachectl start에서 apache를 시작하고,
브라우저로 접속하면 아래와 같은 에러 화면이 표시됩니다.
(표시되지 않는 경우는 구축은 종료입니다)



apache 설정 수정(성공 패턴)



Stack Overflow 을 참고로 다음 설정을 추가합니다.

/usr/local/etc/apache2/httpd.conf
SetEnv GEM_HOME /Users/lassy423/.rbenv/versions/2.1.1/gemsets/demosite-gemset/

최종 설정은 다음과 같습니다.

/usr/local/etc/apache2/httpd.conf
LoadModule passenger_module /Users/lassy423/.rbenv/versions/2.1.1/gemsets/demosite-gemset/gems/passenger-4.0.40/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /Users/lassy423/.rbenv/versions/2.1.1/gemsets/demosite-gemset/gems/passenger-4.0.40
  PassengerDefaultRuby /Users/lassy423/.rbenv/versions/2.1.1/bin/ruby
</IfModule>

RailsEnv development
<VirtualHost *:80>
    ServerName somedomain.com
    # !!! Be sure to point DocumentRoot to 'public'!
    DocumentRoot /Users/lassy423/demosite/public
    SetEnv GEM_HOME /Users/lassy423/.rbenv/versions/2.1.1/gemsets/demosite-gemset/
    <Directory "/Users/lassy423/demosite/public">
        # This relaxes Apache security settings.
        AllowOverride none
        # MultiViews must be turned off.
        Options -MultiViews
        Allow from all
    </Directory>
</VirtualHost>

참고


  • cannot load such file — bundler/setup (LoadError) - Stack Overflow
  • 좋은 웹페이지 즐겨찾기