0 0

rake 部署问题30

我看了WEB开发敏捷之道这本书后,准备搭建一个ROR环境,没想到其中遇到这样的问题:
1.配置好Mongrel后,用Capistrano部署:
cap --apply-to /local/project/path
之前在这里就遇到问题了,不过后来解决了,是因为版本太老的问题,导致找不到--apply-to这个参数.
执行这个命令后,生成两个文件: config/deploy.rb  Capfile
config/deploy.rb的文件内容如下:

require 'mongrel_cluster/recipes'
set :application, "test_app"
set :repository,  "http://localhost/svn/test/#{application}"

set :deploy_to, "/var/rails_app/#{application}"

set :mongrel_conf, "#{application}/current/config/mongrel_cluster.yml"

role :app, "http://localhost"
role :web, "http://localhost"
role :db,  "http://localhost", :primary => true

不知道:app  :web :db是否有填错?

2. 按书上说的做: 在服务器上建立部署基本目录结构:
rake remote:setup
就会提示:
(in /var/rails_app/test_app)
rake aborted!
Don't know how to build task 'remote:setup'

(See full trace by running task with --trace)
不过我所有东西全装在本地,好像不用这样做吧, 到网上找到一篇文章是这样说的:

第一次部署需要运行下面的命令:

cap deploy:setup
显示:  Password:
    [192.168.13.243] executing command
    command finished
当执行:
cap deploy:check
问题来了,运行这个命令后,又出现如下错误信息:
Password: 
    [192.168.13.243] executing command
    command finished
  * executing "test -w /var/rails_app/test_app"
    servers: ["192.168.13.243"]
    [192.168.13.243] executing command
    command finished
  * executing "test -w /var/rails_app/test_app/releases"
    servers: ["192.168.13.243"]
    [192.168.13.243] executing command
    command finished
  * executing "which svn"
    servers: ["192.168.13.243"]
    [192.168.13.243] executing command
192.168.13.243: which: no svn in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)

    command finished
The following dependencies failed. Please check them and try again:
--> `svn' could not be found in the path (192.168.13.243)


请问这个问题如何解决? 谢谢!


问题补充:
我最开始就是写的localhost,不过我后来改成IP地址也可了,刚执行
cap deploy:check
又遇到错误了,这个不知道什么问题,麻烦你帮看看。谢谢你了
问题补充:
这个什么意思呢?
The following dependencies failed. Please check them and try again:
--> `svn' could not be found in the path on the local host

无法在本机找到这个路径,哪个路径呢? 谢谢你回答我的问题!
问题补充:
现在还有问题:
The following dependencies failed. Please check them and try again:
--> `svn' could not be found in the path (192.168.13.243)

以下是deploy.rb的相关信息:
role :app, "192.168.13.243"
role :web, "192.168.13.243"
role :db,  "192.168.13.243", :primary => true


set :deploy_via, :remote_cache
#set :deploy_via, :copy
set :copy_strategy, :export
set :copy_compression, :bz2

哪还有问题吗?
问题补充:
另外,下面这个路径好像也不对:
set :mongrel_conf, "#{application}/current/config/mongrel_cluster.yml"
我的路径中好像没有current这个目录,但网上的文章说好像又要这个,不知道什么意思
问题补充:
网上找不到LINUX下SVN的客户端哦,装完SVN后,不是有客户端命令吗? svn checkout
svn add/delete之类的命令。
问题补充:
执行:  cap deploy:start 出现如下错误:

[root@redhgg test_app]# cap deploy:start
  * executing `deploy:start'
  * executing `mongrel:cluster:start'
  * executing "mongrel_rails cluster::start -C /var/rails_app/test_app/config/mongrel_cluster.yml"
    servers: ["192.168.13.243"]
    [192.168.13.243] executing command
*** [err :: 192.168.13.243] /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/lib/mongrel_cluster/init.rb:188:in `chdir'
*** [err :: 192.168.13.243] :
*** [err :: 192.168.13.243] No such file or directory - /var/rails_app/test_app/current
*** [err :: 192.168.13.243] (
*** [err :: 192.168.13.243] Errno::ENOENT
*** [err :: 192.168.13.243] )
*** [err :: 192.168.13.243] from /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/lib/mongrel_cluster/init.rb:188:in `chdir_cwd'
*** [err :: 192.168.13.243] from /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/lib/mongrel_cluster/init.rb:161:in `pid_file_exists?'
*** [err :: 192.168.13.243] from /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/lib/mongrel_cluster/init.rb:89:in `start'
*** [err :: 192.168.13.243] from /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/lib/mongrel_cluster/init.rb:80:in `each'
*** [err :: 192.168.13.243] from /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/lib/mongrel_cluster/init.rb:80:in `start'
*** [err :: 192.168.13.243] from /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/lib/mongrel_cluster/init.rb:239:in `run'
*** [err :: 192.168.13.243] from /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run'
*** [err :: 192.168.13.243] from /usr/local/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
*** [err :: 192.168.13.243] from /usr/local/ruby/bin/mongrel_rails:19:in `load'
*** [err :: 192.168.13.243] from /usr/local/ruby/bin/mongrel_rails:19
    command finished
command "mongrel_rails cluster::start -C /var/rails_app/test_app/config/mongrel_cluster.yml" failed on 192.168.13.243

说找不到current, 不过current在我有rails应该目录目录下面确实没有这个文件或目录,手工创建一个这个的文件也不行的.
问题补充:
现在改了下,出现下面这种情况:
[root@redhgg test_app]# cap deploy:start
  * executing `deploy:start'
  * executing "cd /var/rails_app/test_app/current &&  nohup script/spin"
    servers: ["192.168.13.243"]
    [192.168.13.243] executing command
