スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

『RailsによるアジャイルWebアプリケーション開発 第4版』 第16章 第1節 補足

Railsの勉強に使わせていただいている『RailsによるアジャイルWebアプリケーション開発 第4版』ですが、わかりにくい場所が何箇所かあります。
いや、すべての環境をカバーするのが無理なのはわかってるんですが。

とはいえ、本だけ見ててもサクッと進めないのは事実なので、また、この章(『16.1 Phusion PassengerとMySQLを使ったデプロイ』)はわかりにくい場所が特に多いので、自分の環境で気になったところを簡単に補足しておきます。

【環境】
Ubuntu 12.04
Apache 2.2.20
ruby 1.9.2p320
Rails 3.1.0


【1】p.219「Passengerのインストール」

Passengerのインストールに絡んで、apacheの設定をいじるあたりで、

$ apache -V | grep HTTPD_ROOT
$ apache -V | grep SERVER_CONFIG_FILE

して設定ファイルの場所(/etc/apache2/apache2.conf)を調べ、設定ファイルの「Listen 80」の後ろに

NameVirtualHost *:80

と書き込めというくだりがあるんですが、apache2.confをいくら探しても「Listen 80」が見つかりません。

というのも、Debian/Ubuntuではこのapache2.confとは別に/etc/apache2/ports.confという設定ファイルがあり、ここにポート関連の設定を書き込むみたいなので、このファイルを書き換えてください。
(ただし、ports.confには既に「NameVirtualHost *:80」が書き込まれていると思います)


【2】p.220「ローカルでのアプリケーションのデプロイ」

このセクションでも

<VirtualHost *:80>
 ServerName hostname
 DocumentRoot /home/username/work/depot/public/
 <Directory /home/username/work/depot/public>
  AllowOverride all
  Options -MultiViews
  Order allow,deny
  Allow from all
 </Directory>
</VirtualHost>

などという設定を書き込めと言われますが、どの設定ファイルに書き込めば良いのかが書かれていない。

普通ならapache2.confしかないので大丈夫なんでしょうが、Debian/Ubuntuの場合、この設定もports.confに書き込みます。

この状態でapacheをrestartしてページにアクセスすると「We're sorry, but something went wrong.」というページが表示され、production環境でアプリケーションが動きません。

ちなみに、これはアプリケーションのpublicディレクトリに入っている500.htmlが表示されている状態です。
試しに、適当に作ったindex.htmlをpublicディレクトリに置いてみると、その内容が表示されるのがわかります。

また、ports.confに「RackEnv development」を追加してみると、development環境のアプリケーションが起動します。

いろいろググってみると、偉大なる先人の記事にヒット。
http://d.hatena.ne.jp/tetsuyai/20110920/1316504421

要するにRails 3.1のバグ(?)で、config/evironment/production.rbまわりの設定が原因みたい。

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true

config.assets.compileの値をfalseからtrueに変更すればproduction環境でアプリケーションが起動します。


【3】p.221「MySQLデータベースの利用」

まずはじめに、mysql2のgemをインストールするところ。
書籍に書かれている通りにGemfileを設定してアプリケーションディレクトリで

$ bundle install

を実行すると、gem管理ツールであるbundlerがGemfileに書かれたgemをインストールしてくれます。

また、p.222の

$ mysql -u root

に関してですが、MySQLインストール時(書籍で言うとかなり初めの頃)にパスワードを設定した場合、

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

というメッセージと共に弾かれます。

$ mysql -u root -p

とすれば、コマンド実行直後にパスワードを尋ねられるので、その際に以前設定したパスワードを入力してください。

また、その先のdatabase.ymlの場所は、アプリケーションディレクトリのconfig/database.ymlにあります。
なお、YAMLファイルのインデントにタブは使えないので、半角スペースでインデントしてください。

コメントの投稿

非公開コメント

カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
検索フォーム
カテゴリ
月別アーカイブ
最新記事
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QR
リンク
アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。