使用Mina部署Rails应用

Mina是一个用于自动化部署的Ruby库,它通过编译部署任务为bash脚本,并通过SSH上传到服务器执行,从而实现快速部署。与传统的部署方式相比,Mina每次部署只使用一个SSH会话,大大减少了部署时间。本文将介绍如何使用Mina来部署一个简单的Rails应用。

简介

Ruby on Rails框架以其简洁和高效著称,但在部署到生产服务器时,可能会遇到一些挑战。Mina的出现,为Rails应用的部署带来了便利。它简化了数据库连接、编写SQL查询、管理会话cookie等繁琐的任务。

第一步

首先,在项目Gemfile中添加Mina:

gem 'mina'

保存文件后,在命令行中运行:

$ bundle install

然后,使用以下命令初始化Mina:

$ mina init

这将在项目中创建一个config/deploy.rb文件。打开该文件,设置以下参数:

set :domain, 'mysite.com' set :deploy_to, '/home/deployer/mysite/' set :repository, 'git@github.com:/.git' set :branch, ENV['BRANCH'] || 'master'

这些参数分别指定了部署的域名、部署路径、版本库地址和分支。

配置共享路径

在config/deploy.rb文件中,设置共享路径:

set :shared_paths, [ 'config/database.yml', 'config/secrets.yml', 'log' ]

共享路径用于指定需要在部署后创建软链接的文件或目录。

设置用户和SSH代理

接下来,设置SSH登录用户和启用SSH代理:

set :user, 'deployer' set :forward_agent, true

这将允许Mina使用指定的用户登录服务器,并在需要时通过SSH代理传递SSH密钥。

部署前的设置

在config/deploy.rb文件的setup任务中,Mina会创建必要的文件和目录,并设置软链接。例如:

task :setup => :environment do queue! %[mkdir -p "#{deploy_to}/#{shared_path}/log"] queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/log"] queue! %[touch "#{deploy_to}/#{shared_path}/config/database.yml"] queue! %[touch "#{deploy_to}/#{shared_path}/config/secrets.yml"] queue %[echo "-----> Be sure to edit '#{deploy_to}/#{shared_path}/config/database.yml' and 'secrets.yml'."] if repository repo_host = repository.split(%r{@|:// }).last.split(%r{:|\/}).first repo_port = /:([0-9]+)/.match(repository) && /:([0-9]+)/.match(repository)[1] || '22' queue %[ if ! ssh-keygen -H -F #{repo_host} &>/dev/null; then ssh-keyscan -t rsa -p #{repo_port} -H #{repo_host} >> ~/.ssh/known_hosts fi ] end end

保存config/deploy.rb文件后,在命令行中运行:

$ mina setup -v

这将设置服务器上必要的目录和软链接。

部署应用

部署应用非常简单,只需运行:

$ mina deploy

如果需要部署特定分支,可以使用:

$ BRANCH=my-branch mina deploy
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485