[ruby on rails]mina+puma+nginx自动化部署

  • 安装mina
# 本地命令行,当前最新版本1.2.3
gem install mina
  • 创建Mina的配置文件
    cd进入自己的Rails项目目录
mina init

会生成deploy.rb文件
进行配置

require 'mina/rails'
require 'mina/git'
require 'mina/puma'
require 'mina/rbenv'  # ruby版本控制用rbenv,rvm的话还要设置gemset

set :application_name, 'rails_app'    #给项目起名字,随便起
set :domain, 'username@ip'    #用户名@ip,用来ssh 登录服务器用的
set :deploy_to, '/home/username/rails_app'    #服务器里想把项目部署的位置,可以没有rails_app那个文件夹,会自动创建
set :repository, 'git@xxxxxxxxt'   #项目git地址,也可以用https开头的
set :branch, 'master'     #想部署的分支

set :forward_agent, true     #使用本地的`SSH秘钥`去服务器执行`git pull`,这样`Git`上就不用设置`部署公钥`

#如果rails是5.2以上版本,就把下面的secrets.yml改成master.key
set :shared_files, fetch(:shared_files, []).push('config/database.yml', 'config/secrets.yml')

task :remote_environment do
  invoke :'rbenv:load'
end

task :setup do
  # command %{rbenv install 2.3.0 --skip-existing}
end

desc "Deploys the current version to the server."
task :deploy do
  deploy do
    invoke :'git:clone'
    invoke :'deploy:link_shared_paths'
    invoke :'bundle:install'
    invoke :'rails:db_migrate'
    invoke :'rails:assets_precompile'
    invoke :'deploy:cleanup'

    on :launch do
      in_path(fetch(:current_path)) do
        command %{mkdir -p tmp/}
        command %{touch tmp/restart.txt}
      end
    end
  end
end
  • 服务器生成Mina的相关目录

在本地mina setup,这里的遇到个坑,运行完这个命令终端里会提示远程服务器关闭,还是红色字体提示,我以为是报错了,其实没有报错。

然后你需要SSH到服务器上,在生成的项目下 /shared/config目录中,新建以下两个文件

  1. database.yml,直接把本地database.yml的内容拷进去
  2. secrets.yml,也是一样把本地 secrets.yml的内容拷进去

猜你喜欢

转载自blog.csdn.net/qq_41037744/article/details/89883949