首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署过程中使用capistrano 3时遇到问题

部署过程中使用capistrano 3时遇到问题
EN

Stack Overflow用户
提问于 2014-01-07 08:51:05
回答 3查看 2.5K关注 0票数 4

我在部署过程中遇到了使用capistrano 3的问题。我的应用程序默认情况下运行到/tmp目录,尽管我提到了部署路径(Deploy_to)。运行cap使用的git-ssh脚本时有一些权限被拒绝的错误。

$ cap开发部署:检查

代码语言:javascript
复制
 INFO [8ad6d60d] Running mkdir -p /tmp/myapp/ on 40.12.255.11
 INFO [8ad6d60d] Finished in 10.468 seconds with exit status 0 (successful).
 INFO Uploading /tmp/myapp/git-ssh.sh 100.0%
 INFO [b1e9863e] Running chmod +x /tmp/myapp/git-ssh.sh on 40.12.255.11
 INFO [b1e9863e] Finished in 8.093 seconds with exit status 0 (successful).

$ cat /tmp/myapp/git-ssh.sh

代码语言:javascript
复制
#!/bin/sh -e

exec /usr/bin/ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no "$@"

config/deploy.rb

代码语言:javascript
复制
set :application, "myapp"
set :scm, :git
set :repo_url,  "git@github.com:example/webapp.git"
set :deploy_to, "/home/ec2-user/capistrano-3/myapp"
set :ssh_options, {:keys => ["#{ENV['HOME']}/.ssh/myapp.pem"] }

set :log_level, :info
set :rvm_ruby_string, '2.0.0'
set :rvm_type, :user

set :branch, "master"
set :user, "ec2-user"
set :use_sudo, false
set :keep_releases, 2
set :git_shallow_clone, 1
set :deploy_via, :copy

set :whenever_command, "bundle exec whenever"
require 'sidekiq/capistrano'

namespace :deploy do
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      # Your restart mechanism here, for example:
      # execute :touch, release_path.join('tmp/restart.txt')
    end
  end
  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      # Here we can do anything such as:
      # within release_path do
      #   execute :rake, 'cache:clear'
      # end
    end
  end

  after :finishing, 'deploy:cleanup'

end

Capfile

代码语言:javascript
复制
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rvm'
require 'capistrano/bundler'

Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }

config/deploy/development.rb

代码语言:javascript
复制
set :deploy_to, "/home/ec2-user/capistrano-3/myapp"
set :rails_env, "development"
set :unicorn_env, "development"
server "ec2-user@40.12.255.11", user: "ec2-user", roles: %w{web app db}
set :branch, ENV["REVISION"] || ENV["BRANCH_NAME"] || "master"

我的问题是

1.为什么生成tmp/myapp?我在deploy_to中提到了这条路。如何克服这一问题?

2.如何避免生成git-ssh.sh文件。正如上面提到的,它有一些密码问题。我怎样才能克服所有的问题,才能有适当的部署。

提前感谢您的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-17 02:17:46

  1. 实际上,/tmp/myapp并不是运行该应用程序的地方。它是git:包装器任务的一部分,它创建该文件夹并检查它是否具有正确的权限。一旦部署,它将输出到您指定的正确文件夹“/home/ec2-user/capistrano 3/myapp”
  2. 请附上错误日志,以便更好地了解那里发生的事情。deploy:check在“退出状态0(成功)”上面是成功的。

可以使用:tmp_dir引用:https://github.com/capistrano/capistrano/blob/master/README.md#configuration更改tmp目录。

票数 1
EN

Stack Overflow用户

发布于 2014-11-21 11:08:05

为了解决这个问题,需要在deploy.rb文件中添加以下行:

代码语言:javascript
复制
set :tmp_dir, "/home/user/tmp"
票数 0
EN

Stack Overflow用户

发布于 2014-01-07 13:48:23

此命令解决了capistrano3问题。

cap jefferson deploy:setup

cap jefferson deploy:check

cap jefferson deploy

重新启动系统

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20967346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档