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

Cómo instalar Webmin con SSL en Ubuntu 14.04

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 unicornio y Nginx en Ubuntu 14.04.

unicornio es un servidor de aplicaciones, como pasajeros o Puma, que permite a su aplicación Rails el procesamiento de solicitudes al mismo tiempo. Como Unicorn 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 para sustituir el destacado “nombreaplic” con otra cosa:

rails new appname -d postgresql

  • rieles nueva nombreaplic -d PostgreSQL

Luego cambie al directorio de la aplicación:

cd appname

  • cd nombreaplic

Tomemos un momento para crear el PostgreSQL de usuario 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

  • sudo -u postgres createuser -s nombreaplic

Queremos establecer la contraseña del usuario de base de datos, por lo que entrar en la consola de PostgreSQL de esta manera:

sudo -u postgres psql

  • sudo -u postgres psql

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

password appname

  • contraseña nombreaplic

Introduzca su contraseña y confirmar deseada eso.

salir de la consola de PostgreSQL con este comando:

q

  • 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

  • vi config / database.yml

En la sección predeterminada, busque la línea que dice “la piscina: 5” y añadir la siguiente línea debajo de ella (si no existe ya) :

host: localhost

Si se desplaza a la parte inferior del archivo, se dará cuenta de que la sección de producción se establece lo siguiente:

username: appname
password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>

Si su nombre de usuario de producción no coincide con la base de datos de usuario que creó anteriormente, establece ahora.

Tenga en cuenta que la contraseña de la base de datos está configurado para ser leído por una variable de entorno, 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.

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:

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

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

Conjunto Variables de entorno

ahora que el rbenv-vars plugin está instalado, 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

  • cd ~ / nombreaplic
  • rastrillo secreto

Copiar la clave secreta que se genera, a continuación, abra la .rbenv- vars archivo con su editor favorito. Vamos a usar vi:

vi .rbenv-vars

  • vi .rbenv-vars

cualquier variable de entorno que se establezca aquí se puede leer 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_PASSWORD como esto (sustituir el “APPNAME” destacado con su nombre de la aplicación, y “prod_db_pass” con la contraseña de usuario de la base de producción):

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

  • rbenv vars

Si cambia de secreto o base de datos de contraseñas, actualice 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

  • RAILS_ENV = rake db producción: crear

Generar un controlador

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

rails generate scaffold Task title:string note:text

  • generan andamio título de la tarea: cadena nota: texto

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

RAILS_ENV=production rake db:migrate

  • RAILS_ENV = rastrillo producción db: migrate

precompilación activos

en este punto, la aplicación debería funcionar, pero tendrá que precompilar sus activos de manera que cualquier imágenes, CSS y los scripts se puede cargar. Para ello, ejecute este comando: activos

RAILS_ENV=production rake assets:precompile

  • RAILS_ENV = rastrillo de producción: prueba de precompilación

aplicación de prueba

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

RAILS_ENV=production rails server --binding=server_public_IP

  • RAILS_ENV = producción de raíles del servidor –binding = server_public_IP

Ahora visitar esta 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.

Instalar unicornio

Ahora estamos listos para instalar unicornio.

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

  • vi Gemfile

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

gem 'unicorn'

Guardar y salir.

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

bundle

  • paquete

unicornio ya está instalado, pero hay que configurarlo. Agregar

Configurar unicornio

de dejar que nuestro unicornio configuración para config / unicorn.rb. Abra el archivo en un editor de texto:

vi config/unicorn.rb

  • vi config / unicorn.rb

Copiar y pegar esta configuración en el archivo:

# set path to application
app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/shared"
working_directory app_dir

# Set unicorn options
worker_processes 2
preload_app true
timeout 30

# Set up socket location
listen "#{shared_dir}/sockets/unicorn.sock", :backlog => 64

# Logging
stderr_path "#{shared_dir}/log/unicorn.stderr.log"
stdout_path "#{shared_dir}/log/unicorn.stdout.log"

# Set master PID location
pid "#{shared_dir}/pids/unicorn.pid"

Guardar y salir. Esto configura unicornio 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

  • mkdir -p compartida / PID compartieron / enchufes compartieron / log

Crear del unicornio script de inicio de

Let crear un guión de inicio para que podamos empezar con facilidad y dejar de unicornio, y asegúrese de que se inicie en el arranque.

Crear una secuencia de comandos y abrirlo para la edición con este comando (reemplace la parte resaltada con su nombre de la aplicación, si lo desea):

sudo vi /etc/init.d/unicorn_appname

  • sudo vi /etc/init.d/unicorn_appname

Copia y pega el siguiente bloque de código en él, y asegúrese de sustituir USUARIO y APP_NAME (resaltada) con los valores apropiados:

#!/bin/sh

### BEGIN INIT INFO
# Provides: unicorn
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the unicorn app server
# Description: starts unicorn using start-stop-daemon
### END INIT INFO

set -e

USAGE="Usage: $0 "

# app settings
USER="deploy"
APP_NAME="appname"
APP_ROOT="/home/$USER/$APP_NAME"
ENV="production"

# environment settings
PATH="/home/$USER/.rbenv/shims:/home/$USER/.rbenv/bin:$PATH"
CMD="cd $APP_ROOT && bundle exec unicorn -c config/unicorn.rb -E $ENV -D"
PID="$APP_ROOT/shared/pids/unicorn.pid"
OLD_PID="$PID.oldbin"

# make sure the app exists
cd $APP_ROOT || exit 1

sig () {
test -s "$PID" && kill -$1 `cat $PID`
}

oldsig () {
test -s $OLD_PID && kill -$1 `cat $OLD_PID`
}

case $1 in
start)
sig 0 && echo >&2 "Already running" && exit 0
echo "Starting $APP_NAME"
su - $USER -c "$CMD"
;;
stop)
echo "Stopping $APP_NAME"
sig QUIT && exit 0
echo >&2 "Not running"
;;
force-stop)
echo "Force stopping $APP_NAME"
sig TERM && exit 0
echo >&2 "Not running"
;;
restart|reload|upgrade)
sig USR2 && echo "reloaded $APP_NAME" && exit 0
echo >&2 "Couldn't reload, starting '$CMD' instead"
$CMD
;;
rotate)
sig USR1 && echo rotated logs OK && exit 0
echo >&2 "Couldn't rotate logs" && exit 1
;;
*)
echo >&2 $USAGE
exit 1
;;
esac

Guardar y salir. Esto le permitirá utilizar el servicio unicorn_appname para iniciar y detener el unicornio y su aplicación Rails.

Actualizar los permisos del script y permitir unicornio para iniciar en el arranque:

sudo chmod 755 /etc/init.d/unicorn_appname
sudo update-rc.d unicorn_appname defaults

  • sudo chmod 755 /etc/init.d/unicorn_appname
  • sudo update-rc.d defecto unicorn_appname

Vamos a empezar ahora:

sudo service unicorn_appname start

    servicio

  • sudo unicorn_appname empezar

Ahora entorno de producción de su aplicación Rails se ejecuta con unicornio, y se está escuchando en el compartida / hembra / unicorn.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

  • 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

  • sudo vi / etc / nginx / 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 y la aplicación apropiada:

upstream app {
# Path to Unicorn SOCK file, as defined previously
server unix:/home/deploy/appname/shared/sockets/unicorn.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 a través de un unicornio socket de Unix. Siéntase libre de hacer cualquier cambio como mejor le parezca.

Reiniciar Nginx para que los cambios tengan efecto: el servicio

sudo service nginx restart

  • sudo Nginx reiniciar

Ahora el entorno de producción de su aplicación Rails 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 Unicorn.

Conclusión Felicidades

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

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.