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

Cómo Configurar la Plataforma IDE de Nube de Servidores de Código en DigitalOcean Kubernetes

marzo 4, 2020

 

Introducción

rieles

es un marco de aplicación web de código abierto escrito en Ruby. De ello se desprende la Convención sobre configuración filosofía al hacer suposiciones que no es el ‘mejor’ de hacer las cosas. Esto le permite escribir menos código durante el cumplimiento de más sin tener que ir a través de archivos de configuración sin fin.

Nginx es un servidor de alto rendimiento HTTP, proxy inverso, y un equilibrador de carga conocido por su enfoque en la concurrencia, la estabilidad, la escalabilidad y bajo consumo de memoria. Al igual que Nginx, Puma es otro servidor web extremadamente rápido y concurrente con una muy pequeña huella de memoria, pero construido para aplicaciones web Ruby.

Capistrano es una herramienta de automatización de servidor remoto centrándose principalmente en Rubí aplicaciones web. Se utiliza para aplicaciones web implementar de manera confiable a cualquier número de equipos remotos mediante secuencias de comandos arbitrarios flujos de trabajo a través de SSH y automatizar tareas comunes como activo antes de la compilación y reiniciar el servidor Rails.

En este tutorial vamos a instalar Ruby y Nginx en un digitalocean Ubuntu de gotas y configurar Puma y Capistrano en nuestra aplicación web. Nginx se utilizará para las solicitudes de cliente de captura y los pasa al servidor web Puma carriles de rodadura. Vamos a utilizar Capistrano para automatizar tareas de implementación comunes, por lo que cada vez que tenemos que desplegar una nueva versión de nuestra aplicación Rails con el servidor, podemos hacer eso con unos pocos comandos simples.

Requisitos previos

Para seguir este tutorial, debe tener lo siguiente: (. Configuración inicial del servidor con Ubuntu 14.04 se explica cómo configurar esto)

  • Ubuntu 14.04 x64 de gotas
  • Un usuario no root implementar con nombre con privilegios sudo Trabajo de los carriles
  • aplicación alojada en un repositorio Git remoto que está listo para ser desplegado

Opcionalmente, para mayor seguridad, puede deshabilitar la conexión de la raíz a través de SSH y cambiar el número de puerto SSH como se describe en Configuración inicial del servidor con Ubuntu 14.04.

Advertencia: Después de desactivar la conexión de la raíz, asegúrese de que puede SSH a su Droplet como el usuario de implementar y usar sudo para este usuario antes cerrar la sesión SSH raíz que se abrió para hacer estos cambios.

Todos los comandos de este tutorial se deben ejecutar como el usuario despliegue. Si se requiere acceso de root para el comando, que será precedida por sudo.

Paso 1 – Instalación de Nginx

Una vez que el VPS es seguro, podemos empezar a instalar los paquetes. Actualizar los archivos de índice de paquetes: apt-get update

sudo apt-get update

  • sudo

A continuación, instalar Nginx:

sudo apt-get install curl git-core nginx -y

  • sudo apt-get install git-core rizo nginx -y

Paso 2 – instalar bases de datos

Instalar la base de datos que se va a utilizar en su aplicación Rails. Puesto que hay una gran cantidad de bases de datos para elegir, no vamos a cubrir en esta guía. Se puede ver instrucciones de los más importantes aquí:

  • MySQL
  • PostgreSQL
  • MongoDB

También asegúrese de salida:

  • cómo utilizar MySQL con su rubí en los carriles de aplicaciones en Ubuntu 14.04
  • cómo utilizar PostgreSQL con Ruby on Rails Su aplicación en Ubuntu 14.04

Paso 3 – Instalación de RVM y Ruby

no será la instalación de Ruby directamente. En su lugar, vamos a utilizar un administrador de versiones de Ruby. Hay un montón de ellos para elegir (rbenv, chruby, etc.), pero nos vamos a usar RVM para este tutorial. RVM le permite instalar y gestionar fácilmente múltiples rubíes en el mismo sistema y utilice la función correcta de acuerdo a su aplicación. Esto hace la vida mucho más fácil cuando se tiene que actualizar su aplicación Rails utilizar un rubí más reciente.

Antes de instalar RVM, tiene que importar la llave GPG RVM:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

  • gpg –keyserver hkp: //keys.gnupg.net –recv teclas 409B6B1796C275462A1703113804BB82D39DC0E3

Luego instalar RVM para gestionar nuestros rubíes:

curl -sSL https://get.rvm.io | bash -s stable

  • rizo -sSL https://get.rvm.io | fiesta -s estable

Este comando utiliza curl para descargar el script de instalación de RVM https://get.rvm.io. La opción -sSL se compone de tres banderas:

  • -s dice curl para descargar el archivo en ‘modo silencioso’
  • -S dice rizo para mostrar un mensaje de error si no
  • -L dice rizo Para seguir todas HTTP redirecciones al recuperar el script de instalación

Una vez descargado, el guión es hilo a bash. La opción -s pasa estable como un argumento a la secuencia de comandos de instalación RVM para descargar e instalar la versión estable de RVM.

Nota: Si el segundo comando falla con el mensaje “verificación de firma GPG falló”, que significa que la clave GPG ha cambiado, simplemente copia el comando desde la salida de error y ejecutarlo para descargar las firmas. A continuación, ejecute el comando curl para la instalación RVM.

necesitamos cargar el guión RVM (función) para que podamos empezar a utilizarlo. entonces tenemos que correr con los requisitos del sistema para instalar automáticamente las dependencias y archivos necesarios para RVM y Ruby para que funcione correctamente: fuente ~ / .rvm / scripts / RVM requisitos RVM

source ~/.rvm/scripts/rvm
rvm requirements

Ahora podemos instalar el Rubí de nuestra eleccion. Vamos a instalar la última de Ruby 2.2.1 (en el momento de la escritura) como nuestro defecto Ruby:

rvm install 2.2.1
rvm use 2.2.1 --default

  • RVM instalar 2.2.1
  • RVM uso 2.2.1 –default

Paso 4 – Instalación de Rieles y Bündler

Una vez Rubí está configurado, podemos empezar a instalar Rubygems. Vamos a empezar con la instalación de la gema Rails que le permitirá a su aplicación Rails para correr, y luego vamos a instalar bundler que puede leer Gemfile de su aplicación e instalar automáticamente todas las gemas requeridas.

Para instalar rieles y Bündler:

gem install rails -V --no-ri --no-rdoc
gem install bundler -V --no-ri --no-rdoc

  • gem install rieles -V –no-ri –no-rdoc
  • gem install bundler -V –no-ri –no-rdoc banderas

tres eran utilizado:

  • -V (detallado de salida): Imprime información detallada acerca de la instalación de la gema
  • –no-ri – (Salta Ri Documentación): no se instala Ri Docs, ahorrando espacio y haciendo la instalación rápida
  • –no -rdoc – (Omite RDocs): no se instala RDocs, ahorrando espacio y acelerar la instalación

Nota: también puede instalar una versión específica de rieles de acuerdo a sus necesidades mediante el uso de la bandera -v:

gem install rails -v '4.2.0' -V --no-ri --no-rdoc

    joya

  • instalar rieles -v ‘4.2.0’ -V –no-ri –no-rdoc

Paso 5 – Configuración de SSH Keys

Dado que queremos configurar despliegues lisos, estaremos utilizando claves SSH para la autorización. manos primer batido con GitHub, Bitbucket, o cualquier otra Git remoto en el que el código base para su aplicación Rails está instalado:

ssh -T git@github.com
ssh -T git@bitbucket.org

  • ssh -T git@github.com
  • ssh -T git@bitbucket.org

Don’ se preocupe si usted consigue un permiso denegado mensaje (publickey). Ahora, generar una clave SSH (un público / privado par de claves) para su servidor:

ssh-keygen -t rsa

  • ssh-keygen -t rsa

Añadir la clave pública de nueva creación (~ / .ssh / id_rsa.pub) a su repositorio de teclas de despliegue: Instrucciones

  • para obtener instrucciones Github
  • para Bitbucket

Si todos los pasos se completaron correctamente, ahora debería ser capaz de clonar su repositorio git (sobre el protocolo SSH, no HTTP) sin introducir su contraseña:

git clone git@example.com:username/appname.git

  • git clone git@example.com: nombre de usuario / appname.git

Si necesita una aplicación de muestra para la prueba, se puede bifurcar la siguiente aplicación de prueba creado específicamente para este tutorial: muestra rieles App en GitHub

el GIT comando de clonación creará un directorio con el mismo nombre que su aplicación. Por ejemplo, se creará un directorio llamado testapp_rails.

Estamos clonando sólo para comprobar si nuestras teclas de despliegue están trabajando, que no es necesario que el clon o tirar nuestro repositorio cada vez que empujamos nuevos cambios. Vamos a dejar Capistrano manejar todo lo que para nosotros. Ahora puede eliminar este directorio clonado si quieres.

Abrir un terminal en el equipo local. Si usted no tiene una clave SSH para el equipo local, cree una para él también. En su sesión de terminal local:

ssh-keygen -t rsa

  • ssh-keygen -t rsa

Añadir su clave SSH local a su archivo de Claves autorizado de la gotita (recuerde que debe reemplazar el número de puerto con el número de puerto personalizado):

cat ~/.ssh/id_rsa.pub | ssh -p your_port_num deploy@your_server_ip 'cat >> ~/.ssh/authorized_keys'

  • cat ~ / .ssh / id_rsa.pub | ssh -p your_port_num implementar @ your_server_ip ‘gato >> ~ / .ssh / authorized_keys’

