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

Cómo empezar con Python y MongoDB

marzo 4, 2020

 

Introducción

Cuando esté listo para desplegar su aplicación Ruby on Rails, hay muchas configuraciones válidas para considerar. Este tutorial le ayudará a implementar el entorno de producción de su aplicación Ruby on Rails, con PostgreSQL como base de datos, utilizando Puma y Nginx en Ubuntu 14.04.

Puma es un servidor de aplicaciones, como de pasajeros o de unicornio, que permite a su aplicación Rails el procesamiento de solicitudes al mismo tiempo. Como Puma no está diseñado para ser visitada por los usuarios directamente, vamos a utilizar Nginx como proxy inverso que va a amortiguar las solicitudes y respuestas entre los usuarios y su aplicación Rails.

Requisitos previos

Este tutorial se supone que tiene un servidor de Ubuntu 14.04 con el siguiente software instalado, en el usuario que va a implementar la aplicación:

  • Ruby on Rails, utilizando rbenv
  • PostgreSQL con rieles

Si lo hace no tienen que establecen ya, seguir los tutoriales que están vinculados anteriormente. Vamos a suponer que el usuario se llama implementar .

Además, este tutorial no cubre cómo configurar sus entornos de desarrollo o de prueba. Si necesita ayuda con eso, siga el ejemplo de la PostgreSQL con rieles tutorial.

Crear carriles Aplicación

Idealmente, usted ya tiene una aplicación Rails que desea implementar. Si este es el caso, puede omitir esta sección, y hacer las sustituciones apropiadas mientras sigue. Si no es así, el primer paso es crear una aplicación de nuevos carriles que utiliza PostgreSQL como base de datos.

Este comando creará una aplicación de nuevos carriles, llamada “nombreaplic” que utilizará como base de datos PostgreSQL. Siéntase libre de sustituir el “nombreaplic” resaltada con otra cosa:

rails new appname -d postgresql

Luego cambie al directorio de la aplicación:

cd appname

Tomemos un momento para crear el usuario PostgreSQL que será utilizado por el entorno de producción de su aplicación Rails.

Crear base de datos de producción usuario

Para simplificar las cosas, vamos a nombrar el usuario de base de datos de producción el mismo que su nombre de la aplicación. Por ejemplo, si su aplicación se llama “nombreaplic”, se debe crear un usuario PostgreSQL así:

sudo -u postgres createuser -s appname

queremos establecer la contraseña del usuario de base de datos, por lo que entrar en la consola de PostgreSQL como esto:

sudo -u postgres psql

A continuación, establezca la contraseña para el usuario de la base, “APPNAME” en el ejemplo, así:

password appname

Introduzca su contraseña deseada y confirmar.

salir de la consola de PostgreSQL con este comando:

q

Ahora estamos listos para configurar la aplicación con la información de conexión de base de datos adecuada.

Configurar base de datos de conexión

asegurarse de que está en el directorio raíz de la aplicación (cd ~ / nombreaplic). archivo de configuración de la base de datos

abierto de su aplicación en el editor de textos. Vamos a utilizar vi:

vi config/database.yml

Actualización de la sección de producción por lo que se ve algo como esto:

production:
<<: *default host: localhost adapter: postgresql encoding: utf8 database: appname_production pool: 5 username: <%= ENV['APPNAME_DATABASE_USER'] %>
password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>

Tenga en cuenta que el nombre de usuario y la contraseña de la base de datos se configuran para ser leído por las variables de entorno, APPNAME_DATABASE_USER y APPNAME_DATABASE_PASSWORD. Se considera la mejor práctica para mantener las contraseñas de producción y secretos fuera de su base de código de aplicación, ya que fácilmente pueden estar expuestos si está utilizando un sistema de control de versiones distribuido, como Git. Vamos a ir sobre cómo configurar la autenticación de base de datos con variables de entorno próximo.

Guardar y salir.

Instalar rbenv-vars Plugin

Antes de implementar una producción Rieles de aplicación, debe establecer la clave secreta de producción y la contraseña de la base de datos usando variables de entorno. Una manera fácil de manejar variables de entorno, que podemos utilizar para cargar las contraseñas y los secretos en nuestra aplicación en tiempo de ejecución, es utilizar el plug-in rbenv-vars .

Para instalar el rbenv-vars plugin, basta con cambiar al directorio de plugins .rbenv / y el clon desde GitHub. Por ejemplo, si rbenv se instala en su directorio, ejecute estos comandos: Variables

cd ~/.rbenv/plugins
git clone https://github.com/sstephenson/rbenv-vars.git

Impuestos por medio ambiente

Ahora que vars-rbenv está instalado el plugin el, vamos a configurar las variables de entorno necesarias.

En primer lugar, generar la clave secreta, que será utilizado para verificar la integridad de las galletas firmados:

cd ~/appname
rake secret

Copiar la clave secreta que se genera, a continuación, abra el archivo .rbenv-vars con su editor favorito. Utilizaremos VI:

vi .rbenv-vars

cualquier variable de entorno que se establezca aquí puede ser leído por su aplicación Rails.

En primer lugar, establece la variable SECRET_KEY_BASE como esto (reemplazar el texto resaltado con el secreto que acaba de generar y copiado):

SECRET_KEY_BASE=your_generated_secret

A continuación, establezca la variable de APPNAME_DATABASE_USER como esto (sustituir el “APPNAME” destacado con su nombre de la aplicación, y “nombreaplic” con su producción nombre de usuario de base de datos):

APPNAME_DATABASE_USER=appname

Por último, establecer la variable APPNAME_DATABASE_PASSWORD como esto (reemplazar el destacado “APPNAME” con su nombre de la aplicación, y “prod_db_pass” con su producción contraseña de usuario de base de datos):

APPNAME_DATABASE_PASSWORD=prod_db_pass

Guardar y Salir.

Usted puede ver qué variables de entorno están establecidas para su aplicación con el rbenv-vars plug-in mediante la ejecución de este comando:

rbenv vars

Si cambia su contraseña secreta o base de datos, actualizar su .rbenv-vars archivo. Tenga cuidado de mantener este archivo privado, y no lo incluya ningún repositorios de código públicas.

Crear base de datos de producción

Ahora que su aplicación está configurada para hablar con su base de datos PostgreSQL, vamos a crear la base de datos de producción:

RAILS_ENV=production rake db:create

Generar un controlador

Si usted está siguiendo con el ejemplo, vamos a generar un controlador de andamio por lo nuestra aplicación tendrá algo que ver:

rails generate scaffold Task title:string note:text

Ahora ejecute este comando para actualizar la base de datos de producción:

RAILS_ENV=production rake db:migrate

también debe precompilación los activos: Ensayo de

RAILS_ENV=production rake assets:precompile

para determinar si funciona la aplicación, puede ejecutar el entorno de producción, y se unen a la dirección IP pública del servidor (sustituir la dirección IP pública del servidor):

RAILS_ENV=production rails server --binding=server_public_IP

Ahora visite la dirección URL en un navegador web:

http://server_public_IP:3000asks

Si funciona correctamente, debería ver esta página:

volver

Ir a su servidor de rieles, y pulse Ctrl-C para detener la aplicación.

de instalación Puma

Ahora estamos listos para instalar Puma.

Una manera fácil de hacer esto es para añadirlo a Gemfile de su aplicación. Abra la Gemfile en su editor favorito (asegúrese de que está en el directorio raíz de la aplicación):

vi Gemfile

Al final del archivo, agregue la gema Puma con esta línea:

gem 'puma'

Guardar y salir.

Para instalar Puma, y ​​cualquier dependencia pendientes, ejecute Bündler:

bundle

Puma ya está instalado, pero hay que configurarlo.

Configurar Puma

Antes de configurar Puma, usted debe buscar el número de núcleos de CPU tiene su servidor. Puede hacerlo fácilmente con este comando:

grep -c processor /proc/cpuinfo

Ahora, vamos a añadir nuestra Puma configuración a config / puma.rb. Abra el archivo en un editor de texto:

vi config/puma.rb

Copiar y pegar esta configuración en el archivo:

# Change to match your CPU core count
workers 2

# Min and Max threads per worker
threads 1, 6

app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/shared"

# Default to production
rails_env = ENV['RAILS_ENV'] || "production"
environment rails_env

# Set up socket location
bind "unix://#{shared_dir}/sockets/puma.sock"

# Logging
stdout_redirect "#{shared_dir}/log/puma.stdout.log", "#{shared_dir}/log/puma.stderr.log", true

# Set master PID and state locations
pidfile "#{shared_dir}/pids/puma.pid"
state_path "#{shared_dir}/pids/puma.state"
activate_control_app

on_worker_boot do
require "active_record"
ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished
ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env])
end

Cambiar el número de trabajadores con el número de núcleos de CPU de su servidor.

Guardar y salir. Esto configura Puma con la ubicación de su aplicación, y la ubicación de su órbita, los registros y los PID. No dude en para modificar el archivo, o añadir cualquier otra opción que usted requiere.

Ahora crea los directorios que se hace referencia en el fichero de configuración:

mkdir -p shared/pids shared/sockets shared/log

Crear de Puma Upstart Guión

Let crear un guión de inicio Upstart para que podamos empezar con facilidad y dejar de Puma, y ​​asegurarse de que se inicie en el arranque.

Descargar la herramienta de la selva Upstart desde el repositorio GitHub Puma a su directorio:

cd ~
wget https://raw.githubusercontent.com/puma/puma/masterools/jungle/upstart/puma-manager.conf
wget https://raw.githubusercontent.com/puma/puma/masterools/jungle/upstart/puma.conf

Ahora abra el archivo puma.conf proporcionado, por lo que podemos configurar el usuario despliegue Puma:

vi puma.conf

Busque las dos líneas que especifican y setuid setgid, y reemplazar “aplicaciones” con el nombre de usuario de su despliegue y grupo. Por ejemplo, si el usuario despliegue se llama “despliegue”, las líneas deben tener este aspecto:

setuid deploy
setgid deploy

Guardar y salir.

Ahora copie los scripts en el directorio de servicios Upstart:

sudo cp puma.conf puma-manager.conf /etc/init

Las referencias de script-puma manager.conf /etc/puma.conf para las aplicaciones que se debe administrar. Vamos a crear y editar el archivo de inventario ahora:

sudo vi /etc/puma.conf

Cada línea de este archivo debe ser el camino a una aplicación que desea Puma-gerente de manejar. Agregar la ruta de la aplicación ahora. Por ejemplo:

/home/deploy/appname

Guardar y salir.

Ahora la aplicación está configurado para iniciarse en el arranque, a través Upstart. Esto significa que su aplicación se iniciará incluso después de su servidor se reinicia. Aplicaciones

Inicio Puma manualmente

Para comenzar todo de sus Puma conseguido aplicaciones ahora, ejecute este comando:

sudo start puma-manager

También se puede iniciar una sola aplicación Puma utilizando el puma Upstart guión, de esta manera:

sudo start puma app=/home/deploy/appname

Usted puede también tener uso detener y reiniciar para controlar la aplicación, así:

sudo stop puma-manager
sudo restart puma-manager

Ahora entorno de producción de su aplicación Rails se ejecuta bajo Puma, y ​​de escucha en la compartida / hembra / puma.sock zócalo. Antes de su aplicación será accesible para un usuario externo, debe configurar el proxy inverso Nginx.

Instalar y configurar Nginx

instalar Nginx usando apt-get:

sudo apt-get install nginx

Ahora abrir el bloque de servidor por defecto con un editor de texto:

sudo vi /etc
ginx/sites-available/default

Reemplazar el contenido del archivo con el siguiente bloque de código. Asegúrese de reemplazar las partes del resaltados con el nombre de usuario correspondiente y el nombre de la aplicación (dos lugares):

upstream app {
# Path to Puma SOCK file, as defined previously
server unix:/home/deploy/appname/shared/sockets/puma.sock fail_timeout=0;
}

server {
listen 80;
server_name localhost;

root /home/deploy/appname/public;

try_files $uri/index.html $uri @app;

location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}

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

Guardar y salir. Esto configura Nginx como proxy inverso, por lo que las peticiones HTTP reenvíe al servidor de aplicaciones Puma a través de un socket de Unix. Siéntase libre de hacer cualquier cambio como mejor le parezca.

Reiniciar Nginx para que los cambios tengan efecto:

sudo service nginx restart

Ahora el entorno de producción de los raíles aplicación es accesible a través de la dirección IP pública del servidor o FQDN. Para acceder al controlador de tareas que hemos creado antes, visitar el servidor de aplicaciones en un navegador web:

http://server_public_IPasks

Debería ver la misma página que viste la primera vez que probar la aplicación, pero ahora está siendo servido a través de Nginx y Puma.

Conclusión Felicidades

! Ha implementado el entorno de producción de la Ruby on Rails aplicación usando Nginx y Puma.

Si usted está buscando para mejorar su producción Rieles de implementación de aplicaciones, que debe salir de nuestra serie de tutoriales sobre cómo utilizar Capistrano para automatizar despliegues. La serie está basada en CentOS, pero aún debe ser útil para la automatización de sus implementaciones.