수색…


응용 프로그램 배포

Rails 앱이 들어있는 디렉토리에 있는지 확인한 다음 Heroku에서 앱을 만듭니다.

$ heroku create example
Creating ⬢ example... done
https://example.herokuapp.com/ | https://git.heroku.com/example.git

출력의 첫 번째 URL 인 http://example.herokuapp.com 은 앱을 사용할 수있는 위치입니다. 두 번째 URL 인 [email protected] : example.git은 원격 자식 저장소 URL입니다.

이 명령은 초기화 된 git 저장소에서만 사용해야합니다. heroku create 명령은이 URL을 가리키는 "heroku"라는 git 리모컨을 자동으로 추가합니다.

앱 이름 인수 ( 'example')는 선택 사항입니다. 앱 이름을 지정하지 않으면 임의의 이름이 생성됩니다. Heroku 앱 이름은 글로벌 네임 스페이스에 있기 때문에 "블로그"또는 "wiki"와 같은 일반적인 이름을 사용할 수 있습니다. 기본 이름으로 시작하고 나중에 응용 프로그램 이름을 변경하는 것이 더 쉽습니다.

그런 다음 코드를 배포하십시오.

$ git push heroku master
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.3.1
remote: -----> Installing dependencies using bundler 1.11.2
remote:        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote:        Warning: the running version of Bundler is older than the version that created the lockfile. We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote:        Fetching gem metadata from https://rubygems.org/..........
remote:        Fetching version metadata from https://rubygems.org/...
remote:        Fetching dependency metadata from https://rubygems.org/..
remote:        Installing concurrent-ruby 1.0.2
remote:        Installing i18n 0.7.0
remote:        Installing rake 11.2.2
remote:        Installing minitest 5.9.0
remote:        Installing thread_safe 0.3.5
remote:        Installing builder 3.2.2
remote:        Installing mini_portile2 2.1.0
remote:        Installing erubis 2.7.0
remote:        Installing pkg-config 1.1.7
remote:        Installing rack 2.0.1
remote:        Installing nio4r 1.2.1 with native extensions
remote:        Installing websocket-extensions 0.1.2
remote:        Installing mime-types-data 3.2016.0521
remote:        Installing arel 7.0.0
remote:        Installing coffee-script-source 1.10.0
remote:        Installing execjs 2.7.0
remote:        Installing method_source 0.8.2
remote:        Installing thor 0.19.1
remote:        Installing multi_json 1.12.1
remote:        Installing puma 3.4.0 with native extensions
remote:        Installing pg 0.18.4 with native extensions
remote:        Using bundler 1.11.2
remote:        Installing sass 3.4.22
remote:        Installing tilt 2.0.5
remote:        Installing turbolinks-source 5.0.0
remote:        Installing tzinfo 1.2.2
remote:        Installing nokogiri 1.6.8 with native extensions
remote:        Installing rack-test 0.6.3
remote:        Installing sprockets 3.6.3
remote:        Installing websocket-driver 0.6.4 with native extensions
remote:        Installing mime-types 3.1
remote:        Installing coffee-script 2.4.1
remote:        Installing uglifier 3.0.0
remote:        Installing turbolinks 5.0.0
remote:        Installing activesupport 5.0.0
remote:        Installing mail 2.6.4
remote:        Installing globalid 0.3.6
remote:        Installing activemodel 5.0.0
remote:        Installing jbuilder 2.5.0
remote:        Installing activejob 5.0.0
remote:        Installing activerecord 5.0.0
remote:        Installing loofah 2.0.3
remote:        Installing rails-dom-testing 2.0.1
remote:        Installing rails-html-sanitizer 1.0.3
remote:        Installing actionview 5.0.0
remote:        Installing actionpack 5.0.0
remote:        Installing actionmailer 5.0.0
remote:        Installing railties 5.0.0
remote:        Installing actioncable 5.0.0
remote:        Installing sprockets-rails 3.1.1
remote:        Installing coffee-rails 4.2.1
remote:        Installing jquery-rails 4.1.1
remote:        Installing rails 5.0.0
remote:        Installing sass-rails 5.0.5
remote:        Bundle complete! 15 Gemfile dependencies, 54 gems now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into ./vendor/bundle.
remote:        Bundle completed (31.86s)
remote:        Cleaning up the bundler cache.
remote:        Warning: the running version of Bundler is older than the version that created the lockfile. We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        I, [2016-07-08T17:08:57.046245 #1222]  INFO -- : Writing /tmp/build_49ba6c877f5502cd4029406e981f90b4/public/assets/application-1bf5315c71171ad5f9cbef00193d56b7e45263ddc64caf676ce988cfbb6570bd.js
remote:        I, [2016-07-08T17:08:57.046951 #1222]  INFO -- : Writing /tmp/build_49ba6c877f5502cd4029406e981f90b4/public/assets/application-1bf5315c71171ad5f9cbef00193d56b7e45263ddc64caf676ce988cfbb6570bd.js.gz
remote:        I, [2016-07-08T17:08:57.060208 #1222]  INFO -- : Writing /tmp/build_49ba6c877f5502cd4029406e981f90b4/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css
remote:        I, [2016-07-08T17:08:57.060656 #1222]  INFO -- : Writing /tmp/build_49ba6c877f5502cd4029406e981f90b4/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
remote:        Asset precompilation completed (4.06s)
remote:        Cleaning assets
remote:        Running: rake assets:clean
remote:
remote: ###### WARNING:
remote:        No Procfile detected, using the default web server.
remote:        We recommend explicitly declaring how to boot your server process via a Procfile.
remote:        https://devcenter.heroku.com/articles/ruby-default-web-server
remote:
remote: -----> Discovering process types
remote:        Procfile declares types     -> (none)
remote:        Default types for buildpack -> console, rake, web, worker
remote:
remote: -----> Compressing...
remote:        Done: 29.2M
remote: -----> Launching...
remote:        Released v5
remote:        https://example.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/example.git
 * [new branch]      master -> master

응용 프로그램에서 데이터베이스를 사용하는 경우 다음을 실행하여 데이터베이스를 수동으로 이주해야합니다.

$ heroku run rake db:migrate

heroku run 후 명령은 Heroku dyno에서 heroku run 됩니다. 다음을 실행하여 대화식 셸 세션을 얻을 수 있습니다.

$ heroku run bash

웹 프로세스 유형을 실행하는 하나의 dyno가 있는지 확인하십시오.

$ heroku ps:scale web=1

heroku ps 명령은 응용 프로그램의 실행중인 dynos를 나열합니다.

$ heroku ps
=== web (Standard-1X): bin/rails server -p $PORT -e $RAILS_ENV (1)
web.1: starting 2016/07/08 12:09:06 -0500 (~ 2s ago)

이제 heroku open 브라우저에서 앱을 방문 할 수 있습니다.

$ heroku open

Heroku는 herokuapp.com 도메인에서 기본 웹 URL을 herokuapp.com 합니다. 프로덕션을 위해 확장 할 준비가되면 자신 만의 사용자 정의 도메인을 추가 할 수 있습니다.

Heroku의 프로덕션 및 스테이징 환경 관리

모든 Heroku 앱은 적어도 두 가지 환경에서 실행됩니다 : Heroku에서 (우리는 그 프로덕션이라고 부름) 로컬 시스템 (개발)에서 실행합니다. 두 명 이상의 사람이 응용 프로그램에서 작업하는 경우 여러 개발 환경 (일반적으로 컴퓨터 당 하나씩)이 있습니다. 일반적으로 각 개발자는 테스트 실행을위한 테스트 환경을 갖습니다. 불행하게도,이 접근법은 환경이 덜 유사 해짐에 따라 고장납니다. 예를 들어 Windows와 Mac은 모두 Heroku의 Linux 스택과 다른 환경을 제공하므로 로컬 개발 환경에서 작동하는 코드가 프로덕션 환경에 배포 할 때 동일한 방식으로 작동한다는 것을 항상 확신 할 수는 없습니다.

이 솔루션은 가능한 한 생산과 유사한 스테이징 환경을 갖추는 것입니다. 스테이징 응용 프로그램을 호스팅하는 두 번째 Heroku 응용 프로그램을 만들어이 작업을 수행 할 수 있습니다. 준비를 통해 실제 사용자에게 영향을주기 전에 프로덕션과 유사한 설정에서 코드를 확인할 수 있습니다.

처음부터 시작

로컬 시스템에서 실행중인 응용 프로그램이 있고이를 Heroku에 푸시 할 준비가되었다고 가정합니다. 우리는 원격 환경, 스테이징 및 프로덕션을 모두 생성해야합니다. 우선 준비 단계로 나아가는 습관을 갖기 위해 다음과 같이 시작합니다.

$ heroku create --remote staging
Creating strong-river-216.... done
http://strong-river-216.heroku.com/ | https://git.heroku.com/strong-river-216.git
Git remote staging added

기본적으로 heroku CLI는 heroku git remote를 사용하여 프로젝트를 만듭니다. 여기서는 --remote 플래그를 사용하여 다른 이름을 지정하기 때문에 코드를 Heroku에 푸시하고 앱에 대해 명령을 실행하면 일반 git push heroku 마스터와 조금 다르게 보입니다.

 $ git push staging master
...
 $ heroku ps --remote staging
=== web: `bundle exec puma -C config/puma.rb``
web.1: up for 21s

준비 앱이 정상적으로 실행되면 프로덕션 앱을 만들 수 있습니다.

$ heroku create --remote production
Creating fierce-ice-327.... done
http://fierce-ice-327.heroku.com/ | https://git.heroku.com/fierce-ice-327.git
Git remote production added
$ git push production master
...
$ heroku ps --remote production
=== web: `bundle exec puma -C config/puma.rb
web.1: up for 16s

그리고 이것으로 두 개의 분리 된 Heroku 어플리케이션 (하나의 스테이징과 하나의 프로덕션)에서 동일한 코드베이스를 실행합니다. 일일 작업을 수행 할 앱을 지정해야한다는 것을 기억하십시오. '--remote'플래그를 사용하거나 자식 설정을 사용하여 기본 앱을 지정할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow