Rails 앱 서버 AWS OpsWorks 스택 계층 - AWS OpsWorks

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Rails 앱 서버 AWS OpsWorks 스택 계층

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 만료되었으며 신규 및 기존 고객 모두에 대해 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 AWS re:Post 또는 AWS Premium Support를 통해 AWS Support 팀에 문의하세요.

참고

이 계층은 Linux 기반 스택에서만 사용할 수 있습니다.

Rails 앱 서버 계층은 Rails 애플리케이션 서버로 작동하는 인스턴스에 대한 블루프린트를 제공하는 AWS OpsWorks Stacks 계층입니다.

Installation: AWS OpsWorks Stacks는 인스턴스의 패키지 설치 관리자를 사용하여 기본 위치에 서버 패키지를 설치합니다. Apache/Passenger 설치에 대한 자세한 정보는 Phusion Passenger를 참조하세요. 로깅에 대한 자세한 정보는 로그 파일 단원을 참조하세요. Nginx/Unicorn 설치에 대한 자세한 정보는 Unicorn 단원을 참조하세요.

[계층 추가] 페이지는 모두가 선택 사항인 다음 구성 옵션을 제공합니다.

Ruby 버전

애플리케이션이 사용할 Ruby 버전. 기본값은 2.3입니다.

[:opsworks][:ruby_version] 속성을 재정의하면 선호하는 Ruby 버전을 지정할 수도 있습니다.

참고

AWS OpsWorks Stacks는 레시피와 인스턴스 에이전트가 사용할 별도의 Ruby 패키지를 설치합니다. 자세한 내용은 Ruby 버전 단원을 참조하십시오.

Rails 스택

기본 Rails 스택은 Phusion Passenger가 있는 Apache2입니다. Nginx유니콘과 함께 사용할 수도 있습니다.

참고

Nginx와 Unicorn을 사용하는 경우, 다음 예제에서처럼 앱의 Gemfile에 unicorn gem을 추가해야 합니다.

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

Apache2/Passenger를 지정한 경우, Passenger 버전을 지정해야 합니다. 기본값은 5.0.28입니다.

Rubygems 버전

기본 Rubygems 버전은 2.5.1입니다.

Bundler 설치 및 관리

Bundler 설치 및 관리 여부를 선택할 수 있도록 해 줍니다. 기본 값은 []입니다.

Bundler 버전

기본 Bundler 버전은 1.12.5입니다.

사용자 지정 보안 그룹

이 설정은 내장 AWS OpsWorks Stacks 보안 그룹을 계층에 자동으로 연결하지 않도록 선택한 경우에 나타납니다. 계층에 어떤 보안 그룹을 연결할지 지정해야 합니다. 자세한 내용은 새 스택 생성 섹션을 참조하세요.

Elastic Load Balancer

Elastic Load Balancing 로드 밸런서를 어떤 계층의 인스턴스에도 연결할 수 있습니다.

사용자 지정 JSON 또는 사용자 지정 속성 파일을 사용하여 일부 구성 설정을 수정할 수 있습니다. 자세한 내용은 속성 재정의 단원을 참조하십시오. 재정의할 수 있는 Apache, Nginx, Phusion Passenger 및 Unicorn 속성 목록은 내장 쿡북 속성를 참조하세요.

중요

Ruby on Rails 애플리케이션에서를 사용하는 경우 SSLv3 가능하면 비활성화하여 CVE-2014-3566에 설명된 취약성을 해결하는 SSL것이 좋습니다. 자세한 내용은 Rails 서버에 SSLv3 대해 비활성화 단원을 참조하십시오.

Rails 서버에 SSLv3 대해 비활성화

Rails 서버에 SSLv3 대해를 비활성화하려면 계층의 Ruby 버전 설정을 2.1 이상으로 업데이트합니다. 그러면 Ruby 2.1.4 이상이 애플리케이션이 사용하는 버전으로 설치됩니다.

  • 계층의 Ruby 버전 설정을 2.1 이상으로 업데이트합니다.

  • Rails 스택의 구성 파일을 다음과 같이 업데이트합니다.

Phusion Passenger 포함 Apache

Apache 서버 SSLProtocol 파일의 ssl.conf 설정을 Apache 서버에 SSLv3 대해 비활성화의 설명에 따라 업데이트합니다.

Unicorn 포함 Nginx

Nginx 서버의 ssl_protocols 파일에 명시적인 nginx.conf 명령을 추가합니다. 를 비활성화하려면 Rails App Server 계층의 설정 레시피가를 생성하는 데 사용하는 내장 nginx 쿡북nginx.conf.erb 템플릿 파일을 SSLv3재정의nginx.conf하고 다음 명령을 추가합니다.

ssl_protocols TLSv1.2;

구성 방법에 대한 자세한 내용은 HTTPS 서버 구성을 nginx.conf참조하세요. 내장 템플릿을 재정의하는 방법에 대한 자세한 정보는 사용자 지정 템플릿 사용 를 참조하세요.

데이터베이스에 연결

앱을 배포하면 AWS OpsWorks Stacks는 앱 deploy 속성의 정보를 사용하여 새 database.yml 파일을 생성합니다. MySQL 또는 Amazon RDS 인스턴스를 앱에 연결하면 AWS OpsWorks Stacks는 deploy 속성에 연결 정보를 추가하여에 올바른 연결 데이터가 database.yml 자동으로 포함됩니다.

앱에 연결된 데이터베이스가 없는 경우 기본적으로 AWS OpsWorks Stacks는 deploy 속성에 연결 정보를 추가하지 않으며를 생성하지 않습니다database.yml. 다른 데이터베이스를 사용하려면 사용자 지정 JSON를 사용하여 연결 정보와 함께 앱의 속성에 데이터베이스 deploy 속성을 추가할 수 있습니다. 속성은 모두 아래에 있습니다["deploy"]["appshortname"]["database"]. 여기서 appshortname는 앱의 짧은 이름이며, AWS OpsWorks Stacks는 앱 이름에서 생성합니다. 사용자 지정에서 지정하는 값은 모든 기본 설정을 JSON 재정의합니다. 자세한 내용은 앱 추가 단원을 참조하십시오.

AWS OpsWorks Stacks는 다음 [:...][:database] 속성 값을에 통합합니다database.yml. 필수 속성은 특정 데이터베이스에 따라 다르지만 host 속성이 있어야 합니다. 그렇지 않으면 AWS OpsWorks Stacks가를 생성하지 않습니다database.yml.

  • [:adapter] (String) - mysql과 같은 데이터베이스 어댑터.

  • [:database](문자열) - 데이터베이스 이름.

  • [:encoding](문자열) - 일반적으로 utf8로 설정되는 인코딩.

  • [:host] (문자열) - URL와 같은 호스트입니다railsexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com.

  • [:reconnect](Boolean) - 연결이 더 이상 존재하지 않는 경우, 애플리케이션이 다시 연결해야 하는지 여부.

  • [:password](문자열) - 데이터베이스 암호.

  • [:port] (번호). - 데이터베이스 포트 숫자. 이 속성을 사용하여 기본 포트 번호를 재정의합니다(기본 포트 번호는 어댑터에 의해 설정).

  • [:username](문자열) - 데이터베이스 사용자 이름.

다음 예제에서는 짧은 이름이 myapp인 앱JSON의 사용자 지정을 보여줍니다.

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

사용자 지정를 지정하는 방법에 대한 자세한 내용은 섹션을 JSON참조하세요사용자 지정 사용 JSON. database.yml(database.yml.erb) 생성에 사용되는 템플릿을 보려면 내장 쿡북 리포지토리로 이동하세요.

Ruby on Rails 앱 배포

지원되는 모든 리포지토리에서 Ruby on Rails 앱을 배포할 수 있습니다. 다음은 Apache/Passenger Rails 스택을 실행하는 서버에 예제 Ruby on Rails 앱을 배포하는 방법을 보여 줍니다. 예제 코드는 퍼블릭 GitHub 리포지토리에 저장되지만 지원되는 다른 리포지토리의 기본 절차는 동일합니다. 앱을 생성하고 배포하는 방법에 대한 자세한 정보는 단원을 참조하세요. 광범위한 설명이 포함된 예제의 코드를 보려면 https://github.com/awslabs/opsworks-demo-rails-photo-share-app으로 이동합니다.

GitHub 리포지토리에서 Ruby on Rails 앱을 배포하려면
  1. Apache/Passenger를 Rails 스택으로 하는 Rails 앱 서버 계층을 사용하여 스택을 생성하고, 해당 계층에 연중무휴 인스턴스를 추가한 다음 시작합니다.

  2. 인스턴스가 온라인 상태가 되면 스택에 앱을 추가하고 다음 설정을 지정합니다.

    • 이름 - 선호하는 모든 이름을 지정할 수 있습니다. 이 예제에서는 PhotoPoll을 사용합니다.

      AWS OpsWorks Stacks는이 이름을 표시 목적으로 사용하며, 내부용으로 짧은 이름을 생성하고 스택 구성 및 배포 속성에서 앱을 식별합니다. 예를 들어 PhotoPoll 짧은 이름은 photopoll입니다.

    • 앱 유형Ruby on Rails.

    • Rails 환경 - 사용 가능한 환경은 애플리케이션에서 결정합니다.

      예제에서 사용되는 앱에는 development, testproduction, 이렇게 세 가지 환경이 있습니다. 이 예제에서는 환경을 development로 설정합니다. 각 환경에 대한 설명은 예제 코드를 참조하세요.

    • 리포지토리 유형 - 지원되는 모든 리포지토리 유형. 이 예제에서는 Git를 지정합니다.

    • 리포지토리 URL - 코드를 배포해야 하는 리포지토리입니다.

      이 예제에서는를 URL로 설정합니다git://github.com/awslabs/opsworks-demo-rails-photo-share-app.

    나머지 설정에 대해서는 기본값을 사용하고 [앱 추가]를 클릭하여 앱을 생성합니다.

  3. 앱을 Rails 앱 서버 인스턴스에 배포합니다.

  4. 배포를 마치면 인스턴스 페이지로 이동해 Rails 앱 서버 인스턴스의 퍼블릭 IP 주소를 클릭합니다. 다음과 같은 모양이어야 합니다.

Congratulatory message for deploying first app with AWS OpsWorks, with stylized logo.