Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo escribir un simple Shell Script en un VPS

marzo 4, 2020

 

Introducción

Si usted está buscando una manera de facilitar algunas de las acciones que se realizan todos los días, como una simple búsqueda mostrará, hay más de un puñado de herramientas disponibles. Si son chequeadas verá que todos ellos afirman que el procedimiento de poner su solicitud en línea (es decir desplegarlo) más fácil para usted. Sin embargo, apenas se diferencian el uno del otro – y pueden ser bastante complicados de usar también.

Mina herramienta de activación y automatización, lo que podría parecer no es diferente que el resto, es en realidad muy especial. En este artículo digitalocean vamos a aprender de una manera diferente para automatizar tareas de servidor remoto, que cubre una gran área de la gestión de procesos para aplicaciones de realidad que despliegan, utilizando Mina : un generador de secuencia de comandos Bash y una herramienta de ejecución remota basada en RAKE.

Glosario

1. Comprensión Mina y rastrillo

2. Primeros Mina

3. Introducción a Usando Mina

4. Con Trabajo config / deploy.rb

5. Ejemplo: Comprender la implementación de una aplicación Rails

Mina y el rastrillo

Afortunadamente, no hay una “ciencia exacta” detrás de Mina. Es muy sencillo de utilizar Rubí / RASTRILLO herramienta que le ayuda con la automatización de ejecución de tareas a distancia – por lo general relacionados con el despliegue.

Mina de activación y automatización de herramientas

Mina es una herramienta basada en Ruby. Está ahí para ayudar a la gente con la creación de secuencias de comandos que contienen una lista de tareas a realizar, agrupados bajo un nombre, para facilitar las operaciones diarias. Mina convierte estos archivos de programación basados ​​rastrillo para los scripts Bash, se conecta a un servidor remoto definido, y ejecuta ellos.

En realidad es bastante rápido, y quizás lo más rápido que una herramienta de este género puede llegar, ya que lo único que hace es conectarse al servidor y ejecutar los programas del golpe.

Aunque algunos critican Mina y llamarlo primitivo, con sus excelentes características (por ejemplo, colas de tareas, muy práctico!) Mucho se puede lograr sin problemas, y sin contratiempos, con gran velocidad.

para proporcionarle una mejor comprensión no sólo de Mina, pero este tipo de herramientas en general, aquí es una breve lista de lo que puede hacerse y cuando Mina puede ser útil:

  • Preparación y configuración de un servidor: Si necesita repetidamente crear y destruir los servidores virtuales, que van a pasar mucho tiempo la que fueron creados. El uso de Mina, se puede automatizar el proceso. aplicaciones
  • Desplegando: Ya sea que tenga HTTP aplicaciones de servidor en lugar o no, puede utilizar Mina para actualizar el código fuente de la aplicación en la máquina de despliegue (s) y llevar automáticamente la nueva versión en funcionamiento sin tener que lidiar con el ftp u otras herramientas.
  • procesos de Gestión: Esto suena muy genéricos, pero imagina cuántas veces (probablemente por día) que necesita para gestionar un proceso que se ejecuta en un servidor, como un servidor de aplicaciones, un proxy o el proxy inverso de frente Nginx típica . Con tareas de Mina, puede facilitar este y ganar una buena cantidad de momento – mantener todo organizado al mismo tiempo.
  • de estar en un mundo Rieles-menos: Mina puede hacer todo lo anterior y más, sin tener ningún estricta dependencia, dependencia, o lealtad a los carriles. Con Mina, puede implementar casi todo.

Preparación y configuración de un servidor: Si es necesario crear y destruir repetidamente servidores virtuales, que van a pasar mucho tiempo la que fueron creados. El uso de Mina, se puede automatizar el proceso. aplicaciones

Desplegando: Si usted tiene HTTP aplicaciones de servidor en lugar o no, puede utilizar Mina para actualizar el código fuente de la aplicación en la máquina de despliegue (s) y llevar automáticamente la nueva versión en funcionamiento sin tener que lidiar con FTP u otro herramientas.