*** [err :: 192.168.13.243] sh: line 0: cd: /var/rails_app/test_app/current: 娌℃湁閭d釜鏂囦欢鎴栫洰褰?
                                                                                                             command finished
command "cd /var/rails_app/test_app/current &&  nohup script/spin" failed on 192.168.13.243

而执行 cap deploy:cold 时,出现下面的情况:

[root@redhgg test_app]# cap deploy:cold
  * executing `deploy:cold'
  * executing `deploy:update'
** transaction: start
  * executing `deploy:update_code'
  * getting (via checkout) revision 1 to /tmp/20080811002122
    executing locally: svn checkout -q  -r1 http://192.168.13.243/svn/test/test_app /tmp/20080811002122
    compressing /tmp/20080811002122 to /tmp/20080811002122.tar.gz
    executing locally: tar czf 20080811002122.tar.gz 20080811002122
    servers: ["192.168.13.243"]
** sftp upload /tmp/20080811002122.tar.gz -> /tmp/20080811002122.tar.gz
    [192.168.13.243] /tmp/20080811002122.tar.gz
    [192.168.13.243] done
  * sftp upload complete
  * executing "cd /var/rails_app/test_app/releases && tar xzf /tmp/20080811002122.tar.gz && rm /tmp/20080811002122.tar.gz"
    servers: ["192.168.13.243"]
    [192.168.13.243] executing command
*** [err :: 192.168.13.243]
*** [err :: 192.168.13.243] gzip:
*** [err :: 192.168.13.243] stdin: unexpected end of file
*** [err :: 192.168.13.243] tar:
*** [err :: 192.168.13.243] Child returned status 1
*** [err :: 192.168.13.243]
*** [err :: 192.168.13.243] tar:
*** [err :: 192.168.13.243] Error exit delayed from previous errors
*** [err :: 192.168.13.243]
    command finished
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/rails_app/test_app/releases/20080811002122; true"
    servers: ["192.168.13.243"]
    [192.168.13.243] executing command
    command finished
command "cd /var/rails_app/test_app/releases && tar xzf /tmp/20080811002122.tar.gz && rm /tmp/20080811002122.tar.gz" failed on 192.168.13.243

麻烦帮忙解决一下,谢谢了
2008年8月08日 00:13

5个答案 按时间排序 按投票排序

0 0

服了……

楼主看清楚我说的两种设置的说明,remote_cache 是需要服务器上有安装  svn 客户端。

引用
The following dependencies failed. Please check them and try again:
--> `svn' could not be found in the path on the local host


这说明你把发布目标服务器设置为本机 localhost 了,而且本机上也没有安装 svn 客户端,难道你的项目没有用 svn 进行版本控制?那么你在上面用 set :repository 配置的 svn 仓库 URL 又是怎么回事?

引用
另外,下面这个路径好像也不对:
set :mongrel_conf, "#{application}/current/config/mongrel_cluster.yml"
我的路径中好像没有current这个目录,但网上的文章说好像又要这个,不知道什么意思


capistrano 的工作原理是在服务器端 deploy_to 目录下创建一个 releases 目录,每次发布都在这个目录里创建一个以当前时间戳命名的目录来存放项目源代码,然后在 deploy_to 目录下创建一个名为 current 的符号链接指向 releases 目录里当前发布的版本。这样做的好处时你可以随时切换到以前发布的版本。

