1

Railsアプリでcarrierwaveを使用してファイルをアップロードしています。開発環境では問題なく動作しますが、実稼働 VM (Ubuntu) では次のエラーが発生します。

users#update で Errno::EACCES が発生しました:

  Permission denied - /home/yards/apps/yardsapp/releases/20130616143623/public/uploads/tmp/20130616-1438-14186-3184
  /usr/local/lib/ruby/1.9.1/fileutils.rb:244:in `mkdir'

何が起こっているのかは理解していますが、修正方法がわかりません。私の capistrano deploy.rb は、ユーザーを root としてセットアップされています。したがって、デプロイ時に新しいリリース フォルダーを作成するとき、アクセス権は root になります (と思います)。

次に、ファイルをアップロードしようとすると、nginx が mkdir を www-data として実行しようとしているため、そのエラーが発生します。

展開後にフォルダーを chown でき、それは機能します...しかし、別の展開では、所有者がデフォルトでルートに設定された別の新しいディレクトリが作成されます。

少なくとも私はこれが起こっていると思います。私がこれをどのように行うべきかについて誰か考えがありますか?

4

2 に答える 2

2

としてデプロイを実行しますwww-data。ユーザーが接続できるようにするには、authorized_keysファイルを調整する必要がある場合もあります。www-data

最速の方法はauthorized_keys、現在使用しているユーザーのファイルをコピーすることです (root であると仮定します)。

mkdir $WWW_DATA_HOME/.ssh
cp ~/.ssh/authorized_keys $WWW_DATA_HOME/.ssh/authorized_keys
chown www-data:www-data $WWW_DATA_HOME/.ssh/authorized_keys

www-dataユーザーがログインできるようにシェルを変更する必要がある場合もあります。

chsh -s /bin/bash www-data

今、あなたはできるはずです

ssh www-data@your-host.tld

してログインします。

于 2013-06-16T14:57:44.970 に答える
0

これは不適切な Capistrano 構成でした。私はカピストラーノのドキュメントに正しく従い(そして、上記のwww-dataと同じ「デプロイヤ」ユーザーを作成しました)、カピストラーノが魅力的に機能しています。また、Capistrano 3 にアップグレードされました。

于 2014-10-08T15:36:08.763 に答える