Rails App Server AWS OpsWorks Stacks Layer - AWS OpsWorks

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Rails App Server AWS OpsWorks Stacks Layer

importante

El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los existentes. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en AWS Re:post o a través de Premium AWS Support.

nota

Esta capa solo está disponible para pilas basadas en Linux.

La capa Rails App Server es una capa de AWS OpsWorks Stacks que proporciona un modelo para las instancias que funcionan como servidores de aplicaciones de Rails.

Instalación: AWS OpsWorks Stacks usa el instalador de paquetes de la instancia para instalar los paquetes del servidor en sus ubicaciones predeterminadas. Para obtener más información acerca de la instalación de Apache/Passenger, consulte Phusion Passenger. Para obtener más información sobre el registro, consulte Log Files. Para obtener más información acerca de la instalación de Nginx/Unicorn, consulte Unicorn.

La página Add Layer (Añadir capa) contiene las siguientes opciones de configuración, todas ellas opcionales.

Ruby Version

Versión de Ruby que se va a utilizar en las aplicaciones. El valor predeterminado es 2.3.

También puede especificar la versión de Ruby que prefiera anulando el atributo [:opsworks][:ruby_version].

nota

AWS OpsWorks Stacks instala un paquete Ruby independiente para que lo usen las recetas y el agente de instancias. Para obtener más información, consulte Versiones de Ruby.

Rails Stack

La pila de Rails predeterminada es Apache2 con Phusion Passenger. También puede utilizar Nginx con Unicorn.

nota

Si utiliza Nginx y Unicorn, debe añadir el gem unicorn al archivo Gemfile de su aplicación, tal y como se muestra en el siguiente ejemplo:

source 'https://rubygems.org' gem 'rails', '3.2.15' ... # Use unicorn as the app server gem 'unicorn' ...
Passenger Version

Si ha especificado Apache2/Passenger, debe especificar la versión de Passenger. El valor predeterminado es 5.0.28.

Rubygems Version (Versión de Rubygems)

La versión predeterminada de Rubygems es 2.5.1.

Install and Manage Bundler (Instalar y administrar Blundler)

Le permite elegir si desea instalar y administrar Bundler. El valor predeterminado es Yes (Sí).

Bundler version (Versión de Bundler)

La versión predeterminada de Bundler es 1.12.5.

Grupos de seguridad personalizados

Esta configuración aparece si eliges no asociar automáticamente un grupo de seguridad integrado de AWS OpsWorks Stacks a tus capas. Tiene que especificar qué grupo de seguridad debe asociarse a la capa. Para obtener más información, consulte Crear una pila nueva.

Elastic Load Balancer

Puede adjuntar un equilibrador de carga Elastic Load Balancing a las instancias de la capa.

Puede modificar algunas opciones de configuración mediante un archivo JSON personalizado o un archivo de atributos personalizado. Para obtener más información, consulte Anulación de atributos. Para obtener una lista de los atributos de Apache, Nginx, Phusion Passenger y Unicorn que pueden anularse, consulte Atributos integrados de los libros de recetas.

importante

Si su aplicación Ruby on Rails utiliza SSL, le recomendamos que desactive SSLv3 si es posible, para abordar las vulnerabilidades descritas en CVE-2014-3566. Para obtener más información, consulte Desactivación de SSLv3 para servidores Rails.

Desactivación de SSLv3 para servidores Rails

Si desea desactivar SSLv3 para servidores Rails, actualice el parámetro Ruby Version (Versión de Ruby) de la capa a 2.1 o superior, lo que instalará Ruby 2.1.4 u otra versión superior como la versión que las aplicaciones utilizan.

  • Actualice el parámetro Ruby Version (Versión de Ruby) de la capa a la versión 2.1 o superior.

  • Actualice el archivo de configuración de la pila Rails, tal y como se indica a continuación.

Apache con Phusion Passenger

Actualice el parámetro SSLProtocol en el archivo ssl.conf del servidor Apache, tal y como se describe en Desactivación de SSLv3 para servidores Apache.

Nginx con Unicorn

Añada una directiva ssl_protocols explícita al archivo nginx.conf del servidor Nginx. Para desactivar SSLv3, sobrescriba el archivo de plantillas integrado del libro de recetas nginx nginx.conf.erb, que las recetas Setup de la capa del servidor de aplicaciones de Rails utilizan para crear nginx.conf, y añada la directiva siguiente:

ssl_protocols TLSv1.2;

Para obtener más información acerca de cómo configurar nginx.conf, consulte Configuring HTTPS servers. Para obtener más información sobre cómo anular una plantilla integrada, consulte Uso de plantillas personalizadas.

Conexión a una base de datos

Cuando implementas una aplicación, AWS OpsWorks Stacks crea un nuevo database.yml archivo con la información de los atributos de la aplicación. deploy Si adjuntas una instancia de MySQL o Amazon RDS a la aplicación, AWS OpsWorks Stacks añade la información de conexión a los deploy atributos para que contengan database.yml automáticamente los datos de conexión correctos.

Si una aplicación no tiene una base de datos adjunta, de forma predeterminada, AWS OpsWorks Stacks no añade ninguna información de conexión a los deploy atributos ni la crea. database.yml Si desea utilizar otra base de datos, puede utilizar un JSON personalizado para añadir atributos de base de datos a los atributos deploy con la información de conexión. Todos los atributos están debajo["deploy"]["appshortname"]["database"], donde appshortname es el nombre corto de la aplicación, que AWS OpsWorks Stacks genera a partir del nombre de la aplicación. Los valores que especifique en el JSON personalizado anulan los parámetros predeterminados. Para obtener más información, consulte Agregar aplicaciones.

AWS OpsWorks Stacks incorpora los siguientes [:...][:database]valores de atributo. database.yml Los atributos necesarios dependen de la base de datos concreta, pero debes tener un host atributo o AWS OpsWorks Stacks no lo creará. database.yml

  • [:adapter] (String): el adaptador de la base de datos, por ejemplo mysql.

  • [:database] (cadena): el nombre de la base de datos.

  • [:encoding] (cadena): la codificación, que suele estar establecida en utf8.

  • [:host] (cadena): la dirección URL del host, por ejemplo railsexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com.

  • [:reconnect] (booleano): indica si la aplicación debe volver a conectarse si la conexión ya no existe.

  • [:password] (cadena): la contraseña de la base de datos.

  • [:port] (Número). : el número de puerto de la base de datos. Use este atributo para anular el número de puerto predeterminado que establece el adaptador.

  • [:username] (cadena): el nombre de usuario de la base de datos.

En el ejemplo siguiente se muestra un JSON personalizado para una aplicación cuyo nombre abreviado es myapp.

{ "deploy" : { "myapp" : { "database" : { "adapter" : "adapter", "database" : "databasename", "host" : "host", "password" : "password", "port" : portnumber "reconnect" : true/false, "username" : "username" } } } }

Para obtener más información sobre cómo especificar un JSON personalizado, consulte Uso de un JSON personalizado. Para ver la plantilla utilizada para crear database.yml (database.yml.erb), vaya al repositorio del libro de recetas integrado.

Implementación de aplicaciones Ruby on Rails

Puede implementar aplicaciones Ruby on Rails desde cualquiera de los repositorios admitidos. A continuación se muestra cómo implementar una aplicación Ruby on Rails de ejemplo en un servidor que ejecuta una pila Apache/Passenger Rails. El código de ejemplo se almacena en un GitHub repositorio público, pero el procedimiento básico es el mismo para los demás repositorios compatibles. Para obtener más información acerca de cómo crear e implementar aplicaciones, consulte Aplicaciones. Para ver el código del ejemplo, que incluye comentarios extensos, visita https://github.com/awslabs/ opsworks-demo-rails-photo -share-app.

Para implementar una aplicación de Ruby on Rails desde un repositorio GitHub
  1. Cree una pila con una capa del servidor de aplicaciones de Rails con Apache/Passenger como la pila de Rails, añada una instancia de funcionamiento ininterrumpido a la capa e iníciela.

  2. Una vez que la instancia esté online, añada una aplicación a la pila y especifique la configuración siguiente:

    • Name: cualquier nombre que prefiera; el ejemplo utiliza PhotoPoll.

      AWS OpsWorks Stacks usa este nombre para mostrarlo y genera un nombre abreviado para uso interno y para identificar la aplicación en los atributos de configuración y despliegue de la pila. Por ejemplo, el nombre PhotoPoll corto es photopoll.

    • App type: Ruby on Rails.

    • Rails environment: la aplicación determina los entornos disponibles.

      La aplicación de ejemplo tiene tres: development, test y production. Para este ejemplo, establezca el entorno en development. Consulte el código de ejemplo para ver las descripciones de cada entorno.

    • Tipo de repositorio: cualquiera de los tipos de repositorio admitidos. Especifique Git para este ejemplo.

    • Repository URL: el repositorio desde el que debe implementarse el código.

      Para este ejemplo, establezca la URL en git://github.com/awslabs/opsworks-demo-rails-photo-share-app.

    Utilice la configuración predeterminada para el resto de los valores y haga clic en Add App (Añadir aplicación) para crear la aplicación.

  3. Implemente la aplicación en la instancia del servidor de aplicaciones de Rails.

  4. Cuando termine la implementación, vaya a la página Instancias y haga clic en la dirección IP pública de la instancia del servidor de aplicaciones de Rails. Debería ver lo siguiente: