環境
ruby 2.5.1
rails 5.0.7
capistrano 3.11.2
capistrano 5.5.1
実現したいこと
現在ポートフォリオを作成中で、
以下の記事を参考にデプロイまで辿りつきました。
リンク内容
さらにAWSのACM,Route53,ALBを用いて、ドメイン名にHTTPSでアクセスできるまでは実装できたのですが、
そこからcapistranoによる自動デプロイを
こちらの記事
リンク内容
を参考に試してみましたがエラーが起きどうしても前に進みません。
エラー
#bundle exec cap production deploy実行後↓ Caused by: SSHKit::Command::Failed: git exit status: 128 git stdout: Nothing written git stderr: Permission denied (publickey). fatal: Could not read from remote repository.
INFO [8540a485] Finished in 0.252 seconds with exit status 0 (successful). INFO [8ccb5677] Running /usr/bin/env git ls-remote git@github.com:ユーザー名/リポジトリ名.git HEAD as ユーザー名@IP DEBUG [8ccb5677] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.5.1" GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/git-ssh-ファイル名-production-ホームディレクトリ.sh" ; /usr/bin/env git ls-remote git@github.com:gitのユーザー名/ファイル名.git HEAD ) DEBUG [8ccb5677] Permission denied (publickey). DEBUG [8ccb5677] fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
コード
ruby
1#capfile 2require 'capistrano/setup' 3require 'capistrano/deploy' 4require 'capistrano/rbenv' 5require 'capistrano/bundler' 6require 'capistrano/rails/assets' 7require 'capistrano/rails/migrations' 8 9Dir.glob('lib/capistrano/tasks/*.rb').each { |r| import r }
#config/deploy.rb lock '3.11.2' set :application, 'ファイル名' set :repo_url, 'git@github.com:のユーザー名/ファイル名.git' set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads') set :linked_files, fetch(:linked_files, []).push('config/settings.yml') set :deploy_to, '/var/www/projects/ファイル名' set :rbenv_type, :user set :rbenv_ruby, '2.5.1' set :log_level, :debug set :ssh_options, auth_methods: ['publickey'], keys: ['~/.ssh/key.pem'] set :linked_files, %w{ config/secrets.yml } set :keep_releases, 5 namespace :deploy do desc 'Restart application' task :restart do invoke 'unicorn:restart' end desc 'Create database' task :db_create do on roles(:db) do |host| with rails_env: fetch(:rails_env) do within current_path do execute :bundle, :exec, :rake, 'db:create' end end end end desc 'Run seed' task :seed do on roles(:app) do with rails_env: fetch(:rails_env) do within current_path do execute :bundle, :exec, :rake, 'db:seed' end end end end after :publishing, :restart after :restart, :clear_cache do on roles(:web), in: :groups, limit: 3, wait: 10 do end end end
ruby
1#config/deproy/production.rb 2server 'IP', user: 'user名', roles: %w{app db web}
ruby
1#config/unicorn/production.rb 2$worker = 2 3$timeout = 30 4$app_dir = "/var/www/projects/ファイル名/current" 5$listen = File.expand_path 'tmp/sockets/.unicorn.sock', $app_dir 6$pid = File.expand_path 'tmp/pids/unicorn.pid', $app_dir 7$std_log = File.expand_path 'log/unicorn.log', $app_dir 8 9 10worker_processes $worker 11working_directory $app_dir 12stderr_path $std_log 13stdout_path $std_log 14timeout $timeout 15listen $listen 16pid $pid 17 18preload_app true 19 20 21before_fork do |server, worker| 22 defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! 23 old_pid = "#{server.config[:pid]}.oldbin" 24 if old_pid != server.pid 25 begin 26 Process.kill "QUIT", File.read(old_pid).to_i 27 rescue Errno::ENOENT, Errno::ESRCH 28 end 29 end 30end 31 32 33after_fork do |server, worker| 34 defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection 35end
ruby
1#lib/capistrano/tasks/unicorn.rb 2 3#unicornのpidファイル、設定ファイルのディレクトリを指定 4namespace :unicorn do 5 task :environment do 6 set :unicorn_pid, "#{current_path}/tmp/pids/unicorn.pid" 7 set :unicorn_config, "#{current_path}/config/unicorn/production.rb" 8 end 9 10#unicornをスタートさせるメソッド 11 def start_unicorn 12 within current_path do 13 execute :bundle, :exec, :unicorn, "-c #{fetch(:unicorn_config)} -E #{fetch(:rails_env)} -D" 14 end 15 end 16 17#unicornを停止させるメソッド 18 def stop_unicorn 19 execute :kill, "-s QUIT $(< #{fetch(:unicorn_pid)})" 20 end 21 22#unicornを再起動するメソッド 23 def reload_unicorn 24 execute :kill, "-s USR2 $(< #{fetch(:unicorn_pid)})" 25 end 26 27#unicronを強制終了するメソッド 28 def force_stop_unicorn 29 execute :kill, "$(< #{fetch(:unicorn_pid)})" 30 end 31 32#unicornをスタートさせるtask 33 desc "Start unicorn server" 34 task start: :environment do 35 on roles(:app) do 36 start_unicorn 37 end 38 end 39 40#unicornを停止させるtask 41 desc "Stop unicorn server gracefully" 42 task stop: :environment do 43 on roles(:app) do 44 stop_unicorn 45 end 46 end 47 48#既にunicornが起動している場合再起動を、まだの場合起動を行うtask 49 desc "Restart unicorn server gracefully" 50 task restart: :environment do 51 on roles(:app) do 52 if test("[ -f #{fetch(:unicorn_pid)} ]") 53 reload_unicorn 54 else 55 start_unicorn 56 end 57 end 58 end 59 60#unicornを強制終了させるtask 61 desc "Stop unicorn server immediately" 62 task force_stop: :environment do 63 on roles(:app) do 64 force_stop_unicorn 65 end 66 end 67end
以上です。
エラー内容などで検索すると
https://qiita.com/ryic/items/24b3abc36f5697c945b2
にあるように
ruby
1ssh-add ~/.ssh/key
このコマンドで解決するという記事がいくつかヒットするのですが、よく理解できておりません。
どなたかお分かりになる方いらっしゃればぜひ教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/13 15:54
2020/02/13 16:25 編集
2020/02/13 17:20 編集
2020/02/13 22:53
2020/02/14 01:37 編集
2020/02/14 17:36
2020/02/15 02:50