配置
位置
配置变量可以是全局的,也可以是特定于您的阶段的。
- 全局
config/deploy.rb
- 特定于阶段
config/deploy/<stage_name>.rb
访问
每个变量都可以设置为特定值
set :application, 'MyLittleApplication'
# use a lambda to delay evaluation
set :special_thing, -> { "SomeThing_#{fetch :other_config}" }
可以在任何时候从配置中检索值
fetch :application
# => "MyLittleApplication"
fetch(:special_thing, 'some_default_value')
# will return the value if set, or the second argument as default value
Capistrano 3.5 中的新功能:对于保存数组的变量,可以使用 append
轻松向其中添加值。这在 :linked_dirs
和 :linked_files
中特别有用(请参阅下面的变量参考)。
append :linked_dirs, ".bundle", "tmp"
反向操作也可用:remove
将努力从数组中删除一个条目。如果您有一个共享配置,它设置了一个数组,但特定配置不需要其中一个元素,这将非常有用。
remove :linked_dirs, ".bundle", "tmp"
变量
以下变量可设置
:application
- 应用程序的名称。
:deploy_to
- 默认值:
-> { "/var/www/#{fetch(:application)}" }
- 远程服务器上应用程序应部署到的路径。
- 如果应用程序包含空格或类似字符,此路径可能无效。有关使用的确切目录,请参见结构。
- 默认值:
:repo_url
- 存储库的 URL。
- 必须是所用 SCM 的有效 URL。
- 示例:
set :repo_url, 'git@example.com:me/my_repo.git'
用于位于 /home/git/me 中的 git 存储库 - 提示 #1:要访问使用非标准 ssh 端口的机器上的存储库:
set :repo_url, 'ssh://git@example.com:30000/~/me/my_repo.git'
- 提示 #2:使用 :svn 和分支时,请像这样声明 repo_url:
set :repo_url, -> { "svn://myhost/myrepo/#{fetch(:branch)}" }
- 警告:如果您在使用除 Git 之外的 SCM 时将存储库移动到新的 URL 并更改此变量,已部署的远程服务器将不会自动反映此更改,您必须手动在远程服务器上重新配置存储库(在由
:repo_path
确定的路径中)或删除它(在默认设置中rm -rf repo
),并让 Capistrano 在下次部署时使用更新的 URL 重新创建它。
:branch
- 默认值:
'master'
- 要从 SCM 部署的分支名称。
- 默认值:
:svn_username
- 使用 :svn 时,提供用于身份验证的用户名。
:svn_password
- 使用 :svn 时,提供用于身份验证的密码。
:svn_revision
- 3.5 版新增
- 使用 :svn 时,设置要部署的特定修订号。
:repo_path
- 默认值:
-> { "#{fetch(:deploy_to)}/repo" }
- 远程服务器上应放置存储库的路径。
- 通常不需要设置此项
- 默认值:
:repo_tree
- 默认值: 无。通常部署整个存储库。
- 要部署的存储库的子树。
- 目前仅在 Git 和 Hg 中实现。
:linked_files
- 默认值:
[]
- 列出的文件将在部署期间从应用程序的共享文件夹链接到每个发布目录。
- 可用于持久化配置文件,例如
database.yml
。有关确切目录,请参见结构。
- 默认值:
:linked_dirs
- 默认值:
[]
- 列出的目录将在部署期间链接到发布目录。
- 可用于持久化目录,例如上传或其他数据。有关确切目录,请参见结构。
- 默认值:
:default_env
- 默认值:
{}
- 命令执行期间使用的默认 shell 环境。
- 可用于设置或操作特定环境变量(例如
$PATH
等)。
- 默认值:
:keep_releases
- 默认值:
5
- 保留最后
n
个版本以备回滚使用。 - 清理任务会检测过时的版本文件夹,并在需要时将其删除。
- 默认值:
:tmp_dir
- 默认值:
'/tmp'
- 部署期间用于存储数据的临时目录。
- 如果您使用的是共享 Web 主机,则可能需要设置此设置(例如 /home/user/tmp/capistrano)。
- 默认值:
:local_user
- 默认值:
-> { ENV["USER"] || ENV["LOGNAME"] || ENV["USERNAME"] }
- 用于更新版本日志的本地机器用户名。
- 默认值:
:pty
- 默认值:
false
- 用于 SSHKit。
- 默认值:
:log_level
- 默认值:
:debug
- 用于 SSHKit。
- 其他可用选项包括 :info、:warn 和 :error。
- 默认值:
:format
- 默认值:
:airbrussh
- 用于 SSHKit。
- 其他可用选项包括 :dot 和 :pretty。
- 默认格式化程序 :airbrussh 即使 :log_level 为 :warn 或 :error 也会打印输出,而 :dot 和 :pretty 会使用定义的 :log_level。
- 默认值:
:shared_directory
- 默认值:
shared
- 共享目录的名称,包含在部署期间链接到发布目录的文件和目录。
- 默认值:
:releases_directory
- 默认值:
releases
- 版本目录的名称,版本的目标位置。
- 默认值:
:current_directory
- 默认值:
current
- 指向最新成功部署的版本文件夹的
current
链接的名称。
- 默认值:
:git_max_concurrent_connections
- 默认值:
10
- 与 Git 仓库的并发连接数 - 当您的 Git 服务器使用 SSH(如 Gitlab CE)限制同时连接数时很有用。
- 默认值:
:git_wait_interval
- 默认值:
0
- 达到 Git 仓库服务器并发连接限制后等待的秒数,之后断开连接以初始化新的连接。这可以防止您在使用
fail2ban
或类似软件限制服务器连接时被 SSH 服务器踢出。
- 默认值:
:git_verify_commit
- 默认值:
false
- 是否检查要部署的 Git 提交是否存在有效的签名。
- 默认值:
Capistrano 插件可以提供自己的配置变量。有关详细信息,请参阅插件文档。插件可以在加载后添加或修改默认值以及用户定义的值。