質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.12%

capistrano,「Insecure operation」でbundle installできない

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,334

tkkk

score 5

前提・実現したいこと

現在Ruby(Ruby On Rails)でアプリケーションを開発しています。
ローカルからリモートサーバーにcapistranoでrailsアプリケーションをデプロイしたいのですが、capistranoの「bundler」のタスクを実行する際に、下記のログの通り、SSHKit::Runner::ExecuteError: Exception while executing as deploy_user@IP_address: bundle exit status: 1 bundle stdout: /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:310:in expand_path': Insecure operation - expand_path (SecurityError)`でbundle installができない状態です。

エラーログなど

.長いため省略しています
  INFO [5c9a0279] Running sudo rbenv exec bundle install --path /var/www/myapp/shared/bundle --without development test --deployment --quiet as deploy_user@153.126.179.98
 DEBUG [8c7ee5b1] Command: cd /var/www/myapp/releases/20160821142536 && ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.1" ; /usr/local/rbenv/bin/rbenv exec bundle install --path /var/www/myapp/shared/bundle --without development test --deployment --quiet )
 DEBUG [8c7ee5b1]       /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:310:in `expand_path': Insecure operation - expand_path (SecurityError)
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:310:in `block in which'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:308:in `each'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:308:in `find'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:308:in `which'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:377:in `git_present?'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/git/git_proxy.rb:54:in `initialize'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/env.rb:78:in `new'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/env.rb:78:in `git_version'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/env.rb:22:in `report'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:74:in `request_issue_report_for'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:40:in `log_error'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:100:in `rescue in with_friendly_errors'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:98:in `with_friendly_errors'
        from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/exe/bundle:19:in `<top (required)>'
        from /usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `load'
        from /usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy_user@IP_address: bundle exit status: 1
bundle stdout: /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:310:in `expand_path': Insecure operation - expand_path (SecurityError)  
       ↑↓ //上のエラーのパスと同じ (from/~の内容)
bundle stderr: Nothing written

Tasks: TOP => deploy:updated => bundler:install
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as deploy_user@IP_address: bundle exit status: 1
bundle stdout: /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:310:in `expand_path': Insecure operation - expand_path (SecurityError)
       ↑↓ //上のエラーのパスと同じ (from/~の内容)
bundle stderr: Nothing written
Admin-Mac:myapp admin$ 

deploy.rb

set :application, 'myapp'
set :repo_url, 'git@bitbucket.org:myapp/myapp.git'
set :puma_threads,    [4, 5]
set :puma_workers,    1
set :rbenv_ruby, '2.3.1'
set :rbenv_path, '/usr/local/rbenv'
set :pty,             true
set :use_sudo,        false
set :stage,           :production
set :deploy_via,      :remote_cache
set :deploy_to,       '/var/www/myapp'
set :puma_bind,       "unix://#{shared_path}/tmp/sockets/puma.sock"
set :puma_state,      "#{shared_path}/tmp/pids/puma.state"
set :puma_pid,        "#{shared_path}/tmp/pids/puma.pid"
set :puma_access_log, "#{release_path}/log/puma.error.log"
set :puma_error_log,  "#{release_path}/log/puma.access.log"
set :puma_preload_app, true
set :puma_worker_timeout, nil
set :puma_init_active_record, true  # Change to false when not using ActiveRecord

## Defaults:
set :scm,           :git
set :branch,        :master
set :format,        :pretty
set :log_level,     :debug
set :keep_releases, 6

## Linked Files & Directories (Default None):
set :linked_files, %w{config/database.yml config/secrets.yml}
set :linked_dirs,  %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

namespace :deploy do

  desc 'Initial Deploy'
  task :initial do
    on roles(:app) do
      before 'deploy:restart', 'puma:start'
      invoke 'deploy'
    end
  end

  before :starting,     :check_revision
  after  :finishing,    :compile_assets
  after  :finishing,    :cleanup
  after  :finishing,    :restart
end

試してみたこと

[deploy_user@ik1-325-22 ~]$ rbenv version
2.3.1 (set by /usr/local/rbenv/version)

[deploy_user@ik1-325-22 ~]$ bundle version
/usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:310:in `expand_path': Insecure operation - expand_path (SecurityError)
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:310:in `block in which'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:308:in `each'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:308:in `find'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:308:in `which'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:377:in `git_present?'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/git/git_proxy.rb:54:in `initialize'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/env.rb:78:in `new'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/env.rb:78:in `git_version'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/env.rb:22:in `report'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:74:in `request_issue_report_for'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:40:in `log_error'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:100:in `rescue in with_friendly_errors'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:98:in `with_friendly_errors'
    from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/exe/bundle:19:in `<top (required)>'
    from /usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `load'
    from /usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
[deploy_user@ik1-325-22 ~]$ sudo bundle version
Bundler version 1.12.5

以上の内容からsudoをつければいけるのかと思い、deploy.rbset :rbenv_prefix, "sudo rbenv exec”を追記して実行しましたが、下記のエラー内容...

.
.冒頭のログとほぼ同じため省略しています。
.
 INFO [5c9a0279] Running sudo rbenv exec bundle install --path /var/www/myapp/shared/bundle --without development test --deployment --quiet as deploy_user@IP_address
 DEBUG [5c9a0279] Command: cd /var/www/myapp/releases/20160821145425 && ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.1" ; sudo rbenv exec bundle install --path /var/www/myapp/shared/bundle --without development test --deployment --quiet )
 DEBUG [5c9a0279]       An error occurred while installing nio4r (1.2.1), and Bundler cannot continue.
Make sure that `gem install nio4r -v '1.2.1'` succeeds before bundling.
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy_user@IP_address: bundle exit status: 5
bundle stdout: An error occurred while installing nio4r (1.2.1), and Bundler cannot continue.
Make sure that `gem install nio4r -v '1.2.1'` succeeds before bundling.
bundle stderr: Nothing written

Tasks: TOP => deploy:updated => bundler:install
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as deploy_user@IP_address: bundle exit status: 5
bundle stdout: An error occurred while installing nio4r (1.2.1), and Bundler cannot continue.
Make sure that `gem install nio4r -v '1.2.1'` succeeds before bundling.
bundle stderr: Nothing written

環境

サーバーOS: CentOS6.8
Ruby: 2.3.1
Ruby On Rails: 5.0.0
1つのサーバーにnginx+puma+Railsアプリケーション
リストrbenvを下記のサイトを参考にAnsibleにてシステムワイドにインストールをして実行しています。
http://ria10.hatenablog.com/entry/2015/04/14/132129

かなりはまってしまい自分では解決できそうになかったので投稿させていただきました。どうかよろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

deploy 先のサーバ上で以下のコマンドを実行するとどうなるのでしょうか?

$ cd /var/www/myapp/releases/20160821142536 &&
 ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.1" ;
   /usr/local/rbenv/bin/rbenv exec bundle install --path
    /var/www/myapp/shared/bundle --without development test --deployment --quiet )

※ 適当に折り返してます。

$SAFE、なんて指定しないですよね… 何が起こってるんでしょうね?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる