레일스 앱 서버 스택 레이어 AWS OpsWorks - AWS OpsWorks

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

레일스 앱 서버 스택 레이어 AWS OpsWorks

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

참고

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

Rails App Server 계층은 Rails 애플리케이션 서버로 작동하는 인스턴스에 대한 청사진을 제공하는 AWS OpsWorks 스택 계층입니다.

설치: 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 애플리케이션이 SSL을 사용하는 경우, 가능하다면 SSLv3를 비활성화하여 CVE-2014-3566에 설명된 취약성을 해결하는 것이 좋습니다. 자세한 내용은 Rails 서버에 대해 SSLv3 비활성화 섹션을 참조하세요.

Rails 서버에 대해 SSLv3 비활성화

Rails 서버에 대해 SSLv3를 비활성화하려면 계층의 Ruby Version(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 명령을 추가합니다. SSLv3를 비활성화하려면 Rails 앱 서버 계층의 설정 레시피가 nginx.conf을 생성하는 데 사용하는 내장 nginx 쿡북의 nginx.conf.erb 템플릿 파일을 재정의하고 다음 지시문을 추가합니다.

ssl_protocols TLSv1.2;

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

데이터베이스에 연결

앱을 배포할 때 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 스택은 다음 속성 값을 통합합니다. [:...][:database]database.yml 필수 속성은 특정 데이터베이스에 따라 다르지만 host 속성이 있어야 합니다. 그렇지 않으면 AWS OpsWorks 스택이 생성되지 않습니다. database.yml

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

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

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

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

  • [: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을 참조하십시오.

리포지토리에서 Ruby on Rails 앱을 배포하려면 GitHub
  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.