読者です 読者をやめる 読者になる 読者になる

nginx + passengerで超適当なRails環境を作る

server
  • 2010/03/18 ディレクトリを分けた場合のパス指定が間違っていたので修正

自分専用redmineを動かしているサーバが貧弱すぎて、Apache+passengerだと眠くなるくらい遅くなる。
nginxなら少しは軽くなるかなーとか適当に考えて入れてみる。

使った環境:

  • CPU: Atom 230
  • Mem: 2GB

Passengerを入れる

$sudo gem install passenger

nginxの依存モジュールを入れておく

$ sudo apt-get install libpcre3-dev libssl-dev

nginxモジュールを入れる

$ passenger-install-nginx-module

nginxのソースコードのディレクトリと、インストール先のディレクトリを指定。
configureオプションを指定すると、nginxがmakeされる。

nginx.confの編集

nginxモジュールインストール完了後に設定例が出てくるので、その通りに追記。

http {
    ...
    passenger_root /home/user/.gem/ruby/1.8.7/gems/passenger-2.2.4;
    passenger_ruby /local/ruby/1.9.2/bin/ruby1.9;
    ...

    server {
      listen 80;
      server_name example.com;
      root /local/nginx/html/hoge;
      passenger_enabled on;
      passenger_base_uri /hoge;
      # auth_basic "Restricted";
      # auth_basic_user_file htpasswd;
    }
}

通常のディレクトリとRailsのディレクトリをServer Nameで分ける

普通のページとRailsアプリを同時に動かして、どちらにもbasic認証をかけておきたい!
てことで設定変更。
locationの指定に気づくまでに少しかかった。

http {
    ...
    passenger_root /home/user/.gem/ruby/1.8.7/gems/passenger-2.2.4;
    passenger_ruby /local/ruby/1.9.2/bin/ruby1.9;
    ...
    server {
      listen 80;
      server_name example.com;
      root html/hoge;

      location / {
        auth_basic "Restricted";
        auth_basic_user_file htpasswd;
      }
    }
    server {
      listen 80;
      server_name example2.com;
      root html/example2.com;
      passenger_enabled on;
      passenger_base_uri /hoge2;
      rails_env production;

      location / {
        passenger_enabled on;
        auth_basic "Restricted";
        auth_basic_user_file htpasswd;
      }
    }
}

nginxの設定、どこかにまとまった資料とかないかしら。
できれば日本語か英語で・・・