2017-05-24 11 views
0

私は、TempFileを作成するAWS/EBでRailsアプリケーションを実行しようとしています。開発ではコードが正しく動作しますが、プロダクションでは失敗します。ここで実行されるコードは次のとおりです。Rails AWS/EB tmpファイルのアクセス許可

v_index_file_save = Tempfile.new(['index','.lst']) 

私は、次のエラーメッセージが表示されます。

Errno::EACCES: Permission denied @ dir_s_mkdir - /var/app/current/tmp/1495598860-11267-0001-8597 

私は/ tmpディレクトリのパーミッションを変更するには、プリコンパイルスクリプトを作成することを示唆しているエントリを見つけました。

commands: 
    01_set_tmp_permissions: 
    command: "chmod 0777 /var/app/current/tmp" 

展開は一見正常に動作しますが、アクセス権で/ tmp /ディレクトリに更新されていません。ここではザ・スクリプトです。助言がありますか??

答えて

1

まず、commandがあなたの望むことをしていない理由は、それが早すぎることです。あなたがthe documentationを確認した場合、それは

コマンドは、名前のアルファベット順に処理されていると言い、彼らは、アプリケーションとWebサーバが設定され、アプリケーション バージョンのファイルが抽出される前に 実行します。

何が起こっているのかは、すぐに置き換えられるバージョンのアプリケーションを含むディレクトリのアクセス許可を変更していることです。 、展開に後で実行

container_commands: 
    01_set_tmp_permissions: 
    command: "chmod 0777 /var/app/ondeck/tmp" 

コンテナコマンド:あなたはこのようcontainer commandを使用して、より運を持っているかもしれません

(。EBは/var/app/currentを削除し、最終的には/var/app/current/var/app/ondeckの名前を変更し、/var/app/ondeckに新しいバージョンを抽出します)それはあなたが望むことをするかもしれません。

つまり、すでに/var/app/current/tmpへの書き込みアクセス権があるはずです。 ls -ld /var/app/current/tmpを実行するとどうなりますか?あなたのアプリはどんなユーザーで実行されていますか?

関連する問題