procesos de Gestión: Esto suena muy genérico, pero imagina cuántas veces (probablemente por día) que necesita para gestionar un proceso que se ejecuta en un servidor, como un servidor de aplicaciones, un proxy o el típico Nginx de frente proxy inverso. Con tareas de Mina, puede facilitar este y ganar una buena cantidad de momento – mantener todo organizado al mismo tiempo.

de estar en un mundo Rieles-menos : Mina puede hacer todo lo anterior y más, sin tener ningún estricta dependencia, dependencia, o lealtad a los carriles. Con Mina, puede implementar casi todo. guiones deploy.rb de

Mina son en realidad archivos rastrillo con un montón de tareas agrupadas. Todo está escrito en Ruby, sin atender a otros tipos de configuraciones – que no es necesario para familiarizarse con cualquier cosa nueva que usted casi nunca se utiliza de nuevo.

RASTRILLO – Rubí Hacer desarrolladores

web, programadores y cualquiera que se relacione con la ciencia o las computadoras deben tener una buena comprensión de las herramientas que utilizan. En el caso de Mina, la magia viene de RASTRILLO .

Sin embargo, lo que es el rake?

RAKE es una serie de componentes, herramientas y definiciones similares en naturaleza a GNU Make . Make es una de las mayoría de las utilidades extendidas y populares, que se ha incorporado en los sistemas Unix desde su introducción en finales de 1970. Se hizo muy popular por su naturaleza independiente del sistema y la posibilidad que ofrece de combinar comandos e instrucciones en un solo archivo, que se denominan como “archivos make”. Estos archivos y hacer como una herramienta se utilizan para aplicaciones de construcción (es decir, compilar el código fuente y generar los binarios ejecutables).

Rake puede ser referido como un lenguaje acumulación . Se utiliza para definir fácilmente las tareas de una manera estructurada para ser ejecutado en la línea de comandos. Por naturaleza, estos comandos son por lo general la administración de sistemas relacionados, tales como la implementación de aplicaciones o la administración de servidores. Esta estructura de rastrillo puede ser contemplado como un lenguaje específico de dominio , escrita en Ruby, en el que todo lo que se define y establece de una manera determinada dentro de los límites. Se llama una herramienta de construcción, ya que, como se ha descrito anteriormente, sus operaciones suelen estar relacionados con la construcción de algo (por ejemplo, una biblioteca, una aplicación, etc.)

RAKE se puede obtener a través de RubyGems.

Para visitar la página oficial del proyecto rastrillo, haga clic aquí. Para obtener más información sobre RAKE, echa un vistazo a este excelente, detallado artículo sobre el tema: Usando el rastrillo Construir Idioma.

Conseguir Mina

Al utilizar Mina, tiene que asegurarse de tener un entorno estable con Rubí dependencias necesarias instaladas y operando bien – como la joya.

En esta sección, vamos a empezar con la creación de un entorno de Ruby en un sistema CentOS 6. De allí en adelante, usted será capaz de utilizar Mina a procedimientos Automatizar en sus servidores de implementación.

Preparación El orden Sistema

para instalar Ruby, en primer lugar hay que preparar el servidor CentOS mínimamente enviado.

Ejecutar el siguiente comando para actualizar las herramientas predeterminadas de sus CentOS VPS basados:

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.

instalar el paquete que contiene herramientas de desarrollo mediante la ejecución del siguiente comando:

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.

Algunas de las bibliotecas y paquetes de útiles (por ejemplo libyaml-devel, nginx etc. .) son no encuentra dentro del repositorio oficial de CentOS. Para simplificar las cosas y no para hacer frente a la instalación manual de ellos, vamos a añadir el repositorio de software para la EPEL administrador de paquetes yum para su uso. Esto permitirá a la simple descarga de softare adicional.

# 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

Por último, hay que sacar a curl-devel y varias otras herramientas y bibliotecas para este tutorial (por ejemplo rieles necesita sqlite-devel).

Para instalarlos, ejecute el siguiente:

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

Configuración de Ruby y Rails Medio Ambiente

Nota: Esta sección es un resumen de nuestro artículo dedicado Cómo instalar Rubí 2.1.0 en CentOS 6.5.