2008年8月08日 15:11
0 0

但如果在服务器端安装 svn 客户端,并且服务器端可以直接访问 svn 仓库,则可以使用 remote_cache 方式得到最快的发布速度。这种方式 capistrano 会在服务器端 "#{shared_path}/cached_copy}" 目录下维护一份项目源代码的 svn working copy,每次发布时更新这个 working copy,然后将其复制到 relase_path 目录下成为新发布的版本。

set :deploy_via, :remote_cache

2008年8月08日 00:57
0 0

capistrano 的工作原理是通过 SSH 登录远程服务器,在上面自动执行一系列预设的 shell 命令来进行项目发布的操作。其中一个重要的环节就是将项目源代码发布到服务器上,默认的行为是使用 svn 客户端直接从 svn 仓库中 checkout 出项目源代码来,因此需要远程服务器上有安装 svn 客户端。你的错误信息也清晰的显示了这一点。

# The following dependencies failed. Please check them and try again:  
# --> `svn' could not be found in the path (192.168.13.243)  


最好的解决方法仍然是在服务器上安装 svn 客户端,如果实在不方便,可以使用折衷的发布策略,在本机 svn export 出项目源代码并打包压缩通过 scp/sftp 复制到服务器上。只需要在 deploy.rb 里设置

# 必须的,使用 scp/sftp 复制源代码到服务器上。
set :deploy_via, :copy
# 可选,使用 svn export 而不是 svn checkout 获取源代码,得到的源代码里没有 .svn 目录,体积小一些。
set :copy_strategy, :export
# 可选,使用可选压缩方式中压缩率最高的 bz2。
set :copy_compression, :bz2

2008年8月08日 00:54
0 0

connection failed for: http://localhost (SocketError: getaddrinfo: Name or service not known)

这个错误就是因为 capistrano 把你填写的 http://localhost 当成了域名去解析,这样当然无法解析出 IP 地址来。

2008年8月08日 00:40
0 0

归根结底你现在只有一个问题,就是 rolexx 后面的值写错了,应该只填写主机名,例如 localhost,而不是 http://localhost。

参考 http://www.iteye.com/topic/130853。

2008年8月08日 00:38

