标签: capistrano

如何在Capistrano的deploy.rb中指明Git用户名和密码?

我正在使用github来存储存储库,而我正在阅读使用Capistrano进行部署:

远程缓存将在你正在部署的服务器上保留一个本地git repo,并且只是从那个而不是整个克隆运行一个fetch".

由于我正在部署的服务器是"我的" 共享主机,我必须在那里安装git.

当我们这样做时,我们通常会定义一个git用户名和git密码.我们应该将这些文件放在这个deploy.rb文件中?

到目前为止,我有:

set :application, "mysite.dev"
set :user, "myuser"
set :repository, "git@github.com:gituser/gitproject.git"
role :web, "dev.mysite.pt"
set :deploy_to, "/home/mysite/www/dev"
set :use_sudo, false
set :scm, :git
set :branch, 'master'

#set :deploy_via, :copy
#set :copy_cache, true
#set :copy_exclude, %w(.git)

set :deploy_via, :remote_cache

task :create_symlinks, :roles => :web do
run "rm #{current_release}/public/.htaccess"
run "ln -s #{current_release}/production/.htaccess
#{current_release}/public/.htaccess"
end

after "deploy:finalize_update", :create_symlinks
Run Code Online (Sandbox Code Playgroud)

我不应该在某处以某种方式在deploy.rb文件中放置对我的共享主机git密码的引用吗?

我有部署服务器用户:

set :user, "myuser"
Run Code Online (Sandbox Code Playgroud)

这个密码是来自github用户的密码,还是我们应该在这里放置我们的共享主机密码?

set :scm_passphrase, "p@ssw0rd"  # The deploy user's password
Run Code Online (Sandbox Code Playgroud)

git ssh capistrano automated-deploy

1
推荐指数
1
解决办法
4861
查看次数

工头是否正常重启?

我即将使用工头在生产中使用upstart导出来开始一些无限的rake任务.

我简陋的"守护进程"就像这样简单:

task magic: :environment do
  loop do
    make_stuff_happen

    sleep 10
  end
end
Run Code Online (Sandbox Code Playgroud)

我想知道工头是否在被要求重启时不会直接杀死进程(例如,capistrano deploy),因为我不希望因此而发生任何损坏的操作.

如果是这样,如何预防呢?

capistrano ruby-on-rails foreman

1
推荐指数
1
解决办法
1721
查看次数

Capistrano::ConnectionError , SocketError: getaddrinfo - 在上限部署

试图使 'FILTER=app cap deploy',但收到此错误。它在一个笔记本上引发,但另一个成功部署。

它可能是什么?

选项:os-x、rails、mongo、ec2、橡胶。

[deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: app.uncoverage.com (SocketError: getaddrinfo: nodename nor servname provided, or not known) connection failed for: app.uncoverage.com (SocketError: getaddrinfo: nodename nor servname provided, or not known) Vyacheslavs-MacBook-Air:uncoverage vekozlov$ git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

UPD 我将主机添加到 /etc/hosts 并且它工作正常。

capistrano ruby-on-rails amazon-ec2 mongodb

1
推荐指数
1
解决办法
2625
查看次数

示例结构 (fabfile) 以共享通用逻辑并允许多个项目/环境

我是 Python 和 Fabric 的新手。我们目前使用 capistrano 并有类似的设置:

/api-b2b
  - Capfile (with generic deployment/setup info)
  /int - target host config (like ip, access etc.)
  /prod - target host config (like ip, access etc.)
  /dev - target host config (like ip, access etc.)
/api-b2c
  /int
  /prod
  /dev
/application1
  /int
  /prod
  /dev
/application2
  /int
  /prod
  /dev
Run Code Online (Sandbox Code Playgroud)

我们对 capistrano 处理我们的 Java 应用程序不满意——fabric 看起来是一个更好(更简单)的替代方案。

到目前为止,我看到的所有示例 fabfile 都“相对简单”,因为它们仅处理不同主机的一个应用程序。我想看到一些代码,其中不同的应用程序/主机由相同的结构文件/基础设施(如继承等)处理,以便为 git 处理、目录创建、符号链接等常见任务共享相同的逻辑。我希望你明白我的意思。我希望整个逻辑相同,只是应用程序配置不同(git repo,目标目录)。所有其余的在应用程序中都是相同的(相同的服务器布局......)

我希望能够输入这样的东西

$ cd api-b2b
$ fab env_prod deploy
$ cd api-b2c
$ fab env_prod deploy …
Run Code Online (Sandbox Code Playgroud)

python deployment capistrano fabric

1
推荐指数
1
解决办法
2164
查看次数

每当gem在部署时失败

在终端上执行cap qa deploy后,我在部署结束时收到以下错误:

failed: "sh -c 'cd [removed]/releases/[removed] && bundle exec whenever --update-crontab [removed] --set environment=production --roles db'" on [removed]
Run Code Online (Sandbox Code Playgroud)

我困惑的第一件事是当我使用capistrano和deploy时,为什么它在db角色上运行when命令?它不应该自动在app角色上运行命令吗?

在服务器上: Bundler版本1.3.5

的Gemfile:

gem 'whenever', require: false
Run Code Online (Sandbox Code Playgroud)

schedule.rb:

env 'PATH', ENV['PATH']

set :output, "/log/cron.log"
set :stage, :environment_variable

every 5.minutes, :roles => [:app] do
  runner "[removed]"
end

every 1.day, :at => '0:01 am' do
    command "[removed]"
end
Run Code Online (Sandbox Code Playgroud)

deploy.rb:

require 'capistrano/log_with_awesome'
require "bundler/capistrano"

set :application, "[REMOVED]"

set :scm, :git 

set :repository,  "[REMOVED]"

set :branch, "master"
set :deploy_via, :remote_cache 

set …
Run Code Online (Sandbox Code Playgroud)

cron capistrano ruby-on-rails whenever

1
推荐指数
1
解决办法
2052
查看次数

Capistrano的'cap生产部署:迁移`将无效

我无法让Capistrano运行我的数据库迁移.

我正在使用DigitalOcean提供的VPS来托管我的Rails应用程序.以前我会用git push heroku masterHeroku主持我的项目,但现在我想要更便宜的东西.我正在尝试使用Capistrano将我的代码部署到服务器(使用教程启动并运行).我可以成功地将新提交到服务器上,但是,我无法让Capistrano运行我的数据库迁移.

为了展示我的问题,我创建了一个新模型,提交了更改,推送到Github repo,然后运行cap production deploy.我查看了服务器,我可以看到新的迁移文件. 以下是该命令的输出,以防它在调试问题时有所帮助.

当我运行cap production deploy:migrate数据库时没有任何反应:

~/Projects/rails/testapp $ cap production deploy:migrate
DEBUG[aec67347] Running /usr/bin/env [ -d ~/.rbenv/versions/2.1.3 ] on 104.236.181.65
DEBUG[aec67347] Command: [ -d ~/.rbenv/versions/2.1.3 ]
DEBUG[aec67347] Finished in 1.107 seconds with exit status 0 (successful).
Run Code Online (Sandbox Code Playgroud)

这是我在生产服务器上的PostgeSQL数据库(没有改变):

testapp_production=> \d
               List of relations
 Schema |       Name        |   Type   | Owner  
--------+-------------------+----------+--------
 public | cars              | table    | deploy
 public | cars_id_seq       | sequence …
Run Code Online (Sandbox Code Playgroud)

deployment capistrano ruby-on-rails ruby-on-rails-4

1
推荐指数
1
解决办法
2332
查看次数

无法使用capistrano部署项目

我有一个ruby on rails项目要与capistrano一起部署.基本上我可以使用以下代码部署它.

cap production deploy
Run Code Online (Sandbox Code Playgroud)

但它给了我以下失败信息.

** Invoke staging (first_time)
** Execute staging
** Invoke load:defaults (first_time)
** Execute load:defaults
cap aborted!
Capfile locked at 3.2.1, but 3.3.3 is loaded
Run Code Online (Sandbox Code Playgroud)

我在这个例外上找不到任何东西.你知道什么是真正的问题.BTW捆绑更新不起作用.

capistrano ruby-on-rails capistrano3

1
推荐指数
1
解决办法
2658
查看次数

Capistrano损坏Gemfile.lock错误

我正在尝试使用Capistrano部署我的应用程序,但我收到此错误:

Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES
section: 'nokogiri'
Run Code Online (Sandbox Code Playgroud)

我看到这个问题,不幸的是,解决方案(切换Bundler版本)对我不起作用: Travis报告了损坏的Gemfile.lock的奇怪消息

我试过:在添加到我之后删除gemfile.lock(和做一个bundle _1.10.6_ install),但我仍然得到同样的错误.nokogirigemfile

这是我的gemfile:

source 'http://rubygems.org' 

gem 'rails', '4.2.5'
gem 'mysql2', '0.4.2'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails', '4.0.5'
gem 'turbolinks', '2.5.3'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc

gem 'whenever', '0.9.4', :require => false
gem 'simple_form', '3.2.0' 
gem 'devise', '3.5.2' 
gem 'omniauth-facebook', '3.0.0' …
Run Code Online (Sandbox Code Playgroud)

capistrano ruby-on-rails gemfile.lock

1
推荐指数
1
解决办法
3675
查看次数

在Capistrano部署期间如何访问环境变量?

我的Rails(4.2)应用程序通过Ubuntu(14.02)系统上的Passenger(5.0.28)+ Apache(2.4.7)运行,使用rbenv管理的ruby(2.3.0)。我使用Capistrano(3.4.0)进行部署。

我所有的环境变量都在一个非常简单的profile.d脚本中设置。

#!/bin/sh
export VAR1=VAL1
export VAR2=VAL2
Run Code Online (Sandbox Code Playgroud)

这就像一个魅力。我的应用程序ENV具有所有正确的变量,Secrets.yml并已正确填充...除了通过ssh与Capistrano进行部署外,其他所有功能均正常运行。

在我的deploy.rb书中,我认为以下内容是相对的:

set :ssh_options, {
forward_agent: true,
paranoid: true,
keys: "~/.ssh/id_rsa.pub"
}
Run Code Online (Sandbox Code Playgroud)

Capistrano文档非常有限,并且ssh \ server配置不是我的强项,我似乎无法弄清楚为什么ENVCapistrano无法看到我的变量。如果我puts ENV.inspect在部署流程中运行,则会得到诸如"TERM_PROGRAM"=>"Apple_Terminal"本地机器用户信息之类的信息。Capistrano为什么不使用远程环境?如何在服务器端或在部署脚本中修改配置以解决此问题?

谢谢您的帮助。

capistrano ruby-on-rails passenger rbenv

1
推荐指数
1
解决办法
1737
查看次数

加速Rails 5.1/Webpacker应用程序的部署

我刚刚将我们的应用程序升级到Rails 5.1应用程序,并使用webpacker包含React和一些自定义组件.真是太容易了!谢谢!

我注意到这增加了大约100 MB到node_modules目录.这很酷,我知道它带有NPM区域,并且默认情况下在新的rails项目中对文件夹进行gitignored,因此它不会使repo混乱.那很棒!

我希望更好的是现在部署需要很长时间,因为服务器必须在每次部署时从NPM下载所有这些软件包.我们正在使用capistrano 3部署到AWS.是否有一种安全的方法可以将NPM软件包存储在服务器上的某个地方,这些软件包在部署过程中持续存在,因此不必每次都下载它们?

capistrano ruby-on-rails capistrano3 ruby-on-rails-5.1

1
推荐指数
1
解决办法
487
查看次数