Ruby on Rails 배포-Heroku를위한 좋은 대안이 있습니까?

그것을 얻으십시오

저는 새로운 소규모 벤처, 원하는 경우 POC를 시작하고 Rails 애플리케이션을 어딘가에 무료로 배포하고 싶습니다. Heroku가 있다는 것을 알았습니다. 다른 옵션이 있습니까?

그것을 얻으십시오

네, 있습니다

이것은 내가 주제에 대해 찾은 아주 좋은 게시물입니다

http://blog.sudobits.com/2013/02/15/heroku-alternatives-for-deploying-rails-applications

옵션을 하나씩 살펴 보았고, 겸손한 의견으로는 OpenShift가 최소한 POC \ Prototype 개발 및 생성을 시작할 때 중소 규모 웹 사이트에 가장 적합한 옵션입니다.

왜 더 낫습니까?

  • 그것은 Heroku가 당신에게 줄 것입니다
  • 로컬 (지속적) 스토리지를 제공합니다. 따라서 Amazon에서 S3 또는 이와 동등한 비용을 지불 할 필요가 없습니다. 언젠가는 S3를 사용하기를 원하지만 적어도 처음에는 그렇게하고 싶을 것 같습니다. 그것에 돈을 넣을 필요가 없습니다
  • 웹 사이트가 더 빠르게 실행되는 것 같습니다.
  • 나는 기계에서 일어나는 일을 제어하는 ​​측면에서 더 유연하다고 생각합니다.

단점이 있습니까?

  • Openshift에서 찾을 수있는 유일한 단점은 배포에 Heroku보다 훨씬 더 많은 시간이 걸리고 웹 사이트에 처음 주소를 지정할 때 상당한 지연이 있다는 것입니다 (그러나 처음 이후에는 더 빠르게 작동합니다.-브라우저 캐싱과 관련이 없음) 이것이 문제라고 생각한다면)

이 문서의 Gemfile 섹션 https://www.openshift.com/blogs/converting-an-existing-rails-app-to-run-on-openshift 가이 문제를 해결할 수 있습니다 ... 나중

기존 애플리케이션을 Openshift에 배포하기 위해 수행해야하는 단계는 무엇입니까?

여러 곳에서 새 애플리케이션 을 만들고 배포하는 방법에 대한 설명을 찾았 지만 기존 애플리케이션을 OpenShift에 배치하는 방법을 이해하기가 조금 어려웠습니다.

이것이 제가 설명하고 싶은 이유입니다