相关推荐

    rake-0.8.7

    在Ruby on Rails框架中,`rake`是一个不可或缺的工具,它扮演着构建、部署和管理任务的角色。Rake,全称为“Ruby Make”,是Ruby语言的一个构建系统,灵感来源于Perl的Make工具和Ant。在Rails应用中,`rake`不仅用于...

    Ruby中任务构建工具rake的入门学习教程

    总的来说,Rake是Ruby开发中不可或缺的一部分,它简化了任务管理和自动化过程,使得开发者能够更加专注于编写代码本身,而不是琐碎的构建和部署步骤。通过理解和熟练使用Rake,可以极大地提高开发效率和项目维护性。

    awgnbpsk_Rake接收机_AWGN_bpskawgnsimulink_bpsk瑞丽信道_bpsk_

    在仿真过程中,**Rake接收机** 是解决多径衰落问题的有效方法。Rake接收机利用多径信号的延迟到达特性,通过多个“指针”(即分集分支)对信号进行合并,以提高信号的信噪比。每个指针对应一个到达路径,通过相位...

    Ruby-Capistrano基于RubyRake和SSH构建的部署自动化工具

    **Ruby-Capistrano:基于Ruby、Rake和SSH的部署自动化工具** Capistrano是一款强大的、开源的部署自动化工具,它主要由Ruby语言编写,利用Rake作为任务执行引擎,并通过SSH(Secure Shell)协议与远程服务器进行...

    基于Foreman的Linux自动化管理部署指南.

    2. **初始化Foreman数据库**:运行`foreman-rake db:migrate`来初始化数据库。 3. **启动Foreman服务**:使用`service foreman start`启动服务,并将其设置为开机自启。 4. **配置SSL证书**:为了保障通信安全,需要...

    用Capistrano3自动化部署Web应用分享.pdf

    * lib/capistrano/tasks:自定义任务的脚本文件夹,必须以 .rake 结尾。 五、自动化部署的优点 使用 Capistrano 3 实现自动化部署可以带来以下几个优点: * 减少人工错误:自动化部署可以减少人工错误,提高部署...

    testflight-rake:一个(非常过时的)rake文件,用于帮助自动执行TestFlight部署

    一组iOS项目的rake任务,使构建和部署构建到TestFlight变得更加容易。 它实现了自动化: 增加内部编号 编译和签名您的应用程序包 编译发行说明(来自提交消息),您可以在上载之前对其进行编辑 将新版本上载到...

    Gitlab私有化部署管理

    ### GitLab私有化部署管理知识点...通过以上详细介绍,我们可以清晰地了解到GitLab私有化部署管理中的各个环节,包括环境配置、安装过程以及基本的操作和常见问题解决方法,为高效管理和维护GitLab提供了实用的帮助。

    Ruby-Mina快速部署和服务器的自动化工具

    Ruby-Mina是一款强大的服务器自动化和应用部署工具,尤其在Ruby开发环境中被广泛使用。它基于Rake,一个类似于Make的脚本语言,用于构建复杂的任务集合。Mina以其高效、轻量级和易于理解的特性,深受开发者喜爱,...

    echoe:Rubygems打包工具,提供Rake任务以进行文档编制,扩展编译,测试和部署

    一个Rubygems打包工具,提供Rake任务以进行文档编制,扩展编译,测试和部署。 该项目不再维护。 许可证 版权所有2007-2011 Cloudburst,LLC。 根据AFL 3获得许可。请参阅随附的LICENSE文件。 部分版权所有,2006 ...

    rake:Ruby的make-make构建工具

    `rake`是Ruby社区广泛接受的标准,用于自动化项目构建、测试和部署等流程。 ### 1. `rake`简介 `rake`是Ruby的Make-like程序,由Jim Weirich创建,它基于Ruby语言,因此具有更好的灵活性和可扩展性。与`make`相比...

    C3CI:C3CI - 使用 Jenkins 部署和测试 CF 部署

    BOSH 中介器通过 rake 任务调用,该任务采用以下参数: release_file - 包含 BOSH 最终发布信息的 yaml 文件 manifest_file - BOSH 部署清单 director_url - 完整的 BOSH 导演 URL,例如 release_dir - BOSH 版本...

    test-ruby-c-extension:rake-compiler扩展编译的测试基础。 在交叉编译问题期间报告错误很有用

    通过模拟不同的环境,开发者可以更好地理解和解决在实际部署时可能遇到的问题。 为了使用`test-ruby-c-extension`,开发者首先需要克隆项目,然后使用`rake`命令执行编译和测试任务。如果在过程中遇到错误,`rake-...

    opsworks_rails_command_line:在 AWS OpsWorks 上为 rails 应用程序创建 Rake 任务,这将允许从命令行运行其他 Rake 任务,包括 env vars,否则会丢失

    OpsWorks Rails 命令行手册 本说明书适用于在 Amazon Web Services OpsWorks 堆栈上使用 Ruby on Rails 的... 这既费力又容易出错,因此这些方法通过创建 rake 任务来解决这个问题,这些任务已经嵌入了部署数据中的环

    Ruby-RakeRuby类似make的构建工具

    3. **部署**: Rake常用于应用程序的部署,包括上传代码、更新数据库、启动服务等步骤。 4. **清理**: 清理任务可以删除编译生成的临时文件或旧版本的代码。 5. **文档生成**: Rake可以与像YARD这样的文档工具结合...

    jekyll-gh-pages:轻松将 Jekyll 站点部署到 Github Pages

    Gemfile 中: gem ' jekyll-gh-pages ' 你还需要在你的 Rakefile 中引入 gem: require ' jekyll-gh-pages '用法准备环境(仅限第一次) rake prepare 观察变化rake watch 构建 Jekyll 站点rake build 部署到 ...

    blazing:所有人轻松进行git push部署

    它还可以帮助您轻松地设置要部署到的远程存储库,可以通过简单的rake任务进行扩展,并可以通过不错的DSL进行配置。 快速开始 blazing init ,编辑炽烈的配置,运行blazing setup [target]来部署接收后挂钩,然后就...

    Farmbot-Web-App安装部署

    4. 重建新编译前端页面代码,需要一点时间,命令为:sudo docker compose run web rake assets:precompile。 5. 重建容器,命令为:sudo docker compose up -d。 6. 完成。 更新应用 1. 从 ubuntu_example.sh 中...

    shuttle:简约的部署工具

    rake install 支持的Ruby版本: 1.9.3 2.0.0 2.1.0 2.1.2 结构 部署结构与capistrano非常相似。 应用程序文件将存储在您在config中指定的deploy_to路径中。 目录结构: releases -主目录,用于存储所有应用...

Global site tag (gtag.js) - Google Analytics