Heroku krok po kroku

Zaczynamy od zarejestrowania się w Heroku: zakładka Sign up, wybieramy „free plan” Blossom (do 20 Mb).

Do tworzenia aplikacji na Heroku będziemy potrzebować gemów heroku oraz taps

sudo gem install heroku taps

Przykładowa aplikacja do wdrożenia

Generujemy szkielet aplikacji:

rails jokes

Tworzymy model i migrujemy:

script/generate scaffold joke body:text
rake db:migrate

Wszystkie gemy z których korzysta aplikacja wpisujemy do „gem manifest file” o nazwie .gems. Dla przykładu:

acts-as-taggable-on --version '=1.1.6'

Gem ten dopisujemy też do pliku config/environment.rb:

config.gem "acts-as-taggable-on", :version => '=1.1.6'

Wdrażamy Jokes na Heroku

W katalogu root aplikacji tworzymy repozytorium gita:

git init
git add .
git commit -m "pierwsza wrzutka"

Następnie wykonujemy polecenie:

heroku create jokes
Enter your Heroku credentials.
Email: matwb@univ.gda.pl
Password:
Uploading ssh public key /home/wbzyl/.ssh/id_rsa.pub
Creating jokes.... done!
Created http://jokes.heroku.com/ | git@heroku.com:jokes.git
Git remote heroku added

Może się zdarzyć, że na Heroku działa już aplikacja o nazwie jokes. Wtedy wypisany zostanie taki komunikat:

heroku create jokes
!   Name is already taken

W takim wypadku musimy wymyśleć nową unikalną nazwę dla naszej aplikacji.

Dalej postępujemy tak:

git push heroku master
Counting objects: 89, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (76/76), done.
Writing objects: 100% (89/89), 84.57 KiB, done.
Total 89 (delta 10), reused 0 (delta 0)

-----> Heroku receiving push
-----> Rails app detected
       Compiled slug size is 80K
-----> Launching...... done
       http://jokes.heroku.com deployed to Heroku

To git@heroku.com:jokes.git
 * [new branch]      master -> master

Pozostaje tylko migracja:

heroku rake db:migrate

i już możemy wejść na stronę główną aplikacji:

http://jokes.heroku.com

Konsola na Heroku

Zaczynamy od:

heroku help

Następnie

heroku console
Joke.all
exit

Ograniczenia „cloud computing”

Ograniczenia są opiane w Application Constraints.

The following types of behaviors are not supported:

Rejestrujemy domenę

Na az.pl możemy zarejestrować jedną domenę PL za darmo.

Ja zarejestrowałem na az.pl domenę bzyl.pl. Panel Konfiguracyjny.

Custom Domains adds-on

Co należy zrobić aby adres http://jokes.bzyl.pl był aliasem adresu http://jokes.heroku.com.

Cytat z Heroku z moimi uri:

Set up your domain with your registrar, then select the subdomain that you wish to point at your Heroku app. This could be something like jokes.bzyl.pl, or the standard www.bzyl.pl. CNAME support is only valid for hosts, not the root domain. If you need to setup bzyl.pl, you must use the setup in the next section.

Configure your DNS provider to make your chosen custom domain name be an alias which points to proxy.heroku.com. In DNS terms this is known as a CNAME.

Check that your DNS is configured correctly with the host command:

host www.bzyl.pl

www.bzyl.pl is an alias for proxy.heroku.com.
proxy.heroku.com has address 174.129.212.2
proxy.heroku.com has address 75.101.145.87
proxy.heroku.com has address 75.101.163.44

Output of the host command varies by Unix flavor, but it should indicate that your domain name is either an alias or CNAME of proxy.heroku.com.

Root domain: bzyl.pl

Root domains must use A records. Only your root domain (wbzyl.pl) may use A records.

Pozsotałe kroki są opisane w Custom domain names.

Custom domains

Zaczynamy od zainstalowania dodatku:

heroku addons:add "custom domains"  # chyba niepotrzebne? sprawdzić
heroku domains:add www.bzyl.pl
  => Added www.bzyl.pl as a custom domain name to jokes.heroku.com
heroku domains:add bzyl.pl
  => Added bzyl.pl as a custom domain name to jokes.heroku.com

Teraz:

host bzyl.pl

Powinno dać po chwili (po godzinie?) coś takiego:

bzyl.pl has address 174.129.212.2
bzyl.pl has address 75.101.163.44
bzyl.pl has address 75.101.145.87

Emaile via własne konto na Gmailu

Ale tylko do 200 emaili/dzień.

Zob. http://mail.google.com/support/bin/answer.py?hl=en&answer=13287

# Configure your client to match the settings below:
Incoming Mail (POP3) Server - requires SSL:     pop.gmail.com
Use SSL: Yes
Port: 995
Outgoing Mail (SMTP) Server - requires TLS or SSL:  smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465
Account Name:   your full email address (including @gmail.com or @your_domain.com)
Email Address:  your email address (username@gmail.com or username@your_domain.com)
Password:   your Gmail password

Unless you're using recent mode to download mail to multiple clients, make sure you've opted not to leave messages on the server. Your Gmail settings determine whether or not messages stay on the server, so this setting in your client won't affect how Gmail handles your mail.

Please note that if your client does not support SMTP authentication, you won't be able to send mail through your client using your Gmail address.

Also, if you're having trouble sending mail but you've confirmed that encyrption is active for SMTP in your mail client, try to configure your SMTP server on a different port: 465 or 587.

Zob. konfigurowanie MX: http://www.google.com/support/a/bin/answer.py?answer=33915

Po konfiguracji MX wykonanie polecenia:

host bzyl.pl

Powinno dać (po godzinie?) coś takiego::

...
bzyl.pl mail is handled by 10 ASPMX2.GOOGLEMAIL.COM.
bzyl.pl mail is handled by 5 ALT2.ASPMX.L.GOOGLE.COM.
bzyl.pl mail is handled by 10 ASPMX4.GOOGLEMAIL.COM.
bzyl.pl mail is handled by 5 ALT1.ASPMX.L.GOOGLE.COM.
bzyl.pl mail is handled by 1 ASPMX.L.GOOGLE.COM.
bzyl.pl mail is handled by 10 ASPMX5.GOOGLEMAIL.COM.
bzyl.pl mail is handled by 10 ASPMX3.GOOGLEMAIL.COM.