结构
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_files
和linked_dirs
,它们被符号链接到每个发布版本中。这些数据在部署和发布之间持续存在。它应该用于诸如数据库配置文件以及从一个发布版本传递到下一个发布版本的静态和持久用户存储之类的事情。
应用程序完全包含在 :deploy_to
路径中。如果您计划将多个应用程序部署到同一台服务器,只需选择不同的 :deploy_to
路径即可。