Inscenizacja na Heroku
Chciałbym móc wypchnąć kod do dev.myapp.com
do testów, a następnie do www.myapp.com
do użytku produkcyjnego. Czy to możliwe z Heroku?
5 answers
Twój interfejs do Heroku jest zasadniczo gałęzią Git. Heroku gem działa poprzez swoje API, ale w repozytorium Git jest to tylko Nowa zdalna gałąź.
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
Po skonfigurowaniu wielu aplikacji na Heroku, powinieneś być w stanie skonfigurować swoje repozytorium Git w następujący sposób:
git remote add staging [email protected]:staging-yourapp.git
git push origin staging
git remote add production [email protected]:yourapp.git
git push origin production
Zazwyczaj pracuję w' działającej ' gałęzi i używam Githuba jako swojego mistrza.
Zakładając, że tak jest w przypadku ciebie, twój workflow wdrożenia prawdopodobnie wyglądałby coś like:
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-21 20:44:39
To wyjaśnia wszystko, co musisz wiedzieć, jeśli twój początkujący jak ja: http://devcenter.heroku.com/articles/multiple-environments
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-05 07:59:38
Kluczową częścią pierwotnego pytania jest połączenie aplikacji staging z subdomeną (dev.myapp.com) głównej aplikacji (www.myapp.com). to nie zostało omówione w żadnej z odpowiedzi.
Krok 1: Skonfiguruj zarówno wersje produkcyjne ('myapp'), jak i staging ('staging-myapp') aplikacji, zgodnie z odpowiedzią Luke ' a Bayesa
GoDaddy):Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Krok 3: Skonfiguruj Heroku do trasy dev.myapp.com na staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
Po tym, jak rekord CNAME będzie miał czas na rozpropagowanie, będziesz mógł uruchomić aplikację staging na dev.myapp.com.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-01 07:42:08
Powinieneś sprawdzić heroku_san
Całkiem nieźle żongluje z otoczeniem na heroku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-29 13:08:36
Teraz jest łatwiej. Oto jak to zrobisz...
Tworzenie aplikacji dla każdego środowiska
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Spowoduje to utworzenie nazwanych zdalnych repo dla każdej aplikacji, które można zobaczyć w .git/config
.
Możesz teraz użyć przełączników --app lub --remote, aby wybrać konkretną aplikację:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Set rails environments
W przypadku aplikacji Rails, Heroku domyślnie jest środowiskiem "produkcyjnym" . Jeśli chcesz, aby aplikacja inscenizacyjna działała w aplikacji inscenizacyjnej środowisko, Utwórz środowisko w swoim projekcie i ustaw odpowiednie zmienne środowiskowe RAILS_ENV i RAKE_ENV w aplikacji:$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Konfiguracja środowisk
Jeśli masz inne zmienne konfiguracyjne, musisz je również przekazać dla każdego środowiska.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
To ogromny ból, więc używam mojego snappconfig gem and run
$ rake heroku:config:load[myapp-staging]
Aby załadować pliki konfiguracyjne YAML mojego projektu do Heroku.
Teraz wciskasz do Heroku tak:
$ git push staging master
$ git push production master
I migrować tak:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
Aby uzyskać więcej informacji i skrótów, Zobacz zarządzanie wieloma środowiskami dla App | Heroku Dev Center.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-27 14:05:52