Thi*_* S. 4 git capistrano ruby-on-rails-3 capistrano3
我是第一次完成capistrano安装。大部分内容保留为默认设置,我配置了服务器,其身份验证和远程文件夹,以及对我的git存储库的访问权。
我使用capistrano将php代码部署到我的服务器。
cap临时部署和cap生产部署功能,但是它们每个命令运行两次。当这些任务在服务器上执行得太快时,有时会导致问题,并返回错误代码,从而停止部署过程。
运行cap临时部署时我的输出示例
DEBUG[47ecea59] Running /usr/bin/env if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi on ftp.cluster013.ovh.net
DEBUG[47ecea59] Command: if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi
DEBUG[c450e730] Running /usr/bin/env if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi on ftp.cluster013.ovh.net
DEBUG[c450e730] Command: if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi
Run Code Online (Sandbox Code Playgroud)
除了我自己定义的任务外,每个任务都执行相同的操作(在我的deploy.rb中,我定义了:set_distant_server任务,该任务在带有服务器信息的文件中移动)
我很确定我在初始配置期间错过了一些东西。
这是我的文件,仍然是默认设置:
# 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
# require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
#require 'capistrano/bundler'
#require 'capistrano/rails/assets'
#require 'capistrano/rails/migrations'
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
Run Code Online (Sandbox Code Playgroud)
接下来是我的deploy.rb文件:#config仅对Capistrano 3.1锁'3.2.1'有效
set :scm, :git
set :application, 'Application name'
# I use token authentification
set :repo_url, 'https://XXXXXXXXXXX:@XXXXXXX.git'
set :role, 'web'
# Default value for :log_level is :debug
set :log_level, :debug
set :tmp_dir, 'www/test_server/tmp'
set :keep_releases, 8
role :deploy_server, "XXXuser_name@XXXX_server"
task :set_distant do
on roles(:deploy_server) do
execute 'echo ------------******* STAGING *******------------'
execute 'cp ~/www/test_server/current/access_distant.php ~/www/test_server/current/access.php'
execute 'cp ~/www/test_server/current/session_distant.php ~/www/test_server/current/session.php'
end
end
after "deploy:finished", :set_distant
Run Code Online (Sandbox Code Playgroud)
这是我的staging.rb,简短得多:
server 'XXX_server', user: 'XXXuser_name', roles: %w{web}, port: 22, password: 'XXXpassword'
set :deploy_to, '~/www/test_server'
set :branch, 'staging'
Run Code Online (Sandbox Code Playgroud)
和我的production.rb,非常相似:
server 'XXX_server', user: 'XXXuser_name', roles: %w{web}, port: 22, password: 'XXXpassword'
set :deploy_to, '~/www/beta/'
Run Code Online (Sandbox Code Playgroud)
我很确定我错过了使它正常运行的所有先决条件。我是红宝石,宝石的新手,而且很长时间没有使用外壳了。
有谁知道为什么这些命令要运行两次,以及如何解决?
预先,非常感谢。
附加信息:Ruby版本:ruby -v ruby 2.1.2p95(2014-05-08修订版45877)[x86_64-darwin13.0]
Capistrano版本:cap -V Capistrano版本:3.2.1(Rake版本:10.1.0)
我没有创建或设置Gemfile,但我知道Capistrano 3不需要该文件。无论如何,我不知道该怎么做。
小智 5
我遇到了同样的问题,意识到我不需要两个
role :web
Run Code Online (Sandbox Code Playgroud)
和
server '<server>'
Run Code Online (Sandbox Code Playgroud)
我摆脱了:web角色,摆脱了第二次执行。
| 归档时间: |
|
| 查看次数: |
1018 次 |
| 最近记录: |