Vamos a utilizar de Ruby Version Manager (RVM) para descargar e instalar un intérprete de Ruby.

Ejecutar los siguientes dos comandos para instalar RVM y crear un entorno de sistema para Ruby:

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

Por último, para finalizar la instalación de Ruby en nuestro sistema, vamos a RVM para descargar e instalar la versión 2.1.0 de Ruby:

rvm reload
rvm install 2.1.0

Dado que las necesidades Rieles ante todo, un intérprete de JavaScript al trabajo, también necesitaremos configurar Node.js. Para este fin, vamos a utilizar el gestor mmm paquete de sistema por defecto.

Ejecutar lo siguiente para descargar e instalar nodejs usando yum:

yum install -y nodejs

Ejecutar el siguiente comando para descargar e instalar rieles con gema:

gem install bundler rails

Instalación Mina

Hay un par de maneras de descargar Mina. La forma más sencilla es RubyGems uso.

Ejecutar lo siguiente para descargar e instalar Mina:

gem install mina

Cómo comenzar a usar Usando Mina

Al introducir mina a su proyecto, lo primero que se necesita es iniciar mina dentro del directorio del proyecto.

Posteriormente, puede editar el archivo config / deploy.rb creado por Mina para definir su servidor y las tareas a realizar.

Iniciación Mina

Introduzca el directorio del proyecto y ejecutar el siguiente comando:

# Enter your project directory:
cd ~/project_dir

# Initiate Mina
mina init

# -----> Created ./config/deploy.rb
# Edit this file, then run `mina setup` after.

Crear Usuario A activación en el despliegue del servidor

Es una elección sensata para crear un usuario, que no sea la raíz, para llevar a cabo las acciones de despliegue de los cuales serán utilizados y invocada por Mina. Para este fin, vamos a crear en el remota anfitrión un usuario implementador.

Crear un nuevo usuario del sistema:

adduser deployer

establecer la contraseña implementador:

passwd deployer

# Enter a password
# Confirm the password

Editar / etc / sudoers utilizando el editor de textos nano:

nano /etc/sudoers

de desplazamiento hacia abajo el archivo y encontrar donde se define la raíz:

..

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

..

Añada la siguiente justo después de la raíz ALL = (ALL) ALL :

deployer ALL=(ALL) ALL

esta sección del archivo / etc / sudoers ahora debería tener este aspecto:

..

## 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

..

Presione CTRL + X y confirmar con y para guardar y salir. Con

Trabajo config / deploy.rb

A continuación, abra el archivo deploy.rb, creado por Mina, para definir el servidor de despliegue y de las tareas encomendadas.

nano config/deploy.rb

Definición del servidor de

El primer paso es editar el: Línea de dominio para establecer la dirección de su servidor.

Buscar y modificar la configuración correspondiente para que coincida con su servidor virtual: Aplicaciones

# 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'

Desplegando

Usando Mina, puede implementar fácilmente aplicaciones de una central y alojado repositorio como Github. Como se mencionó en la sección anterior, se puede lograr esto con el establecimiento de la deploy_to y los parámetros de depósito, así como la rama si es necesario.

Ejemplo: archivo deploy.rb de Tareas

# Application's deployment location on the remote server
# Example:
set :deploy_to, '/var/www/my_app'

set :repository, 'git://...'
set :branch, 'master'

Definición de implementación

Mina viene con algunas tareas de orientación ejemplo dado, rieles para mina mandato de despliegue.

Ejemplo:

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}mp/restart.txt"
end
end
end

Trabajar con tareas y subtareas

puede definir y tareas de cadena con Mina que puede ser muy útil en muchas situaciones.

A continuación se muestra un ejemplo de trabajo con tareas y encadenándolos de la documentación oficial:

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

Ejemplo: Implementación de una aplicación Rails

Para aprender acerca de cómo implementar una aplicación Rails real y la forma de trabajo con deploy.rb consecuencia, cheque la manera de utilizar Mina para desplegar una aplicación Ruby on Rails en la sección artículos de la comunidad digitalocean.

Nota: Utilizando los mismos principios, puede implementar cualquier tipo de aplicación con Mina.