タスク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
ちょっと、置いておきます。つぼにハマりそうなので。