가정-애플리케이션이 이미 git 제어 됨-경로는 / home / dev / MyApp-이제 / home / dev 아래에 있습니다.

  1. https://www.openshift.com에서 Openshift 계정 만들기
  2. 명령 줄 도구를 사용하면 훨씬 더 많은 정보를 얻을 수 있습니다.
  3. https://www.openshift.com/get-started로 이동합니다.
  4. 명령 줄 도구를 설치 및 설정하려면 1..3 단계를 따르십시오.
  5. 레일스 애플리케이션 폴더 / home / dev / MyApp으로 cd
  6. 새 애플리케이션 도메인 만들기-다음을 실행합니다. rhc domain-create <domain name>
  7. 다음을 실행하여 OpenShift에서 애플리케이션 만들기

    rhc app-create -a MyApp -t ruby-1.9 --no-git

    -a OpenShift 아래에 응용 프로그램 이름을 설정합니다.-Rails 응용 프로그램 이름과 완전히 다를 수 있습니다.

    -t는 응용 프로그램 유형을 설정합니다. 현재 루비 1.9가 지원되는 가장 높은 버전이라고 생각합니다.

    --no-git은 git을 만들지 말라고 지시합니다.

  8. DB 설정

    • 다음을 호출하여 OpenShift 애플리케이션에 적합한 DB 카트리지를 설치하십시오.

      rhc cartridge add <DB cartridge type> -a <Application Name>

      예 :

      rhc cartridge add mysql-5.1 -a MyApp

      MongoDB 및 PostgreSQL도 지원합니다.

      (여기 https://www.openshift.com/developers/technologies 참조 )

    • OpenShift 데이터베이스와 관련되도록 database.yml을 변경합니다. 이제 OpenShift가 환경 변수로 많은 구성을 확보하고 필요할 때마다 간단히 사용할 수 있으므로 매우 쉽습니다. 예를 들면 다음과 같습니다.

    production:
      adapter: mysql
      encoding: utf8
      database: <%=ENV['OPENSHIFT_APP_NAME']%>
      pool: 5
      host: <%=ENV['OPENSHIFT_MYSQL_DB_HOST']%>
      port: <%=ENV['OPENSHIFT_MYSQL_DB_PORT']%>
      username: <%=ENV['OPENSHIFT_MYSQL_DB_USERNAME']%>
      password: <%=ENV['OPENSHIFT_MYSQL_DB_PASSWORD']%>
      socket: <%=ENV['OPENSHIFT_MYSQL_DB_SOCKET']%>
    
  9. 모든 것이 로컬에서 작동하는지 확인

    • 실행 : '번들 설치'
    • Run : 'rails s'-모든 것이 정상인지 확인하십시오.
  10. Git-OpenShift 저장소를 원격 저장소 중 하나로 추가하고 푸시합니다.

    • 모든 작업이 업데이트, 커밋 및 GitHub와 동기화되었는지 확인합니다. 이렇게하면 나중에 많은 문제를 줄일 수 있습니다.
    • 실행 : rhc app-show <application name>-애플리케이션에 대한 모든 정보를 표시합니다.-Git URL 복사
    • 운영 : git remote add openshift <OpenShift repo URL>
    • 병합하여 OpenShift가 추가하는 모든 것을 가져옵니다.

      운영 : git merge openshift/master -s recursive -X ours

    • 변경 사항을 커밋합니다. git commit -am 'adding OpenShift files

    • OpenShift로 푸시 : git push openshift

이것이 전부입니다. 이제 애플리케이션을 OpenShift에 배포해야합니다.

배포 된 웹 사이트를 어떻게 열 수 있습니까?

rhc app-show <application name>명령을 사용하면 웹 사이트 URL을 볼 수 있습니다.

일반적으로 http://<application name>-<domain name>.rhcloud.com

자신의 도메인으로 변경하는 것은 매우 쉽습니다.

  • 그냥 달려 rhc alias add <app name> <your domain>
  • 그런 다음 DNS 관리에서 CNAME 'www'정의를 수정하여 http://<application name>-<domain name>.rhcloud.com

OpenShift 머신에 어떻게 연결합니까?

다시 한번 사용 rhc app-show <application name>하면 SSH 주소를 볼 수 있습니다. ssh <SSH address>연결하려면 간단히 실행하십시오.

배포시 마이그레이션 및 시드를 자동으로 실행하려면 어떻게합니까?

OpenShift의 한 가지 좋은 점은 배포의 여러 단계에서 트리거되는 사용자 지정 작업 (액션 후크)을 추가 할 수 있다는 것입니다.

https://www.openshift.com/developers/deploying-and-building-applications에서 자세한 내용을 읽을 수 있습니다.

지금은 deploy action-hook에 대해서만 이야기하겠습니다.

  1. 응용 프로그램 폴더에서 .openshift / action_hooks로 이동하여 그 deploy아래에 이름이 지정된 파일을 만듭니다.
  2. 이 파일을 실행 가능하게 만들기-실행 : chmod +x deploy
  3. 그것에 약간의 코드를 넣어

    예를 들면 :

    #! / bin / bash

    echo "배포 시작"

    $ {OPENSHIFT_REPO_DIR}> / dev / null 푸시 됨

    echo "디렉터리를 $ {OPENSHIFT_REPO_DIR} public으로 변경"

    cd $ {OPENSHIFT_REPO_DIR}

    cd 공개

    echo "이름이 지정된 업로드를 $ {OPENSHIFT_DATA_DIR} 업로드하는 소프트 링크를 만드는 중"

    ln -s $ {OPENSHIFT_DATA_DIR} 업로드 업로드

    echo "번들 exec rake db : migrate RAILS_ENV = production 실행"

    번들 exec 레이크 db : migrate RAILS_ENV = "production"

    echo "실행중인 번들 exec rake db : seed RAILS_ENV = production"

    번들 exec 레이크 db : seed RAILS_ENV = "production"

    popd> / dev / null

    • 소프트 링크는 나중에 설명됩니다. 라우팅에서 Carrierwave 업로드 파일을 찾는 데 필요합니다.
  4. 파일을 git에 추가하십시오- git add deploy(물론 폴더 내부에서)
  5. 변경 사항을 커밋하고 OpenShift Remote로 푸시

파일을 업로드하고 OpenShift에 저장할 수 있도록 Carrierwave를 통합하려면 어떻게해야합니까?

두 가지 점이 있습니다

  1. 파일은 어디에 저장됩니까? - 이것은 쉬워요
  2. 라우팅에서 업로드 된 파일을 가져 오는 방법을 알고 있습니까?

저장 경로 설정 :

initializers \ carrierwave.rb 파일을

CarrierWave.configure do |config|
  if Rails.env.production?
    config.storage = :file
    config.enable_processing = true
    config.root = ENV['OPENSHIFT_DATA_DIR']
    config.cache_dir = config.root + 'uploads'
  end    
end

업 로더는 기본적으로 그대로 둡니다. storage :file

def store_dir

"uploads / # {model.class.to_s.underscore} / # {mounted_as} / # {model.id}"

종료

$ OPENSHIFT_DATA_DIR 폴더를 사용하면 파일을 쓸 수 있고 파일이 그대로 유지됩니다.

라우팅이 파일을 찾을 수 있는지 확인 :

그 트릭을 생각해내는 데 시간이 걸렸습니다 (너무 많지 않고 몇 시간)

Rails Routing은 애플리케이션 폴더 아래에있는 폴더 만 연결하는 방법을 알고 있습니다. OpenShift 머신 uploads에서 $ {OPENSHIFT_REPO_DIR} \ public 폴더 아래에 업로드 된 파일 폴더 (이 경우 이름 이 지정됨)를 찾습니다. 배포 파일에 넣은 소프트 링크 가 편리해집니다. 시스템을 속여서 응용 프로그램 폴더 아래에 있지 않은 폴더에서 해당 파일을 가져 오도록합니다.


나는 그 문제와 배포 방법 및 모든 것에 대한 많은 게시물이 있다는 것을 알고 있지만, 그저 주문하고 싶었습니다.

물론 모든 단계를 문서화하지 않았기 때문에 내가 쓴 내용에 실수와 부정확성이있을 수 있지만, 내가 기억하는 것만으로도 일부 세부 사항이 틀렸다면 자유롭게 수정하십시오.

가장 좋은 소스 중 하나는 OpenShift 문서입니다.

그런 것들이 사람들을 돕고 시간과 돈을 절약하기를 바랍니다.

즐겨

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Ruby 1.9.3이 필요한 Rails 애플리케이션을 배포하기 위해 Ruby> 2가 필요한 최신 Capistrano를 사용할 수 있습니까?

분류에서Dev

Ruby on Rails를위한 좋은 OAuth gem

분류에서Dev

Rails Form Helper에 대한 좋은 API 문서가 있습니까?

분류에서Dev

GarageBand에 대한 좋은 대안이 있습니까?

분류에서Dev

Primefaces For Django에 대한 좋은 대안이 있습니까?

분류에서Dev

Windows에서 Ruby를위한 좋은 IDE가 있습니까?

분류에서Dev

Heroku에 배포 된 Ruby on Rails 앱을 볼 수 없습니까?

분류에서Dev

Ruby On Rails 프로젝트를 배포하는 동안 예기치 않은 INDENT

분류에서Dev

내 Ruby on Rails 앱을 heroku에 배포하려고하는데 제대로 배포됩니다.

분류에서Dev

C에 배열에 대한 인덱스를 포함하는 것이 좋은 습관입니까?

분류에서Dev

큰 아니오에 대한 메뉴를 포함하기 위해 PHP를 사용하고 있습니다. html 페이지는 좋은 생각입니까?

분류에서Dev

numpy 배열에 대한 교차 매핑 인덱스를 결정하는 더 좋은 방법이 있습니까?

분류에서Dev

배포판의 패키지 관리자 대신 Gnome Software Center를 사용하는 데 좋은 이유가 있습니까?

분류에서Dev

Ubuntu 및 대안을위한 좋은 팟 캐스트 클라이언트가 있습니까?

분류에서Dev

Lubuntu에서 코드 편집을위한 Notepad ++의 좋은 대안이 있습니까?

분류에서Dev

Postgres 및 Ruby-데이터베이스를 구조화하는 더 좋은 방법이 있습니까?

분류에서Dev

Cucumber / Watir / Ruby 테스트 결과를 데이터베이스에 쓰는 좋은 방법이 있습니까?

분류에서Dev

배열의 각 단어에 하위 문자열이 포함되어 있는지 확인하고 Ruby on Rails에서이를 거부하는 방법은 무엇입니까?

분류에서Dev

Ruby에서 키워드 인수를 "재 패키징"하는 좋은 방법이 있습니까?

분류에서Dev

Ruby에서 포인트로 배열을 정렬하는 방법은 무엇입니까? 어느 것이 더 성능이 좋습니까?

분류에서Dev

Rails : before_action 후크보다 뷰 경로를 앞에 추가하는 더 좋은 방법이 있습니까?

분류에서Dev

Ruby on Rails 모범 사례를 기반으로 타사 API 호출에 대한 로직을 저장하기에 좋은 장소는 어디입니까?

분류에서Dev

관리자를위한 다른 모델을 만들어야합니까? 아니면 Ruby on Rails에서 가장 좋은 방법은 무엇입니까?

분류에서Dev

좋은 가치를 설정하기위한 지침이 있습니까?

분류에서Dev

Ruby on Rails 앱을 Windows Azure에 배포하는 방법은 무엇입니까?

분류에서Dev

다음 자바 스크립트 코드를 리팩토링하기위한 좋은 제안이 있습니까?

분류에서Dev

포트 80이 아닌 좋은 대체 HTTP 포트가 있습니까?

분류에서Dev

Numpy arange ()에 대한 더 나은 대안이 있습니까?

분류에서Dev

Gnumeric에 대한 더 나은 대안이 있습니까?

Related 관련 기사

  1. 1

    Ruby 1.9.3이 필요한 Rails 애플리케이션을 배포하기 위해 Ruby> 2가 필요한 최신 Capistrano를 사용할 수 있습니까?

  2. 2

    Ruby on Rails를위한 좋은 OAuth gem

  3. 3

    Rails Form Helper에 대한 좋은 API 문서가 있습니까?

  4. 4

    GarageBand에 대한 좋은 대안이 있습니까?

  5. 5

    Primefaces For Django에 대한 좋은 대안이 있습니까?

  6. 6

    Windows에서 Ruby를위한 좋은 IDE가 있습니까?

  7. 7

    Heroku에 배포 된 Ruby on Rails 앱을 볼 수 없습니까?

  8. 8

    Ruby On Rails 프로젝트를 배포하는 동안 예기치 않은 INDENT

  9. 9

    내 Ruby on Rails 앱을 heroku에 배포하려고하는데 제대로 배포됩니다.

  10. 10

    C에 배열에 대한 인덱스를 포함하는 것이 좋은 습관입니까?

  11. 11

    큰 아니오에 대한 메뉴를 포함하기 위해 PHP를 사용하고 있습니다. html 페이지는 좋은 생각입니까?

  12. 12

    numpy 배열에 대한 교차 매핑 인덱스를 결정하는 더 좋은 방법이 있습니까?

  13. 13

    배포판의 패키지 관리자 대신 Gnome Software Center를 사용하는 데 좋은 이유가 있습니까?

  14. 14

    Ubuntu 및 대안을위한 좋은 팟 캐스트 클라이언트가 있습니까?

  15. 15

    Lubuntu에서 코드 편집을위한 Notepad ++의 좋은 대안이 있습니까?

  16. 16

    Postgres 및 Ruby-데이터베이스를 구조화하는 더 좋은 방법이 있습니까?

  17. 17

    Cucumber / Watir / Ruby 테스트 결과를 데이터베이스에 쓰는 좋은 방법이 있습니까?

  18. 18

    배열의 각 단어에 하위 문자열이 포함되어 있는지 확인하고 Ruby on Rails에서이를 거부하는 방법은 무엇입니까?

  19. 19

    Ruby에서 키워드 인수를 "재 패키징"하는 좋은 방법이 있습니까?

  20. 20

    Ruby에서 포인트로 배열을 정렬하는 방법은 무엇입니까? 어느 것이 더 성능이 좋습니까?

  21. 21

    Rails : before_action 후크보다 뷰 경로를 앞에 추가하는 더 좋은 방법이 있습니까?

  22. 22

    Ruby on Rails 모범 사례를 기반으로 타사 API 호출에 대한 로직을 저장하기에 좋은 장소는 어디입니까?

  23. 23

    관리자를위한 다른 모델을 만들어야합니까? 아니면 Ruby on Rails에서 가장 좋은 방법은 무엇입니까?

  24. 24

    좋은 가치를 설정하기위한 지침이 있습니까?

  25. 25

    Ruby on Rails 앱을 Windows Azure에 배포하는 방법은 무엇입니까?

  26. 26

    다음 자바 스크립트 코드를 리팩토링하기위한 좋은 제안이 있습니까?

  27. 27

    포트 80이 아닌 좋은 대체 HTTP 포트가 있습니까?

  28. 28

    Numpy arange ()에 대한 더 나은 대안이 있습니까?

  29. 29

    Gnumeric에 대한 더 나은 대안이 있습니까?

뜨겁다태그

보관