気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

書籍「Railsによるアジャイル Webアプリケーション開発」16章

タスクK: デプロイと本番環境

途中、時間節約のため12章〜15章の記載は省略

デプロイに関しては深く理解したいため、
理解した事についてまとめていく。


16.1 イテレーションK1:Phusion Passenger とMySQLを使ったデプロイ

開発環境
サーバー:Webrick
→動作速度、メモリ使用量が良くない

デプロイ本番環境
サーバー:Apache
Webrickより性能が良い。複数プロセスも処理可能
そのため、こちらを本番環境では導入

Phusion Passengerとは?
→Appache上でrailsを動作させるためのモジュール


Passengerのインストール

Apacheサーバーのインストールされているかを確認
macなのでインストール済み。

システム環境/共有でWeb共有を有効にする
http://wiedii.hatenablog.com/entry/2013/10/31/121926
→要はApacheを起動することなんですね。なるほど。

次にPassengerのインストール

gem install passenger
passenger-install-apache2-module

gem install passengerは3分ぐらい、インストールに時間がかかった。
最初、表示が動かなかったので、止まっているのかと思ったw


apache設定の更新

Passengerから修正内容(下記のような数行)を指示される

LoadModule・・・

Apache設定ファイルのありかは以下で検索

apachectl -V | grep SERVER_CONFIG_FILE


Apacheの設定

httpd.conf

# アプリケーションを複数動作させるための設定(LISTEN 80より前に記載)
NameVirtualHost *:80

#リクエストをアプリケーションに振り分ける設定。下記をアプリケーション毎に指定

ServerName localhost
DocumentRoot /Users/username/depot/public

AllowOverride all
Options -MultiViews
Order allow,deny
Allow from all


設定ファイル内のApachのログは以下の文言で検索

アクセスログ
CustomLog

エラーログ
ErrorLog


設定後にApache serverを再起動

sudo apachectl restart

クライアント側のホスト名の定義

/etc/hosts

127.0.0.1 depot.myhost.com


MySQLデータベースの利用

SQLiteを利用していたのをMySQLへ変更。
SQLiteは膨大なアクセスが同時に発生するWebサイトでは向いていない。
今回はそういうWebサイトを想定しているのでMySQLをインストールする。

インストール方法

#インストール
brew update
brew install mysql

#インストール内容を確認
brew info mysql

#MySQLの起動
mysql.server start

#MySQLへのログイン
mysql -uroot

#DB作成、権限設定
CREATE DATABASE depot_production;
GRANT ALL PRIVILEGES ON depot_production.*
  TO 'username'@'localhost' IDENTIFIED BY 'password';
EXIT;

#作成ユーザーにおけるログイン
mysql -u username -p depot_production

参考URL http://qiita.com/hkusu/items/cda3e8461e7a46ecf25d

データベースロード

rake db:setup RAILS_ENC="production"

これがうまくいかず。。。
budle installして不足しているgemを入れてくれと言われるが。

bundle installすると今度は以下のエラーが

% bundle install
/Users/username/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': dlopen(/Users/username/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin12.5.0/openssl.bundle, 9): Symbol not found: _SSLv2_client_method (LoadError)

再度rubyをインストールし直すと良いと書いているが
http://stackoverflow.com/questions/25492787/ruby-bundle-symbol-not-found-sslv2-client-method-loaderror

これを参考に以下を実行。が、エラーが発生。

rbenv install 2.0.0-p247

Last 10 log lines:
readline.c: In function ‘username_completion_proc_call’:
readline.c:1688: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:1688: error: (Each undeclared identifier is reported only once


ちょっと、置いておきます。つぼにハマりそうなので。