似乎我无法用无轨安装capistrano。为什么是这样?

时间:2011-03-22 17:14:44

标签: ruby zend-framework capistrano

为了在我的Ubuntu开发机上安装capistrano,我在这里挣扎并没有成功。

以下是发布的命令列表:

1)sudo apt-get update

2)sudo apt-get install build-essential git-core curl

3)bash< <(curl http://rvm.beginrescueend.com/releases/rvm-install-head

4)echo'[[-s“$ HOME / .rvm / scripts / rvm”]]&&来源“$ HOME / .rvm / scripts / rvm”'>>的〜/ .bashrc

5)(关闭并重新打开终端窗口)

6)rvm notes

(寻找:“对于Ruby(MRI& ree),您应该安装以下操作系统依赖项:”

并做了:

7)sudo aptitude install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses- dev的

现在我们可以通过以下方式安装ruby:

8)rvm install 1.9.2

然后我们告诉rvm使用它:

9)rvm 1.9.2

总是这样做:

10)rvm - 默认使用1.9.2

随着ruby正常运行,我们现在可以:

11)gem install capistrano

然后:

12)gem install railsless-deploy

尽管所有这些步骤都是成功的步骤,但是当我这样做时:cap -T

我无法看到按预期列出的部署任务。

我只得到:cap调用cap shell

列出。

为什么?

我需要Capfile吗?有些需要设置吗?如果是这样,那么,这是否意味着我们只有在移动项目目录后才需要发出命令行命令或capistrano?请指教,我在Capistrano这里绝对是新手。

非常感谢, MEM

1 个答案:

答案 0 :(得分:4)

是的,你仍然需要一个Capfile。

步骤1.使用以下命令创建Capfile,从项目目录中运行它:

capify .

(这也将创建config / deploy.rb)

步骤2.根据railsless-deploy readme编辑此新Capfile,以便它具有以下内容:

require 'rubygems'
require 'railsless-deploy'
load    'config/deploy'

此时你可以运行

cap -T

你应该看到列出的“cap deploy”等任务。但是,capistrano对你的目标服务器等一无所知。

步骤3.编辑config / deploy.rb以提供SCM,服务器名称等的详细信息。

有关此方面的帮助,请参阅Capistrano "From The Beginning" wiki中的“配置”部分。

如果railsless-deploy提供的默认值不合适,您也可以在此处覆盖部署任务。

最小的config / deploy.rb可能如下所示:

set :user, "myuser"
set :application, "myapp"
set :repository,  "https://github.com/me/myapprepo"
set :scm, :git
default_run_options[:pty] = true
role :web, "myhost.example.com"
role :app, "myhost.example.com"

当然,您必须使用您的应用,主机和登录详细信息更正上述内容。

然后您可以按照

的典型路径进行操作
cap deploy:setup
cap deploy:check
cap deploy
# ...  etc

但是,在上限部署之后:安装程序已在远程服务器上创建了部署目录树(默认情况下类似于/ u / apps / myapp /),您可能必须更改所有权(或权限)以便cap deploy to run。以下将递归地将/ u / apps / myapp /的所有者和组更改为用户“myuser”。

sudo chown -R myuser. /u/apps/myapp

在我们的服务器上,我实际上创建了这个/ u / apps /目录,并且在capistrano看到它们之前很久就改变了它在服务器准备上的所有权(例如,使用木偶)。这样,开发人员可以使用cap deploy:setup和cap deploy等,而不会遇到这些问题。

  

“这是否意味着我们只有在移动项目目录后才需要发出命令行命令?”

我不确定我理解你问题的这一部分。如果移动项目目录,您仍然可以执行capistrano命令,但必须始终在项目目录中执行它们。