为了在我的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
答案 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命令,但必须始终在项目目录中执行它们。