0

アタッチメント モデルを持ち、Paperclip gem を使用する Rails 3 アプリケーションがあります。開発環境ではすべて正常に動作しますが、本番サーバーではアップロードされた画像にアクセスできません。画像は本来あるべき適切なフォルダーにありますが、ブラウザーで画像にアクセスしようとすると、単に 404 ページが表示されます。

アップロード フォルダーは public フォルダーの下にあり、「uploads」と呼ばれます。

これにアクセスできます:「app_url/uploads/test.html」は、手動で作成して動作するかどうかを確認します

しかし、私はこれにアクセスできません: "app_url/uploads/test.jpg" は、Paperclip 経由でアプリケーション内にアップロードします。

これはサーバー構成と関係があると推測できますが、私は専門家ではないため、サポートが必要な場合があります。

ありがとう

アップデート

アップロードされたファイルが「nobody」に属していることに気付きました。手動で所有者を「root」に変更すると、正常に機能しているようです。したがって、ファイルが「ルート」に属するようにペーパークリップに指示する方法を見つける必要があります

4

1 に答える 1

0

root としてファイルを書き込める Web アプリケーションを用意するのは得策ではありません。ファイルのアクセス許可は、ファイルを書き込むプロセスから派生します。Passenger を使用している場合、ユーザー切り替えの概念があります。

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerDefaultUser

アプリの起動時に、Passenger はこれらのファイルを所有しているユーザーを特定しようとし、アプリケーション プロセスをそのユーザーに切り替えようとします。失敗した場合のデフォルトは「nobody」です。

ファイル レベルでアプリケーションのアクセス許可を確認します。サーバー上のアプリケーションごとに 1 つのユーザー アカウントが必要です。アプリケーション (パブリック ディレクトリより上のディレクトリとコンテンツ) は、このユーザーが所有する必要があります。public にあるファイルは、他の人が読み取れるようにする必要があるため、Web サーバーもそれらを取得できます。

展開に Capistrano を使用していますか?

于 2013-05-23T12:30:45.390 に答える