Stap 12: Implementeren naar de Cloud met behulp van Heroku
Nu dat Home Alert in ontwikkeling werkt, laten we het werkend op de wolk. Er zijn talloze opties beschikbaar voor het implementeren van webapplicaties. Op basis van de omvang en de complexiteit van Home Alert, besloot ik dat mijn eigen virtuele privé server opzetten niet de moeite waard is. In plaats daarvan, is het beter om te gaan voor een dienst als Heroku, een toepassing host. Voor mijn schaal, is Heroku de gratis tier is meer dan genoeg. Zelfs voor de Redis component was ik in staat een gratis plan om uit te kiezen een van de vele Redis providers die met Heroku werken.
Toch is er een beetje moeite betrokken, dat heeft te maken met het krijgen van mijn licht gewijzigd zodat het aan de specificaties van de Heroku van voldoen kan toepassing. De details zijn hier, maar in wezen u moet deze bestanden toevoegen aan uw Sinatra-project (alle bestanden die volgen kan worden gedownload van mijn Github account):
config.ru: het vertelt Heroku welk bestand bevat de toepassing. Hier is de inhoud:
vereisen '. / web'
uitvoeren van Sinatra::Application
De eerste regel verwijst naar web.rb, en de tweede regel eigenlijk uitvoert uw toepassing.
Gemfile: het bevat de Gems (Robijnrode code pakketten) die door de toepassing vereist zijn. Heroku ziet er binnen dit bestand om erachter te komen wat andere code installeren moet, zodat uw toepassing werkt. Een andere manier te kijken naar Gemfile is dat bevat een lijst met afhankelijkheden voor uw project. Als om het even welk van deze afhankelijkheden niet beschikbaar zijn, zal uw toepassing niet werkt. Hier is wat er binnen de Gemfile voor dit app:
Bron "https://rubygems.org"
ruby "2.1.1"
Gem 'sinatra'
Gem 'puma'
Gem 'redis'
Eerst, stelt het de broncode repository van alle Gem code rubygems.org. Vervolgens moet het dat de Ruby versie 2.1.1 is gebruikt de toepassing uit te voeren. Dan de vereiste edelstenen worden: Redis Sinatra en Puma (een groot Ruby web application server).
Procfile: het Heroku vertelt hoe opstarten uw server. Er is slechts één lijn hier:
Web: rackup -s puma -p $PORT
Deze regel zegt dat "web" de enige soort van de dienst vereist is (u zou kunnen hebben anderen, zoals "werknemer", voor achtergrondverwerking), en dat de service Heroku starten met de opdracht die wordt geleverd na de ":".
U kunt simuleren wat Heroku gaat doen door deze volgorde te volgen op uw ontwikkelingsmachine (alleen de proef voor de pijl van het type; wat volgt de pijl is alleen een beschrijving van de opdracht):
$> gem install bundler — > installeert Bundler, die hoe hij weet moet omgaan met de Gemfile.
$> bundel installeren — > Bundler verwerkt Gemfile en installeert van afhankelijkheden.
$> rackup config.ru — > Rackup is een tool die het config.ru-bestand kan verwerken. Het komt normaal met de latere versie van Ruby, als dit niet gebeurt ' Installeer het als volgt: gem install rek.
De laatste stap leidt tot de daadwerkelijk lancering van uw applicatie. U ziet de exacte dezelfde output als toen je begon met ruby web.rb eerder. Het is de zelfde toepassing die wordt uitgevoerd, alleen met het verschil dat de tweede methode is hoe Heroku begint het.
We zijn bijna klaar om het implementeren van deze toepassing op uw Heroku account. Als u nog een, ga je gang en Maak een nu. Volg de quickstart gids voor het opzetten van uw account en uw machine van de plaatselijke ontwikkeling, en met name de Heroku Toolbelt.
De Heroku Toolbelt installeert de Heroku command line client, Git (de open source bron code management systeem) en Foreman (een Ruby tool die helpt bij het beheren van de Procfile gebaseerde toepassingen).
Zodra u de installatie van de Heroku Toolbelt Volg de instructies op de website van de Heroku voltooid, volg deze stappen om uw applicatie geïmplementeerd (alles is getypt in de command line, binnen de app folder):
$> heroku login — > Meld u aan bij Heroku via de opdrachtregel
$> git init — > initialiseren van een Git repository voor uw toepassing
$> git toevoegen. — > (merk op de stip!) Alle bestanden in de huidige map toevoegen aan het Git repository
$> git plegen -m "init" — > commit uitvoeren voor deze bestanden in de repository, met een nieuw bericht
$> heroku maken -> Maak een nieuwe app op Heroku. Heroku zal uw app Geef een willekeurige naam, iets als "blazing-galaxy-997". Toon waas naar de naam en de URL zodat kunt u het via uw webbrowser later. Deze URL zal er zo uitzien: "http://blazing-galaxy-997.herokuapp.com/". U moet ook de hostnaam (het "blazing-galaxy-997.herokuapp.com" gedeelte) van uw hernieuwde aanvraag kopiëren naar de constante van de WEBSITE van uw Arduino schets. Doe dit nu zodat u later niet vergeten.
$> heroku addons: Voeg toe rediscloud — > voegt de gratis laag van de Rediscloud Redis-service aan uw toepassing. Configuratie-instellingen worden automatisch gemaakt en beschikbaar gesteld aan uw toepassing.
$> git push heroku meester — > uw code implementeren op Heroku. Dit zal automatisch overbrengen van de code, opstelling van eventuele afhankelijkheden op Heroku, en start de toepassing. Aan het einde van het proces, ziet u zoiets als dit: "http://blazing-galaxy-997.herokuapp.com geïmplementeerd op Heroku", wat betekent dat uw toepassing nu is live op de openbare Cloud! Gefeliciteerd!
Ga je gang, geef het een spin!