【问题标题】:How can I solve Permission denied on deploying app?如何解决部署应用程序时权限被拒绝的问题?
【发布时间】:2014-08-04 21:50:14
【问题描述】:

我已经设置了一个应用程序来部署到托管在 Digital Ocean CentOS 6 服务器上的我的站点,并且我正在使用 Capistrano 从我的开发机器上部署该应用程序。我有一个我推送到的回购设置,并且当我执行 cap development deploy 时我的 Capistrano 配置引用。

我遇到的问题是它抛出了这个错误:

[a7406f5e] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/PopupHub/git-ssh.sh /usr/bin/env git ls-remote git@repo-url-is-here/popup-hub.git )
DEBUG [a7406f5e]    Permission denied (publickey).
DEBUG [a7406f5e]    fatal: The remote end hung up unexpectedly

在 capfile 我有这个:

# Load DSL and Setup Up Stages
require 'capistrano/setup'

# Includes default deployment tasks
require 'capistrano/deploy'


# Includes tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
#   https://github.com/capistrano/rvm
#   https://github.com/capistrano/rbenv
#   https://github.com/capistrano/chruby
#   https://github.com/capistrano/bundler
#   https://github.com/capistrano/rails
#
# require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano/sitemap_generator'

# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }

在我的 config/deploy.rb 我有:

lock '3.1.0'
server "0.0.0.0.0"

set :application, "NameOfApp"
set :scm, "git"
set :repo_url, "git@the-repo-url-is-here/popup-hub.git"
# set :scm_passphrase, ""

# set :user, "deploy"

# files we want symlinking to specific entries in shared.
set :linked_files, %w{config/database.yml}

# dirs we want symlinking to shared
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

SSHKit.config.command_map[:rake]  = "bundle exec rake" #8
SSHKit.config.command_map[:rails] = "bundle exec rails"

set :branch, ENV["REVISION"] || ENV["BRANCH_NAME"] || "master"


set :keep_releases, 20

namespace :deploy do
  desc 'Restart passenger without service interruption (keep requests in a queue while restarting)'
  task :restart do
    on roles(:app) do
      execute :touch, release_path.join('tmp/restart.txt')

      unless execute :curl, '-s -k --location localhost | grep "Pop" > /dev/null'
        exit 1
      end
    end
  end
  after :finishing, "deploy:cleanup"
  after :finishing, "deploy:sitemap:refresh"
end

after "deploy", "deploy:migrate"
after 'deploy:publishing', 'deploy:restart'

# deploy:sitemap:create   #Create sitemaps without pinging search engines
# deploy:sitemap:refresh  #Create sitemaps and ping search engines
# deploy:sitemap:clean    #Clean up sitemaps in the sitemap path
# start new deploy.rb stuff for the beanstalk repo

然后在我的 config/development.rb 中我得到了:

set :stage, :development

set :ssh_options, {
    forward_agent: true,
    password: 'thepassword',
    user: 'deployer',
}

server "0.0.0.0", user: "deployer", roles: %w{web app db}
set :deploy_to, "/home/deployer/development"

set :rails_env, 'development'                  # If the environment differs from the stage name

set :branch, ENV["REVISION"] || ENV["BRANCH_NAME"] || "master"

当我推入 bash cap development deploy 时,错误会进一步上升。

谁能告诉我为什么会这样?到目前为止,我一切正常,并且我在另一个 Digital Ocean 液滴上进行了此设置。

谢谢,

【问题讨论】:

  • 您可以使用本地系统的 ssh 密钥进行 ssh 访问吗?
  • 嗨 Raj,是的,我可以使用 ssh 进入服务器,但它要求我输入密码
  • 你需要上传你的ssh密钥到远程服务器stackoverflow.com/a/25120188/1047207
  • 已上传且权限已更改
  • 我认为权限错误现在应该消失了......我说的对吗?

标签: capistrano digital-ocean


【解决方案1】:

我认为您没有使用本地系统的 ssh 密钥对远程服务器进行 ssh 访问。

如果您在本地系统上没有 ssh 密钥,请生成:

ssh-keygen -t rsa

将本地密钥上传到远程服务器:

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

来源:HowToGeek.com

【讨论】:

  • RAJ,这需要在实际服务器上完成吗?
  • 不,在您的本地系统上
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    相关资源
    最近更新 更多