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

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

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

1回答

2473閲覧

Rails5.1 + capistranoでcap deployした時に'public/assets' を作成できません: ファイルが存在しますというエラーが出る

big2017

総合スコア39

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

1グッド

1クリップ

投稿2017/12/04 10:18

編集2017/12/04 10:28

railsアプリをcapistranoでデプロイする際にディレクトリ関連でのエラーが発生します。
単純な問題のように思えたのですが、なかなか解決できずに困っております。お手数おかけしますがアドバイスいただけると幸いです。

エラーログ

$ bundle exec cap production deploy

00:01 git:check 01 git ls-remote git@github.com:user/sample_app.git HEAD 01 c2asgasgabdd8d81asgasrgacd82609e80 HEAD ✔ 01 user@100.00.000.100 2.637s 00:03 deploy:check:directories 01 mkdir -p /var/www/app/sample_app/shared /var/www/app/sample_app/releases ✔ 01 user@100.00.000.100 0.242s deploy:check:linked_dirs ## ここでエラーが起こります 01 mkdir -p /var/www/app/sample_app/shared/bin /var/www/app/sample_app/shared/log /var/www/app/sample_app/shared/tmp/pids /var/www/app/sample_app/shared/tmp/cache… 01 mkdir: ディレクトリ `/var/www/app/sample_app/shared/public/assets' を作成できません: ファイルが存在します (Backtrace restricted to imported tasks) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing as user@100.00.000.100: mkdir exit status: 1 mkdir stdout: mkdir: ディレクトリ `/var/www/app/sample_app/shared/public/assets' を作成できません: ファイルが存在します mkdir stderr: Nothing written SSHKit::Command::Failed: mkdir exit status: 1 mkdir stdout: mkdir: ディレクトリ `/var/www/app/sample_app/shared/public/assets' を作成できません: ファイルが存在します mkdir stderr: Nothing written

本日の14時頃まではなんの問題もなく同様のコマンドでデプロイができておりました。

思い当たる点として、config/deploy.rbを変更してしまい、そのあとに一度同様のコマンドでデプロイしてしまいました。その後に変更前に戻したりしましたが、エラーが治ることなく今に至っております。

ruby

1 2config/deploy.rb 3 4require 'pry' 5# config valid for current version and patch releases of Capistrano 6lock "~> 3.10.0" 7 8set :application, "sample_app" # アプリケーション名 9set :repo_url, "git@github.com:user/sample_app.git" # デプロイ対象のレポジトリ 10set :deploy_to, '/var/www/app/sample_app' # デプロイするpath先 11 12set :branch, 'master' # ブランチを指定 13set :default_stage, 'development' 14set :scm, :git 15set :deploy_via, :remote_cache 16 17set :log_level, :debug # 出力の制御 18set :pty, true 19set :bundle_binstubs, nil 20 21# Shared に入るものを指定 22set :linked_files, %w{config/database.yml config/secrets.yml} # シンボリックリンクを貼るファイル 23 24set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets bundle public/system public/asset} # sharedにシンボリックリンクを張るディレクトリ指定 25# set :linked_dirs, %w{bin log tmp/pids tmp/cache sockets bundle public/*} #一度こちらをコメントアウトしデプロイしたあとにこの問題が生じたように思われます。 26 27 28# Unicorn 29set :unicorn_pid, "#{shared_path}/tmp/pids/unicorn.pid" 30 31# 5回分のreleasesを保持する 32set :keep_releases, 5 33 34 35after 'deploy:publishing', 'deploy:restart' 36namespace :deploy do 37 38 39 desc 'Restart application' 40 # アプリ再起動を行うタスク 41 task :restart do 42 on roles(:app), in: :sequence, wait: 5 do 43 execute :mkdir, '-p', release_path.join('tmp') 44 execute :touch, release_path.join('tmp/restart.txt') 45 end 46 end 47 # linked_files で使用するファイルをアップロードするタスク 48 # # deployが行われる前に実行する必要がある。 49 desc 'upload important files' 50 task :upload do 51 on roles(:app) do |host| 52 execute :mkdir, '-p', "#{shared_path}/config" 53 upload!('config/database.yml',"#{shared_path}/config/database.yml") 54 upload!('config/secrets.yml',"#{shared_path}/config/secrets.yml") 55 end 56 end 57 58 # webサーバー再起動時にキャッシュを削除する 59 after :restart, :clear_cache do 60 on roles(:web), in: :groups, limit: 3, wait: 10 do 61 #Here we can do anything such as: 62 within release_path do 63 execute :rm, '-rf', release_path.join('tmp/cache') 64 end 65 end 66 end 67 # Flow の before, after のタイミングで上記タスクを実行 68 before :started, 'deploy:upload' 69 after :finishing, 'deploy:cleanup' 70 71 #unicorn 再起動タスク 72 desc 'Restart application' 73 task :restart do 74 invoke 'unicorn:restart' # lib/capustrano/tasks/unicorn.cap 内処理を実行 75 end 76end

