Capistrano-mb 项目使用教程
1. 项目的目录结构及介绍
Capistrano-mb 是一个用于在 Ubuntu 16.04 和 18.04 上从零开始部署 Rails 应用的 Capistrano 任务库。项目的目录结构如下:
capistrano-mb/
├── Capfile
├── CHANGELOG.md
├── Gemfile
├── LICENSE.md
├── README.md
├── config
│ ├── deploy
│ │ ├── production.rb
│ │ └── staging.rb
│ └── deploy.rb
├── lib
│ └── capistrano
│ └── tasks
│ ├── bootstrap.rake
│ ├── firewall.rake
│ ├── logrotate.rake
│ ├── nginx.rake
│ ├── nodejs.rake
│ ├── postgresql.rake
│ ├── ruby.rake
│ ├── security.rake
│ ├── systemd.rake
│ └── ufw.rake
└── spec
└── capistrano_spec.rb
目录结构介绍
Capfile
: 用于加载 Capistrano 配置和任务。CHANGELOG.md
: 记录项目的变更日志。Gemfile
: 定义项目所需的 Ruby 依赖。LICENSE.md
: 项目的许可证信息。README.md
: 项目的说明文档。config/
: 包含部署相关的配置文件。deploy/
: 包含不同环境的部署配置文件,如production.rb
和staging.rb
。deploy.rb
: 通用的部署配置文件。
lib/capistrano/tasks/
: 包含各种部署任务的 Rake 文件。spec/
: 包含测试文件。
2. 项目的启动文件介绍
Capistrano-mb 的启动文件是 Capfile
,它负责加载项目的配置和任务。以下是 Capfile
的内容示例:
# Load DSL and Setup Up Stages
require 'capistrano/setup'
# Include default deployment tasks
require 'capistrano/deploy'
# Include tasks from capistrano-mb gem
require 'capistrano/mb'
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
启动文件介绍
require 'capistrano/setup'
: 加载 Capistrano 的基本 DSL 和设置。require 'capistrano/deploy'
: 加载默认的部署任务。require 'capistrano/mb'
: 加载 capistrano-mb 提供的任务。Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
: 加载自定义的 Rake 任务。
3. 项目的配置文件介绍
Capistrano-mb 的配置文件主要位于 config/
目录下,包括通用的部署配置和特定环境的部署配置。
通用部署配置 (config/deploy.rb
)
# config/deploy.rb
# Define the name of the application
set :application, 'my_app_name'
# Define the repository URL
set :repo_url, 'git@example.com:me/my_repo.git'
# Define the linked files and directories
append :linked_files, 'config/database.yml', 'config/secrets.yml'
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system'
# Define the Ruby version
set :rbenv_ruby, '2.7.2'
# Include capistrano-mb tasks
require 'capistrano/mb'
环境特定配置 (config/deploy/production.rb
和 config/deploy/staging.rb
)
# config/deploy/production.rb
# Define the server and roles
server 'example.com', user: 'deploy', roles: %w{app db web}
# Define the deploy path
set :deploy_to, '/var/www/my_app_name'
# Define the environment variables
set :default_env, { path: '/opt/ruby/bin:$PATH' }