3

パブリックフォルダにその場でHTMLファイルを作成するページキャッシュを設定しました。RailsアプリのデプロイにCapistranoを使用しています。

問題は、Capistranoの古いリリースをクリーンアップする必要があるときに始まります。キャッシュファイルはrailsによって所有されます。つまり、デプロイユーザーはファイルを削除できません。

サーバーへのroot権限がないため、昇格された特権を使用することはできません。

提案されている1つの可能性は、キャッシュを共有フォルダーにシンボリックリンクすることです。ただし、これではリリース間のキャッシュがクリアされないため、危険な場合があります。

4

1 に答える 1

0

主な問題は、capistrano タスクを実行するときにユーザー (通常は deploy ユーザー) が存在することです。そのため、ファイルを作成/削除するには、deploy ユーザーにそれらに対する権限が必要です。

したがって、Web ユーザー (この場合は rails) は deploy ユーザーとは関係がなく、あなたが言ったように、サーバー (おそらくホスティング会社ですよね?) で root 権限を持つことはできません。

http://mywebsite.com/clear_cacheのように、自分だけがアクセスできる Web サイトでアクションを作成できます 。

そしてそのアクションで、古いデプロイのそれぞれを一覧表示し、古いデプロイ内のキャッシュ ファイルをクリアするコードを実際に記述します。これにより、ファイルを削除するユーザーは Web ユーザー (rails) になります。

于 2012-12-05T12:44:06.733 に答える