Paso 6 – Adición de implementación Configuraciones en la aplicación Rails

En el equipo local, crear archivos de configuración de Nginx y Capistrano en su aplicación Rails. Comience por agregar estas líneas a la Gemfile en la App Rieles:


group :development do
gem 'capistrano', require: false
gem 'capistrano-rvm', require: false
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano3-puma', require: false
end

gem 'puma'

Uso bundler para instalar las gemas que acaba de especificar en su Gemfile. Introduzca el siguiente comando para empaquetar su aplicación Rails:

bundle

  • paquete

Después de la agrupación, ejecute el siguiente comando para configurar Capistrano: cap

cap install

  • instalar

Esto creará:

  • Capfile en el directorio raíz de su archivo deploy.rb aplicación Rails
  • en el directorio de despliegue
  • directorio de configuración en el directorio config

Reemplazar el contenido de su Capfile con los siguientes: cargas

# Load DSL and Setup Up Stages
require 'capistrano/setup'
require 'capistrano/deploy'

require 'capistrano/rails'
require 'capistrano/bundler'
require 'capistrano/rvm'
require 'capistrano/puma'

# Loads custom tasks from `lib/capistranoasks' if you have any defined.
Dir.glob('lib/capistranoasks/*.rake').each { |r| import r }

Este Capfile algunas tareas predefinidas en su Capistrano archivos de configuración para hacer que sus despliegues sin problemas, como por ejemplo de forma automática:

  • Selección de la correcta Rubí
  • Pre-compilación de Activos
  • Replicación del repositorio Git a la ubicación correcta
  • Instalación de nuevas dependencias cuando su Gemfile ha cambiado

reemplazar el contenido de config / deploy.rb con lo siguiente, la actualización de los campos marcados en rojo con su aplicación y los parámetros de las gotitas respiratorias:


# Change these
server 'your_server_ip', port: your_port_num, roles: [:web, :app, :db], primary: true

set :repo_url, 'git@example.com:username/appname.git'
set :application, 'appname'
set :user, 'deploy'
set :puma_threads, [4, 16]
set :puma_workers, 0

# Don't change these unless you know what you're doing
set :pty, true
set :use_sudo, false
set :stage, :production
set :deploy_via, :remote_cache
set :deploy_to, "/home/#{fetch(:user)}/apps/#{fetch(:application)}"
set :puma_bind, "unix://#{shared_path}mp/sockets/#{fetch(:application)}-puma.sock"
set :puma_state, "#{shared_path}mp/pids/puma.state"
set :puma_pid, "#{shared_path}mp/pids/puma.pid"
set :puma_access_log, "#{release_path}/log/puma.error.log"
set :puma_error_log, "#{release_path}/log/puma.access.log"
set :ssh_options, { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa.pub) }
set :puma_preload_app, true
set :puma_worker_timeout, nil
set :puma_init_active_record, true # Change to false when not using ActiveRecord

## Defaults:
# set :scm, :git
# set :branch, :master
# set :format, :pretty
# set :log_level, :debug
# set :keep_releases, 5

## Linked Files & Directories (Default None):
# set :linked_files, %w{config/database.yml}
# set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

namespace :puma do
desc 'Create Directories for Puma Pids and Socket'
task :make_dirs do
on roles(:app) do
execute "mkdir #{shared_path}mp/sockets -p"
execute "mkdir #{shared_path}mp/pids -p"
end
end

before :start, :make_dirs
end

namespace :deploy do
desc "Make sure local git is in sync with remote."
task :check_revision do
on roles(:app) do
unless `git rev-parse HEAD` == `git rev-parse origin/master`
puts "WARNING: HEAD is not the same as origin/master"
puts "Run `git push` to sync changes."
exit
end
end
end

desc 'Initial Deploy'
task :initial do
on roles(:app) do
before 'deploy:restart', 'puma:start'
invoke 'deploy'
end
end

desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
invoke 'puma:restart'
end
end

before :starting, :check_revision
after :finishing, :compile_assets
after :finishing, :cleanup
after :finishing, :restart
end

# ps aux | grep puma # Get puma pid
# kill -s SIGUSR2 pid # Restart puma
# kill -s SIGTERM pid # Stop puma

Este archivo contiene deploy.rb algunas configuraciones normales que el trabajo fuera de la caja para ayudarle a gestionar sus comunicados de aplicaciones y realizar automáticamente algunas tareas cuando se hace un despliegue:

  • Usos de producción como el entorno por defecto para su aplicación Rails
  • gestiona automáticamente múltiples versiones de su aplicación
  • Usos optimizados Opciones SSH cheques
  • si sus mandos a distancia git están al día
  • administra los registros de tu aplicación
  • precargas la aplicación en la memoria cuando la gestión de los trabajadores Puma
  • inicia (o reinicia) el servidor Puma después de terminar una implementación
  • abre un socket al servidor Puma en un lugar específico en su comunicado

puede cambiar todas las opciones en función de sus necesidades. Ahora, Nginx necesita ser configurado. Crear config / nginx.conf en el directorio del proyecto Rails, y añade la siguiente a la misma (de nuevo, sustituyendo con sus parámetros):


upstream puma {
server unix:///home/deploy/apps/appname/sharedmp/sockets/appname-puma.sock;
}

server {
listen 80 default_server deferred;
# server_name example.com;

root /home/deploy/apps/appname/current/public;
access_log /home/deploy/apps/appname/current/log
ginx.access.log;
error_log /home/deploy/apps/appname/current/log
ginx.error.log info;

location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}

try_files $uri/index.html $uri @puma;
location @puma {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;

proxy_pass http://puma;
}

error_page 500 502 503 504 /500.html;
client_max_body_size 10M;
keepalive_timeout 10;
}

Al igual que el archivo anterior, este nginx.conf contiene las preferencias que el trabajo fuera de la caja con las configuraciones en el archivo de deploy.rb. Esta escucha el tráfico en el puerto 80 y pasa sobre la solicitud a la toma de Puma, escribe registros nginx a la liberación ‘corriente’ de su aplicación, comprime todos los activos y los almacena en caché en el navegador con el máximo de caducidad, sirve las páginas HTML en el público carpeta que los archivos estáticos, y se pone por defecto de tamaño máximo y la petición del cliente cuerpo valores de tiempo de espera.

Paso 7 – Implementación de su aplicación Rails

Si está utilizando su aplicación propios rieles, confirmar los cambios que acaba de hacer, y empujarlos a distancia desde su máquina local:

git add -A
git commit -m "Set up Puma, Nginx & Capistrano"
git push origin master

  • git add -A
  • git commit – m «Puesta en marcha Puma, Nginx y Capistrano»
  • git push origin master

Nota: Si esta es la primera vez que utiliza GitHub de este sistema, puede que tenga que ejecutar los siguientes comandos con su nombre de usuario GitHub y dirección de correo electrónico :

git config --global user.name 'Your Name'
git config --global user.email you@example.com

  • git config –global user.name ‘su nombre’
  • git config –global user.email you@example.com

Una vez más, desde su máquina local, haga su primer despliegue:

cap production deploy:initial

  • uso de una producción de la PAC: inicial

Esto hará que su aplicación Rails a la gota, instalar todas las gemas necesarias para su aplicación, e iniciar el servidor web Puma. Esto puede durar entre 5-15 minutos, dependiendo del número de gemas sus usos de aplicaciones. Verá los mensajes de depuración como se produce este proceso.

Si todo va bien, ahora estamos listos para conectar el servidor web de Puma en el proxy inverso Nginx.

En la gota, el enlace simbólico nginx.conf al directorio sites-enabled:

sudo rm /etc
ginx/sites-enabled/default
sudo ln -nfs "/home/deploy/apps/appname/current/config
ginx.conf" "/etc
ginx/sites-enabled/appname"

  • sudo rm / etc / nginx / sites-enabled / default
  • sudo ln -nfs «/ home / deploy / aplicaciones / nombreaplic / corriente / config / nginx.conf» «/ etc / nginx / sites-enabled / nombreaplic»

reiniciar el servicio Nginx: servicio

sudo service nginx restart

  • sudo reiniciar nginx

ahora debería ser capaz de señalar a su navegador web su servidor IP y ver su aplicación Rails en acción!

normal despliegues

Siempre que haga cambios en su aplicación y desea implementar una nueva versión en el servidor, guardar los cambios, pulsar para su git remoto como de costumbre, y ejecutar el comando deploy:

git add -A
git commit -m "Deploy Message"
git push origin master
cap production deploy

  • git add -A
  • git commit -m «Implementar mensaje» maestro de producción origen
  • git push casquillo
  • implementar

Nota: Si se realizan cambios en el archivo de configuración / nginx.conf, tendrá que volver a cargar o reiniciar su servicio de Nginx en el servidor después de desplegar su aplicación: el servicio

sudo service nginx restart

  • sudo nginx reiniciar

Conclusión

bien, así que a estas alturas ya estaría funcionando una aplicación Rails en su Droplet con Puma como su servidor web, así como Nginx y Capistrano configurados con ajustes básicos. Ahora debería echar un vistazo a otros documentos que pueden ayudar a optimizar las configuraciones para obtener el máximo provecho de su aplicación Rails:

  • Puma Configuraciones
  • Puma DSL en Capistrano
  • Activos local Pre-compilación en Capistrano
  • automáticamente reinicio Puma trabajadores en base a la RAM
  • Optimización Nginx para el alto tráfico Cargas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *