Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 使用版本为 =capistrano 3.3.5= , Capistrano 安装方法自行 Google.
- ** 项目中初始化 Capistrano
- =cap install=
- 会生成如下目录文件:
- #+BEGIN_SRC
- ├── Capfile
- ├── config
- │ ├── deploy
- │ │ ├── production.rb
- │ │ └── staging.rb
- │ └── deploy.rb
- └── lib
- └── capistrano
- └── tasks
- #+END_SRC
- 其中,
- - =Capfile= 用来配置 Capistrano
- - =deploy.rb= 定义共用的 tasks
- - =production.rb/staging.rb= 定义具体的 stage 的 tasks
- ** 新建 stages
- =cap install STAGES=local,sandbox,qa,production= , =local,sandbox,qa,production= 等可以自行定义
- ** 用法
- - =cap -T= 列出所有 tasks
- - =cap staging deploy= 部署 staging 环境
- - =cap production deploy= 部署 production 环境
- - =cap production deploy --dry-run= 模拟部署 production 环境,但实际上不作任何操作 (?)
- - =cap production deploy --prereqs= 列出 task dependencies
- - =cap production deploy --trace= 跟踪 task 调用 (?)
- ** 服务器文件结构
- 在 =config/deploy.rb= 中可定义文件根目录:
- #+BEGIN_SRC
- set :deploy_to, '/var/www/my_app_name'
- #+END_SRC
- 那么部署之后, =/var/www/my_app_name= 的文件结构将会如下:
- #+BEGIN_SRC
- ├── 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>
- #+END_SRC
- 其中,
- - =current= 是指向最新版本的指针
- - =releases= 存放了所有版本的文件,并以时间戳命名。 =current= 指针指向这些目录中的一个。
- - =repo= 存放版本管理系统的配置。如果是 Git 则会是一个完整的 git repository.
- - =revisions.log= 记录每次 deploy 或者 rollback.
- - =shared= (?)
- ** 配置
- *** 配置文件
- - 全局: =config/deploy.rb=
- - 针对特定 stage: =config/deploy/<stage_name>.rb=
- *** 变量存取
- #+BEGIN_SRC
- set :application, 'MyLittleApplication'
- # use a lambda to delay evaluation
- set :application, -> { "SomeThing_#{fetch :other_config}" }
- #+END_SRC
- #+BEGIN_SRC
- fetch :application
- # => "MyLittleApplication"
- fetch(:special_thing, 'some_default_value')
- # will return the value if set, or the second argument as default value
- #+END_SRC
- *** 变量定义
- - =:application= application 名称
- - =:deploy_tp= 远端服务器部署的根目录。 =default: -> { "/var/www/#{fetch(:application)}" }=
- - =:scm= 所使用的版本管理系统。 =default: :git=
- - =:repo_url= 代码库的 url
- - =:repo_path= 远端服务器代码存放路径。 =default: -> { "#{fetch(:deploy_to)}/repo" }=
- - =:repo_tree=
- - =:linked_files=
- - =:linked_dirs=
- - =:default_env=
- - =:branch=
- - =:keep_releases=
- - =:tmp_dir=
- - =:local_user=
- - =:pty=
- - =:log_level=
- - =:format=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement