结构

Capistrano 在每个远程服务器上使用严格定义的目录层次结构来组织源代码和其他与部署相关的数据。此结构的根路径可以使用配置变量 :deploy_to 定义。

假设您的 config/deploy.rb 包含以下内容

set :deploy_to, '/var/www/my_app_name'

然后检查 /var/www/my_app_name 内部的目录,如下所示

├── current -> /var/www/my_app_name/releases/20150120114500/
├── releases
│   ├── 20150080072500
│   ├── 20150090083000
│   ├── 20150100093500
│   ├── 20150110104000
│   └── 20150120114500
├── repo
│   └── <VCS related data>
├── revisions.log
└── shared
    └── <linked_files and linked_dirs>
  • current 是一个指向最新版本的符号链接。此符号链接在成功部署后更新。如果部署在任何步骤中失败,current 符号链接仍然指向旧版本。

  • releases 保存所有部署在带时间戳的文件夹中。这些文件夹是 current 符号链接的目标。

  • repo 保存配置的版本控制系统。对于 git 仓库,内容将是一个原始的 git 仓库(例如,对象、引用等)。

  • revisions.log 用于记录每次部署或回滚。每个条目都带时间戳,并列出执行用户(:local_user,默认为本地用户名)。根据您的 VCS 数据,还会列出分支名称或修订号等信息。

  • shared 包含 linked_fileslinked_dirs,它们被符号链接到每个发布版本中。这些数据在部署和发布之间持续存在。它应该用于诸如数据库配置文件以及从一个发布版本传递到下一个发布版本的静态和持久用户存储之类的事情。

应用程序完全包含在 :deploy_to 路径中。如果您计划将多个应用程序部署到同一台服务器,只需选择不同的 :deploy_to 路径即可。

Fork me on GitHub