SyntaxHighlighter

2013年5月14日火曜日

PassengerでRailsアプリケーションをデプロイ

Passengerを用いてRailsアプリケーションをサーバへデプロイする際に行ったことをメモ。
サーバのOSはCentOS 6.4、DBはMySQL 5.6.10で、Passengerがインストールされていることを前提に。Passengerのインストールについては下記ページが参考になる。

Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用

アプリケーションのアップロード

Apacheのドキュメントルート(/var/www/html/など)にフォルダごとFTPでアップロードする。httpd.confの設定を変えれば、他の場所にしても構わない。

所有者を変更

Passengerはroot権限でrailsアプリケーションを動作させることができないので、chownコマンドでフォルダの所有者を変更する。
% chown -R username:group /var/www/html/RAILS_ROOT

database.ymlの設定

開発機とサーバ機でMySQLのソケットやユーザ名が異なる場合は、development(開発用)、test(テスト用)、production(本番用)それぞれについてdatabase.ymlを修正する必要がある。

RAILS_ROOT/config/database.yml
production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: railsapp_production
  pool: 5
  username: username
  password: pass
  socket: /tmp/mysql.sock
修正する必用があるのは多くの場合、username/password/socket欄だろうか。
mysql.sockの場所が分からないのであれば下記コマンドを実行する。パスワードを求められるので、指定したユーザに対応するパスワードを入力する。
% mysqladmin -u username -p version
出力結果(下記11行目)にソケットの場所が表示されている。
mysqladmin  Ver 8.42 Distrib 5.6.10, for osx10.8 on x86_64
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version          5.6.10
Protocol version     10
Connection          Localhost via UNIX socket
UNIX socket          /tmp/mysql.sock
Uptime:               29 days 23 hours 20 min 24 sec

Threads: 3  Questions: 37312  Slow queries: 0  Opens: 100  Flush tables: 1  Open tables: 67  Queries per second avg: 0.014

mysql2アダプタをインストール

まずはMySQLの開発ライブラリをインストール。
% sudo yum install mysql-devel
Gemfileに以下を記述。

RAILS_ROOT/Gemfile
gem 'mysql2'
その後でbundle installを実行。

本番用データベースを作成

Passenger上で動くrailsアプリケーションは標準でproductionモードでの動作となるので、それに対応するデータベースをサーバ上で作成する必要がある。
% rake db:create RAILS_ENV=production
% rake db:migrate RAILS_ENV=production
これで完了。

0 件のコメント:

コメントを投稿