介绍
如果你正在寻找一种方法来促进你每天执行的一些操作,一个简单的搜索将显示,有不止一个工具可用。 如果你检查他们,你会看到,他们都声称使你的应用程序在线(即部署)的过程更容易为你。 然而,它们彼此几乎不同 - 并且它们也可以相当复杂地使用。
Mina部署和自动化工具,它可能会出现没有什么不同比其他人,其实是相当特殊的。 在这个DigitalOcean文章中,我们要学习用不同的方式来自动化远程服务器任务,从管理流程实际部署应用程序,使用Mina覆盖面积大:一个Bash脚本生成器和内置的远程执行工具RAKE 。
词汇表
1.了解Mina&Rake
- Mina部署和自动化工具
- RAKE - Ruby Make
2.获得Mina
- 准备系统
- 设置Ruby环境和Rails
- 安装Mina
3.使用Mina入门
- 启动Mina
- 在部署服务器上创建部署者用户
4.使用config / deploy.rb
- 定义服务器
- 部署应用程序
- 定义部署任务
- 使用任务和子任务
5.示例:部署Rails应用程序
了解Mina和RAKE
幸运的是,米纳后面没有“火箭科学”。 使用Ruby / RAKE工具非常简单,可以帮助您自动执行远程任务 - 通常与部署相关。
Mina部署和自动化工具
Mina是一个基于Ruby的工具。 它是帮助人们创建脚本,其中包含要执行的任务列表,分组在一个名称下,以方便日常操作。 Mina将这些基于RAKE的编程文件转换为Bash脚本,连接到定义的远程服务器,并执行它们。
它实际上相当快,并且可能与其类型的工具可以得到,因为它是连接到服务器和运行Bash程序。
虽然有些人批评Mina并把它称为原始的,有其优秀的功能(例如排队任务,非常方便!)很多可以非常顺利地实现,没有打嗝,以极大的速度。
为了让您更好地了解不仅仅是Mina,但是这些工具一般来说,这里有一个简短的列表,可以做什么,当Mina可能派上用场:
准备和设置服务器:如果你需要反复创建和销毁虚拟服务器,你会花很多时间设置他们。 使用Mina,您可以自动化过程。
部署应用程序:无论你是否有到位与否HTTP服务器应用程序,你可以使用Mina到部署机(S)上更新应用程序的源代码,并自动将新版本和运行无需处理FTP或其他工具。
管理流程:这听起来很普通,但是想象一下,你只需要多少次(可能是每天)来管理服务器,上运行一些程序,如应用服务器,代理服务器,或者您的Nginx的前置反向代理。 使用Mina的任务,你可以促进这一点,并获得很大的动量 - 保持一切组织在同一时间。
生活在一个Rails少的世界 :Mina能做到以上等等,而无需任何严格的依赖,依赖,还是效忠轨。 有了Mina,你几乎可以部署一切。
Mina的deploy.rb
脚本实际上一堆分组任务RAKE文件。 一切都是用Ruby写的,而不需要处理其他种类的配置 - 你不需要熟悉任何新的,你几乎不会再使用。
RAKE - Ruby Make
Web开发人员,程序员和处理科学或计算机的任何人都应该很好地了解他们使用的工具。 在Mina的情况下,魔力来自RAKE。
然而,什么是RAKE?
瑞克是一系列组件,工具,并在性质上GNU制作类似的定义。 Make是最广泛和最受欢迎的实用程序之一,自从它于20世纪70年代后期引入以来,Unix系统已经内置了它。 它变得非常受欢迎,因为它的系统无关的性质和它提供将命令和指令合并到一个单一的文件,称为“makefiles”的能力。 这些文件和Make作为工具用于构建应用程序(即编译源代码和生成可执行二进制文件)。
耙可以称为作为构建语言 。 它用于以结构化方式轻松定义任务,以便在命令行中执行。 本质上,这些命令通常与系统管理相关,例如应用程序部署或管理服务器。 瑞克的这种结构可被称为一个域特定的语言 ,Ruby编写,由此一切被定义并在边界内一定的方式设置的。 它被称为构建工具,因为如前所述,其操作通常与构建某物(例如库,应用程序等)相关,
RAKE可以通过RubyGems获得。
访问官方RAKE项目页面,点击这里 。 要了解更多关于耙,检查出这个问题这个优秀的,详细的文章: 使用Rake构建语言 。
获得Mina
当使用Mina,你需要确保有一个稳定的环境的Ruby安装必要的依赖和操作精细-如gem
。
在本节中,我们将从在CentOS 6系统上创建Ruby环境开始。 从中,您将能够使用Mina在部署服务器上自动化过程。
准备系统
为了安装Ruby,我们首先需要准备最低出货量的CentOS服务器。
运行以下命令更新基于CentOS的VPS的默认工具:
yum -y update
# This command will update all the base applications
# that come with CentOS by default. Which are mostly
# reserved for use by the operating system.
通过执行以下命令安装包含开发工具的软件包:
yum groupinstall -y 'development tools'
# With more recent versions of CentOS, such as 6.5 in our case,
# you can simply run:
# yum groupinstall -y development
# instead.
# This bundle of applications contains various tools
# Such as: gcc, make, automake, binutils, git etc.
一些方便的库和包(如libyaml-DEVEL,nginx的等)都没有官方的CentOS存储库中找到。 为了简化操作并且不处理手动安装它们,我们将添加用于YUM软件包管理器的EPEL软件存储库。 这将使简单下载附加软件。
# Enable EPEL Repository
sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'
# Update everything, once more.
yum -y update
最后,我们需要得到curl-devel
和其他一些工具和库本教程(如Rails需要的sqlite-DEVEL)。
要安装它们,请运行以下命令:
yum install -y curl-devel nano sqlite-devel libyaml-devel
设置Ruby环境和Rails
注:本部分我们专门文章内容摘要如何安装Ruby 2.1.0在CentOS 6.5 。
我们将使用Ruby版本管理器(RVM)下载并安装一个Ruby解释器。
运行以下两个命令来安装RVM并为Ruby创建一个系统环境:
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
最后,要在我们的系统上完成Ruby安装,让我们让RVM下载并安装Ruby版本2.1.0:
rvm reload
rvm install 2.1.0
由于Rails首先需要一个JavaScript解释器来工作,我们还需要设置Node.js. 为此,我们将使用默认的系统包管理器YUM。
运行以下命令以下载和安装使用的NodeJS yum
:
yum install -y nodejs
执行以下命令下载和安装使用护栏gem
:
gem install bundler rails
安装Mina
有几种方法可以下载Mina。 最简单的方法是使用RubyGems。
运行以下命令下载并安装Mina:
gem install mina
使用Mina入门
在向项目中引入mina时,所需要的第一件事是在项目目录中启动mina。
之后,您可以编辑config/deploy.rb
由Mina创建来定义您的服务器和要执行的任务。
启动Mina
输入项目目录并运行以下命令:
# Enter your project directory:
cd ~/project_dir
# Initiate Mina
mina init
# -----> Created ./config/deploy.rb
# Edit this file, then run `mina setup` after.
在部署服务器上创建部署者用户
创建除root以外的用户来执行Mina将使用和调用的部署操作是一个绝对的选择。 为此,我们在远程主机上创建deployer
的用户。
创建新的系统用户:
adduser deployer
设置部署者的密码:
passwd deployer
# Enter a password
# Confirm the password
编辑/etc/sudoers
使用文本编辑器nano:
nano /etc/sudoers
向下滚动文件,并找到root
的定义:
..
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
..
追加根ALL =(ALL)之后以下几点:
deployer ALL=(ALL) ALL
在本节/etc/sudoers
文件现在应该是这样的:
..
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
deployer ALL=(ALL) ALL
..
按CTRL + X,并用Y确认保存并退出。
使用config / deploy.rb
接下来,打开deploy.rb
文件,由Mina创建,以定义您的部署服务器,并设置任务。
nano config/deploy.rb
定义服务器
第一步是编辑:domain
行设置你的服务器的地址。
查找并修改相关配置以匹配虚拟服务器的:
# Basic settings:
# domain - The hostname to SSH to.
# deploy_to - Path to deploy into.
# repository - Git repo to clone from. (needed by mina/git)
# branch - Branch name to deploy. (needed by mina/git)
# Default:
# set :domain, 'foobar.com'
# Change the default to match your server's address
# Example:
set :domain, 'server.domain.tld'
# or
# set :domain, '162.243.74.190'
# Optional settings:
# set :user, 'foobar' # Username in the server to SSH to.
# set :port, '30000' # SSH port number.
set :user, 'deployer'
set :port, '22'
部署应用程序
使用Mina,您可以从中央和托管存储库(如Github)轻松部署应用程序。 正如前面所提到的,你可以设置实现这一deploy_to
和repository
参数,以及branch
,如果必要的。
例:
# Application's deployment location on the remote server
# Example:
set :deploy_to, '/var/www/my_app'
set :repository, 'git://...'
set :branch, 'master'
定义部署任务
Mina的deploy.rb
文件带有设置一些例子任务,瞄准Rails作为mina deploy
命令。
例:
desc "Deploys the current version to the server."
task :deploy => :environment do
deploy do
# Put things that will set up an empty directory into a fully set-up
# instance of your project.
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
invoke :'rails:db_migrate'
invoke :'rails:assets_precompile'
to :launch do
queue "touch #{deploy_to}/tmp/restart.txt"
end
end
end
使用任务和子任务
您可以使用Mina定义和链接任务,这在许多情况下可以非常方便。
下面是一个使用任务并从官方文档中链接它们的示例:
task :down do
invoke :maintenance_on
invoke :restart
end
task :maintenance_on
queue 'touch maintenance.txt'
end
task :restart
queue 'sudo service restart apache'
end
示例:部署Rails应用程序
要了解如何部署一个实际的Rails应用程序,以及如何与工作deploy.rb
因此,检查出如何使用Mina部署on Rails应用程序一个Ruby的DigitalOcean社区文章部分。
注意:使用相同的校长,您可以部署任何类型的应用与Mina。