

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Camada de pilhas do servidor de aplicativos OpsWorks Rails
<a name="workinglayers-rails"></a>

**Importante**  
O AWS OpsWorks Stacks serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com a AWS Support equipe no [AWS re:POST](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/support).

**nota**  
Esta layer está disponível apenas para stacks baseadas em Linux.

A camada Rails App Server é uma camada OpsWorks Stacks que fornece um plano para instâncias que funcionam como servidores de aplicativos Rails.

**Instalação**: o OpsWorks Stacks usa o instalador de pacotes da instância para instalar os pacotes do servidor em seus locais padrão. Para obter mais informações sobre Apache/Passenger instalação, consulte [Phusion Passenger.](https://www.phusionpassenger.com/) Para obter mais informações sobre conexão, consulte [Arquivos de log](http://httpd.apache.org/docs/2.2/logs.html). Para obter mais informações sobre Nginx/Unicorn instalação, consulte [Unicorn](http://unicorn.bogomips.org/).

A página **Add Layer** fornece as seguintes opções de configuração, todas delas opcionais.

**Versão do Ruby**  
A versão do Ruby que será usada pelos aplicativos. O valor padrão é 2.3.  
Você também pode especificar sua versão do Ruby preferida ao [substituir o atributo `[:opsworks][:ruby_version]`](workingcookbook-attributes.md).  
OpsWorks O Stacks instala um pacote Ruby separado para ser usado pelas receitas e pelo agente da instância. Para obter mais informações, consulte [Versões do Ruby](workingcookbook-ruby.md).

**Pilha do Rails**  
A pilha padrão do Rails é o [Apache2](http://httpd.apache.org/) com o [Phusion Passenger](https://www.phusionpassenger.com/). Você também pode usar o [Nginx](http://nginx.org/en/) com o [Unicorn](http://unicorn.bogomips.org/).  
Se você usar o Nginx e o Unicorn, deve adicionar o gem unicorn no Gemfile do aplicativo, como no exemplo a seguir:  

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

**Versão do Passenger**  
Se tiver especificado Apache2/Passenger, você deverá especificar a versão do Passenger. O valor padrão é 5.0.28.

**Versão do Rubygems**  
A versão padrão do [Rubygems](http://rubygems.org/) é 2.5.1

**Instalar e gerenciar o Bundler**  
Permite que você opte por instalar e gerenciar o [Bundler](http://gembundler.com/). O valor padrão é **Yes**.

**Versão do Bundler**  
A versão padrão do Bundler é 1.12.5.

**Os grupos de segurança personalizados**  
Essa configuração aparece se você optar por não associar automaticamente um grupo de segurança embutido do OpsWorks Stacks às suas camadas. Você deve especificar qual grupo de segurança associar com a camada. Para obter mais informações, consulte [Criar uma nova pilha](workingstacks-creating.md).

**Elastic Load Balancer**  
Você pode anexar um balanceador de carga do Elastic Load Balancing às instâncias de camada.

Você pode modificar algumas configurações usando um JSON personalizado ou um arquivo de atributos personalizado. Para obter mais informações, consulte [Sobrepor atributos](workingcookbook-attributes.md). Para obter uma lista dos atributos do Apache, Nginx, Passenger e Phusion Unicorn que podem ser substituídos, consulte [Atributos de livros de receitas integrados](attributes-recipes.md).

**Importante**  
[Se seu aplicativo Ruby on Rails usa SSL, recomendamos que você desative, SSLv3 se possível, para resolver as vulnerabilidades descritas em CVE-2014-3566.](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566) Para obter mais informações, consulte [Desabilitando SSLv3 para servidores Rails](#workinglayers-rails-sslv3).

**Topics**
+ [Desabilitando SSLv3 para servidores Rails](#workinglayers-rails-sslv3)
+ [Conectar-se a um banco de dados](#workinglayers-rails-db)
+ [Implantar aplicativos Ruby on Rails](#workinglayers-rails-deploy)

## Desabilitando SSLv3 para servidores Rails
<a name="workinglayers-rails-sslv3"></a>

 SSLv3 Para desativar os servidores Rails, atualize a configuração da **versão Ruby** da camada para 2.1 ou superior, que instala o Ruby 2.1.4 ou superior como a versão que os aplicativos usam.
+ Atualize a configuração **Ruby Version (Versão do Ruby)** para 2.1 ou superior.
+ Atualize o arquivo de configuração para a pilha do Rails, como a seguir.

**Apache com Phusion Passenger**  
Atualize a `SSLProtocol` configuração do arquivo do servidor Apache `ssl.conf` do, conforme descrito em [Desativação SSLv3 para servidores Apache](layers-java.md#layers-java-sslv3).

**Nginx com Unicorn**  
Adicione uma diretiva explícita `ssl_protocols` para arquivo do servidor Nginx `nginx.conf`. Para desativar SSLv3, substitua o arquivo de modelo do [livro de receitas `nginx.conf.erb` nginx](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/nginx) embutido, que as receitas de configuração da camada Rails App Server usam para `nginx.conf` criar, e adicione a seguinte diretiva:  

```
ssl_protocols TLSv1.2;
```
Para obter mais informações sobre como configurar o `nginx.conf`, consulte [Configurar servidores HTTPS](http://nginx.org/en/docs/http/configuring_https_servers.html). Para obter mais informações sobre como substituir um modelo integrado, consulte [Uso de modelos personalizados](workingcookbook-template-override.md).

## Conectar-se a um banco de dados
<a name="workinglayers-rails-db"></a>

Quando você implanta um aplicativo, o OpsWorks Stacks cria um novo `database.yml` arquivo usando informações dos [`deploy`atributos](workingcookbook-json.md#workingcookbook-json-deploy) do aplicativo. Se você [anexar uma instância do MySQL ou do Amazon RDS](workingapps-creating.md#workingapps-creating-data) ao aplicativo, o OpsWorks Stacks adiciona as informações de conexão aos `deploy` atributos, para que contenha `database.yml` automaticamente os dados de conexão corretos. 

Se um aplicativo não tiver um banco de dados anexado, por padrão, o OpsWorks Stacks não adiciona nenhuma informação de conexão aos `deploy` atributos e não cria`database.yml`. Se você quiser usar um banco de dados diferente, pode usar um JSON personalizado para adicionar atributos de banco de dados aos `deploy` atributos do aplicativo com as informações de conexão. Os atributos estão todos abaixo`["deploy"]["appshortname"]["database"]`, onde *appshortname* está o nome curto do aplicativo, que o OpsWorks Stacks gera a partir do nome do aplicativo. Os valores especificados no JSON personalizado substituem as configurações padrão. Para obter mais informações, consulte [Adição de aplicativos](workingapps-creating.md).

OpsWorks Stacks incorpora os seguintes valores de [`[:...][:database]`](attributes-json-deploy.md#attributes-json-deploy-app-db)atributos em. `database.yml` Os atributos necessários dependem do banco de dados específico, mas você deve ter um `host` atributo ou OpsWorks as pilhas não serão criadas`database.yml`.
+ `[:adapter] (String)`: o adaptador de banco de dados, como `mysql`.
+ `[:database]` (String): o nome do banco de dados.
+ `[:encoding]` (String): a codificação, que geralmente é definida como `utf8`.
+ `[:host]` (String): o URL do host, como `railsexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com`.
+ `[:reconnect]` (Boolean): caso o aplicativo deva se reconectar se a conexão não existir mais.
+ `[:password]` (String): a senha do banco de dados.
+ `[:port]` (telefone). : o número da porta do banco de dados. Use esse atributo para substituir o número de porta padrão, que é definido pelo adaptador.
+ `[:username]` (String): o nome de usuário do banco de dados.

O exemplo a seguir mostra um JSON personalizado para um aplicativo cujo nome curto é *myapp*.

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

Para obter informações sobre como especificar um JSON personalizado, consulte [Usar JSON personalizado](workingstacks-json.md). Para ver o modelo usado para criar `database.yml` (`database.yml.erb`), acesse o [repositório integrado do livro de receita](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.4/rails/templates/default).

## Implantar aplicativos Ruby on Rails
<a name="workinglayers-rails-deploy"></a>

Você pode implantar aplicativos Ruby on Rails a partir de qualquer um dos repositórios suportados. A seguir, mostramos como implantar um exemplo de aplicativo Ruby on Rails em um servidor executando uma pilha Apache/Passenger Rails. O código de exemplo é armazenado em um GitHub repositório público, mas o procedimento básico é o mesmo para os outros repositórios compatíveis. Para obter mais informações sobre como criar e implantar aplicativos, consulte [Apps](workingapps.md). Para ver o código do exemplo, que inclui comentários extensos, acesse [https://github.com/awslabs/opsworks-demo-rails-photo-share-app](https://github.com/awslabs/opsworks-demo-rails-photo-share-app). 

**Para implantar um aplicativo Ruby on Rails a partir de um repositório GitHub**

1. [Crie uma pilha](workingstacks-creating.md) [com uma camada do Rails App Server Apache/Passenger como pilha Rails, [adicione uma instância 24/7](workinginstances-add.md) à camada e inicie-a.](workinginstances-starting.md) 

1. Depois que a instância estiver online, [adicione um aplicativo](workingapps-creating.md#workingapps-creating-general) à pilha e especifique as configurações a seguir:
   + **Name** – Qualquer nome que você quiser; o exemplo usa `PhotoPoll`.

     OpsWorks O Stacks usa esse nome para fins de exibição e gera um nome curto para uso interno e para identificar o aplicativo na [configuração da pilha e nos atributos de implantação](workingcookbook-json.md). Por exemplo, o nome PhotoPoll curto é photopoll.
   + **App type** – **Ruby on Rails**.
   + ** Rails environment** – Os ambientes disponíveis são determinados pelo aplicativo.

     O aplicativo de exemplo tem três: **development**, **test** e produção**production**. Para este exemplo, defina o ambiente como **development**. Consulte o código de exemplo para obter descrições de cada ambiente.
   + **URL do repositório**: qualquer um dos tipos de repositório suportados. Especifique o `Git` para este exemplo
   + **Repository URL** – O repositório de implantação do código.

     Para este exemplo, defina o URL como **git://github.com/awslabs/opsworks-demo-rails-photo-share-app**.

   Use os valores padrão para as configurações restantes e clique em **Add App** para criar o aplicativo.

1. [Implante o aplicativo](workingapps-deploying.md) na instância Rails App Server.

1. Quando a implantação for concluída, vá à página **Instâncias** e clique no endereço IP público da instância do Rails App Server. Você deve ver o seguinte:

![\[Congratulatory message for deploying first app with AWS OpsWorks, with stylized logo.\]](http://docs.aws.amazon.com/pt_br/opsworks/latest/userguide/images/rails_example.png)
