Rails 3.1プロダクションへの配備(Apache&Passengerを使用)資産の問題

Rails 3.1では、アセットパイプラインの処理方法が変更され、プロダクションに配備する際に問題が発生しています。

私はApacheとPassengerを使用していますが、うまくいくようです。

私の制作はこれのように設定されています(今のところ)。

# congif/environments/production.rb
config.cache_classes = false
config.consider_all_requests_local       = true
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache

rake資産を実行する:Ubuntuでプリコンパイルしてサーバを起動する。そして...何もない。私のイメージは読み込まれません。

伝説の「このURLで画像を見つけることができません」ボックス。

私はrakeアセットを実行します:CenにSでプリコンパイルしてサーバを起動します。そして...許可エラー。

*Error Compiling CSS Asset*
Errno::EACCESS: Permission Denied - [app path]/tmp/cache/assets/E95
[path に RVM Ruby]/fileutils.rb:243:in 'mkdir'

私はそれを動かすことができません。どんな助けでも大歓迎です。ありがとうございました!

更新

このソリューションは毎回私のために働いています:

最初にあなたの資産を浄化する

rm -rf public/assets

そして

rake assets:clean RAILS_ENV=production

次に、#production.rbの変更で

config.assets.compile = false

config.assets.compile = true

Third, run に precompile your assets

rake assets:precompile RAILS_ENV=production

第4に、#production.rbの変更で

config.assets.compile = true

back に

config.assets.compile = false

第5に、次のコマンドを実行してサーバーを再起動します。

にuch tmp/restart.txt

Sixth, un-restrict permissions on your newly created assets by running this commそして

chmod -R 777 public/assets

7つめ、お祝いください!

10

4 答え

それは簡単な許可問題です。サーバー/デーモンに、[app_path]/tmp内のファイルを再帰的に作成する権限を与えます。

サーバープロセスが www-data ユーザーで実行されていると仮定すると、次のようになります。

cd APP_PATH
chmod -R u+w tmp

ディレクトリがユーザーに属していない場合は、所有権を変更する必要があります。

chown -R www-data tmp
8
追加された
ヘロクでどうやってやるの?私は画像が私にアクセス拒否の治療を与えているのと同じ問題を抱えています
追加された 著者 iGbanam,
私はローカルで変更を加え、それを英雄に押し込んだ。すべてうまくいく
追加された 著者 iGbanam,
私はこれを試して、それはまだ同じエラーで私と戦っている。私はCentOSにあり、www-dataは有効なユーザーではありません。私はそれをApacheのユーザーに試しました。アップデート:私はchown-R 755 tmpをやってくれました。
追加された 著者 mikeborgh,
私のCentOSのエラーを修正し、Michael de Silvaが私のUbuntuエラーを修正しました。みんなありがとう!
追加された 著者 mikeborgh,

Try creating public/assets via sudo or try performing rvmsudo rake assets:precompile - essentially, it's not able to create the directory on your server — hence the error.

4
追加された
あなたは私のUbuntuのエラーを修正し、Topekは私のCentOSのエラーを修正しました。みんなありがとう!
追加された 著者 mikeborgh,

Windows 8の場合:

  1. スタイルシートへの参照を削除する
  2. 制作を再開する
  3. ブラウザを使用して影響を受けるページに移動する
  4. スタイルシートの参照を元に戻す
  5. 制作を再開する
  6. 私のために働いた!
0
追加された

あなたの更新されたソリューションは私のためには機能しませんでした。 私はレール4.2にあり、CSSとjsは私が設定したときにのみ動作します config.serve_static_files = true(推奨されていませんが、ここで動作させることができる唯一の方法です)。

0
追加された
これは答えではないようです。これはコメントとして投稿される方が良いかもしれません。
追加された 著者 Alastair Brown,