如何使用 Mina 进行部署:入门

金钱(警告)

状态: 被贬低

本文涵盖了不再受支持的 CentOS 版本. 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议升级或迁移到受支持的 CentOS 版本。

** 原因** : CentOS 6 已于 2020 年 11 月 30 日到期(EOL)并且不再收到安全补丁或更新。

** 参见相反** :本指南可能仍然有用作为参考,但可能不适用于其他 CentOS 版本. 如果可用,我们强烈建议使用为您使用的 CentOS 版本撰写的指南。

美元

介绍


如果您正在寻找一种方式来促进您每天执行的一些操作,正如简单的搜索所显示的那样,有超过少数工具可用. 如果您检查它们,您会看到它们都声称为您提供在线应用程序(即部署)的程序更容易。

在这篇DigitalOcean文章中,我们将学习一种不同的方法来自动化远程服务器任务,涵盖从管理流程到实际部署应用程序的大部分区域,使用Mina:一个Bash脚本生成器和远程执行工具,建立在RAKE(http://rake.rubyforge.org/)。

词汇


1 理解米娜和雷克


  1. Mina 部署器和自动化工具 2. RAKE - Ruby Make

第2章:去挖矿


  1. 准备系统 2. 设置 Ruby 环境和 Rails 3. 安装 Mina

3 开始使用Mina


  1. 启动 Mina 2. 在部署服务器上创建一个部署用户

使用 config/deploy.rb 工作


  1. 定义服务器 2. 部署应用程序 3. 定义部署任务 4. 处理任务和子任务

5 例子:部署一个 Rails 应用程序


理解Mina和雷克


幸运的是,Mina背后没有火箭科学,它是一个非常简单的Ruby/RAKE工具,可以帮助您自动执行远程任务 - 通常与部署有关。

Mina 部署器和自动化工具


Mina是一个基于Ruby的工具,它有助于人们创建包含要执行的任务列表的脚本,分组在一个名称下,以方便日常操作。

它实际上是相当快的,也许像其类型的工具一样快,因为它所做的只是连接到服务器并运行Bash程序。

虽然有些人批评Mina并称之为原始,但其优良的特性(例如,任务排队,非常方便!)可以非常顺利地实现很多事情,没有跳跃,速度非常快。

为了让您更好地了解不仅是Mina,而且一般来说是这样的工具,以下是可以做什么以及Mina可能有用的时机的简短列表:

  • ** 筹备和建立服务器:** 如果您需要反复创建并摧毁虚拟服务器,您将花费大量时间设置它们. 利用Mina,可以实现进程自动化.
  • ** 调动应用程序:** 无论您是否有 HTTP 服务器应用程序,您都可以使用 Mina 在部署机上更新您的应用程序的源代码,并在不处理FTP或其他工具的情况下自动将新版本带入并运行.
  • ** 管理过程:** 这听起来非常通俗,但想象一下您需要管理多少次(可能每天)在服务器上运行的进程,比如应用程序服务器,代理服务器,或者您典型的Nginx前置反向代理. 有了米娜的任务,你可以促进这个过程,并获得相当大的势头——保持一切组织起来同时进行.
  • ** 生活在无铁路世界** : 米娜可以做所有以上,甚至更多,而无需任何严格的依赖,依赖,或效忠于铁路公司. 和Mina一起 你几乎可以部署一切 .

Mina的deploy.rb脚本实际上是RAKE文件,包含一大堆组合任务.一切都是用Ruby编写的,而不需要处理其他类型的配置 - 你不需要熟悉任何你几乎永远不会再使用的新东西。

标签:Ruby Make


网页开发人员、程序员和任何从事科学或计算机的人都应该对他们所使用的工具有很好的了解。

然而,什么是Rake?

RAKE是一系列在性质上类似于GNU Make 的组件,工具和定义. Make是最广泛和最受欢迎的公用事业之一,自1970年代后期被引入Unix系统以来,它就被建成了. 它因其系统独立的性质以及它所提供的将命令和指令合并为一个文件的能力而变得真正受欢迎,这些文件被称为"makefiles". 这些文件和Make作为工具被用于构建应用程序(即编译源代码并生成可执行的二进制).

Rake可被指为"建设语言"_. 它用于以结构化的方式轻松地定义任务,以便在命令行中执行. 就其性质而言,这些命令通常与系统管理有关,例如应用程序部署或管理服务器. 拉克的这种结构可以被指为"域特有语言"_域特有语言,用鲁比来写出,其中所有事物在边界内都有一定的定义和设定. 它被称为构建工具,因为如前所述,其操作通常与构建某物有关(如库,应用程序等)

RAKE 可以通过 RubyGems 获取。

要访问官方的 RAKE 项目页面,请点击 这里。 有关 RAKE 的更多信息,请参阅此主题的优秀、详细的文章: 使用 Rake 构建语言

获取地雷


当使用Mina时,你需要确保有一个稳定的Ruby环境,安装必要的依赖性,并很好地运行 - 例如``。

在本节中,我们将开始在CentOS 6系统上创建一个Ruby环境,从那里,您将能够使用Mina在部署服务器上自动化程序。

准备系统


为了安装 Ruby,我们首先需要准备最低限度交付的 CentOS 服务器。

运行以下命令来更新 CentOS 基于 VPS 的默认工具:

1yum -y update
2
3# This command will update all the base applications
4# that come with CentOS by default. Which are mostly
5# reserved for use by the operating system.

通过执行以下命令安装包含开发工具的包:

1yum groupinstall -y 'development tools'
2
3# With more recent versions of CentOS, such as 6.5 in our case,
4# you can simply run:
5# yum groupinstall -y development
6# instead.
7
8# This bundle of applications contains various tools
9# Such as: gcc, make, automake, binutils, git etc.

一些方便的库和包(例如 libyaml-devel, nginx 等)在官方 CentOS 存储库中找不到。为了简化事情,而不是手动安装它们,我们将添加用于 YUM 包管理器的 EPEL 软件存储库。

1# Enable EPEL Repository
2sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'
3
4# Update everything, once more.
5yum -y update

最后,我们需要为本教程获取curl-devel和其他几个工具和库(例如,Rails需要 sqlite-devel)。

为了安装它们,运行以下操作:

1yum install -y curl-devel nano sqlite-devel libyaml-devel

设置 Ruby 环境和铁路


注: 本节是我们专门文章的摘要 如何在CentOS 6.5上安装Ruby 2.1.0

我们将使用 Ruby Version Manager (RVM) 来下载和安装 Ruby 解释器。

运行以下两个命令来安装 RVM 并为 Ruby 创建系统环境:

1curl -L get.rvm.io | bash -s stable
2source /etc/profile.d/rvm.sh

最后,为了在我们的系统上完成安装Ruby,让我们让RVM下载并安装Ruby版本 2.1.0:

1rvm reload
2rvm install 2.1.0

由于 Rails 首先需要一个 JavaScript 解释器来工作,我们还需要设置 Node.js. 为此,我们将使用默认系统包管理器 YUM。

运行以下操作来下载和安装使用yum的 Nodejs:

1yum install -y nodejs

执行以下命令下载和安装使用gem的轨道:

1gem install bundler rails

安装地雷


有几个方法来下载Mina. 最简单的方法是使用RubyGems。

运行以下操作来下载和安装Mina:

1gem install mina

开始使用Mina


将 mina 介绍到您的项目时,需要做的第一件事是在项目目录中启动 mine。

之后,您可以编辑由Mina创建的config/deploy.rb,以定义您的服务器和任务。

首页 > 开采


输入您的项目目录并运行以下命令:

1# Enter your project directory:
2cd ~/project_dir
3
4# Initiate Mina
5mina init
6
7# -----> Created ./config/deploy.rb
8#        Edit this file, then run `mina setup` after.

在部署服务器上创建部署用户


这是一个明智的选择,创建一个用户,而不是根,执行部署的操作,将被使用和召唤的Mina. 为此,让我们在远程**主机上创建一个部署用户。

创建新系统用户:

1adduser deployer

设置 deployer 的密码:

1passwd deployer
2
3# Enter a password
4# Confirm the password

使用文本编辑器 nano 编辑 /etc/sudoers:

1nano /etc/sudoers

向下滚动并找到root定义的位置:

1..
2
3## The COMMANDS section may have other options added to it.
4##
5## Allow root to run any commands anywhere
6root ALL=(ALL)	ALL
7
8..

root ALL=(ALL) ALL 之后附上下列字符:

1deployer ALL=(ALL) ALL

此「/etc/sudoers」文件的部分现在应该是这样的:

1..
2
3## The COMMANDS section may have other options added to it.
4##
5## Allow root to run any commands anywhere
6root ALL=(ALL)	ALL
7deployer ALL=(ALL) ALL
8
9..

按 CTRL + X 并用 Y 确认保存和退出。

使用 config/deploy.rb 工作


接下来,打开由Mina创建的deploy.rb文件,定义您的部署服务器并设置任务。

1nano config/deploy.rb

定义服务器


第一步是编辑:域行以设置服务器的地址。

查找并修改相应的配置,以匹配您的虚拟服务器的配置:

 1# Basic settings:
 2#   domain	 - The hostname to SSH to.
 3#   deploy_to    - Path to deploy into.
 4#   repository   - Git repo to clone from. (needed by mina/git)
 5#   branch	 - Branch name to deploy. (needed by mina/git)
 6
 7# Default:
 8# set :domain, 'foobar.com'
 9
10# Change the default to match your server's address
11# Example:
12set :domain, 'server.domain.tld'
13# or
14# set :domain, '162.243.74.190'
15
16# Optional settings:
17#   set :user, 'foobar'    # Username in the server to SSH to.
18#   set :port, '30000'     # SSH port number.
19
20set :user, 'deployer'
21set :port, '22'

部署应用程序


使用Mina,您可以轻松地部署您的应用程序从一个中央和托管的存储库,如Github. 正如上一节所提到的,您可以通过设置deploy_to repository参数以及分支机构来实现这一目标。

例子:

1# Application's deployment location on the remote server
2# Example:
3set :deploy_to, '/var/www/my_app'
4
5set :repository, 'git://...'
6set :branch, 'master'

定义部署任务


Mina 的deploy.rb文件包含一些示例任务,针对 Rails 的命令mine deploy

例子:

 1desc "Deploys the current version to the server."
 2task :deploy => :environment do
 3  deploy do
 4    # Put things that will set up an empty directory into a fully set-up
 5    # instance of your project.
 6    invoke :'git:clone'
 7    invoke :'deploy:link_shared_paths'
 8    invoke :'bundle:install'
 9    invoke :'rails:db_migrate'
10    invoke :'rails:assets_precompile'
11
12    to :launch do
13      queue "touch #{deploy_to}/tmp/restart.txt"
14    end
15  end
16end

工作与任务和子任务


您可以用Mina定义和链接任务,这在许多情况下可以非常方便。

下面是处理任务并从官方文档中链接它们的例子:

 1task :down do
 2  invoke :maintenance_on
 3  invoke :restart
 4end
 5
 6task :maintenance_on
 7  queue 'touch maintenance.txt'
 8end
 9
10task :restart
11  queue 'sudo service restart apache'
12end

示例:部署 Rails 应用程序


要了解如何部署实际的 Rails 应用程序,以及如何相应地使用 `deploy.rb,请参阅 DigitalOcean 社区文章部分中的 如何使用 Mina 部署 Ruby on Rails 应用程序

** 注意:** 使用相同的原理,您可以使用Mina部署任何类型的应用程序。

Submitted by: O.S. Tezer
Published At
Categories with 技术
comments powered by Disqus