私なりに考えた解決方法として、
ディレクトリ `/var/www/app/sample_app/shared/public/assets' を作成できません: ファイルが存在します
とあるのでこのディレクトリを削除しようと試みましたが、うまく削除できずにいます。
どのような方法で削除できますでしょうか。
ローカルと本番サーバーで
rm -rf public/assetsを行いましたがダメでした。

大変お手数おかけしますが、アドバイスいただけませんでしょうか。
何卒よろしくお願い申し上げます。

$ tail -f log/capistrano.log INFO [0db11dc8] Running /usr/bin/env git ls-remote git@github.com:user/sample_app.git HEAD as user@000.00.000.100 DEBUG [0db11dc8] Command: ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.1" GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/git-ssh-sample_app-production-usersugawara.sh" ; /usr/bin/env git ls-remote git@github.com:user/sample_app.git HEAD ) DEBUG [0db11dc8] serfd5f8b0b2809fa40awerhwerh5097fc9e24 HEAD INFO [0db11dc8] Finished in 2.510 seconds with exit status 0 (successful). INFO [cd3913a7] Running /usr/bin/env mkdir -p /var/www/app/sample_app/shared /var/www/app/sample_app/releases as user@000.00.000.100 DEBUG [cd3913a7] Command: ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.1" ; /usr/bin/env mkdir -p /var/www/app/sample_app/shared /var/www/app/sample_app/releases ) INFO [cd3913a7] Finished in 0.258 seconds with exit status 0 (successful). INFO [6753e35d] Running /usr/bin/env mkdir -p /var/www/app/sample_app/shared/bin /var/www/app/sample_app/shared/log /var/www/app/sample_app/shared/tmp/pids /var/www/app/sample_app/shared/tmp/cache /var/www/app/sample_app/shared/sockets /var/www/app/sample_app/shared/bundle /var/www/app/sample_app/shared/public/assets as user@000.00.000.100 DEBUG [6753e35d] Command: ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.1" ; /usr/bin/env mkdir -p /var/www/app/sample_app/shared/bin /var/www/app/sample_app/shared/log /var/www/app/sample_app/shared/tmp/pids /var/www/app/sample_app/shared/tmp/cache /var/www/app/sample_app/shared/sockets /var/www/app/sample_app/shared/bundle /var/www/app/sample_app/shared/public/assets ) DEBUG [6753e35d] mkdir: ディレクトリ `/var/www/app/sample_app/shared/public/assets' を作成できません: ファイルが存在します
Vanri👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しましたので報告させていただきます。
assetsのパスが複数存在していたために、削除ができておりませんでした。

本番サーバーに入って、
sudo rm -rf /var/www/app/sample_app/shared/public/assets

で解決しました。

投稿2017/12/04 14:24

big2017

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問