Mega-tutorial balon, partea 18 desfășurarea pe nor heroku, teren web

Mega-tutorial balon, partea 18 desfășurarea pe nor heroku, teren web

În articolul precedent am considerat o variantă de hosting tradițional. Am văzut două exemple reale de găzduire pe serverele Linux, mai întâi pe un server obișnuit care rulează CentOS, apoi pe un minipomputer Raspberry Pi. Acei cititori care nu au administrat sistemele Linux mai devreme, probabil au decis că este nevoie de prea mult efort și ar putea fi implementate oarecum mai ușor.

Astăzi vom vedea dacă implementarea este "în nor" o soluție la problema complexității inutile a procesului.

Dar ce inseamna sa se "implementeze in nor"?

Furnizorii de cloud hosting oferă o platformă pe care poate fi lansată aplicația noastră. Tot ceea ce este necesar de la dezvoltator este să furnizeze aplicația și toate celelalte, inclusiv hardware-ul serverului, sistemul de operare, interpretul de limbă și baza de date preia serviciul.

Sună prea bine pentru a fi adevărat, nu-i așa?

Vom analiza implementarea aplicației pe platforma Heroku. una dintre cele mai populare platforme de găzduire în cloud. Am ales Heroku nu numai din cauza popularității sale, dar și datorită faptului că oferă un nivel gratuit de servicii, așa că vom implementa aplicația noastră fără a cheltui un cent. Dacă doriți să aflați mai multe despre acest tip de serviciu și despre ce oferă alți furnizori, puteți citi pagina Wikipedia pe site-ul PaaS.

Gazduieste pe Heroku


Heroku a fost una dintre primele platforme de furnizare a serviciilor PaaS. La început, a oferit servicii de găzduire numai pentru aplicațiile Ruby, dar mai târziu a fost adăugat suport pentru multe alte limbi, cum ar fi Java, Node.js și Python-ul nostru favorit.

De fapt, pentru a implementa o aplicație pentru Heroku, trebuie doar să descărcați aplicația cu git (veți vedea cum funcționează foarte curând). Heroku caută fișierul Procfile în rădăcina aplicației pentru a obține instrucțiuni despre modul în care ar trebui executată aplicația. Pentru proiectele Python, Heroku se așteaptă de asemenea să vadă fișierul requirements.txt care conține o listă de pachete terțe necesare.

După descărcarea aplicației, puteți presupune că tranzacția este încheiată. Heroku va folosi magia și aplicația va fi disponibilă online într-o chestiune de secunde. Valoarea contului la sfârșitul perioadei depinde în mod direct de puterea de calcul consumată a aplicației dvs., prin urmare, cu cât mai mulți utilizatori au cererea dvs., cu atât mai mult va trebui să plătiți.

Ești gata să-l cunoști pe Heroku? Să începem!

Instalarea clientului Heroku


În ciuda faptului că unele sarcini pot fi efectuate direct de pe interfața web, există sarcini care pot fi rezolvate numai de la terminal, așa că vom face totul în consola.

Heroku oferă utilitarul "client Heroku", pe care îl vom folosi pentru a crea și administra aplicația noastră. Acest utilitar poate fi lansat sub Windows, Mac OS X și Linux. Dacă setul de instrumente Heroku este disponibil pentru platforma dvs. atunci aceasta este cea mai ușoară cale de a instala un client Heroku.

Pe lângă setările adresei URL, această comandă adaugă depozitul nostru de la distanță (git remote) la depozitul nostru, pe care îl vom folosi curând pentru a descărca codul aplicației în cloud.

Excludeți stocarea locală a fișierelor


Unele funcții ale aplicației noastre stochează informații sub formă de fișiere de pe disc.

Și aici ne confruntăm cu o sarcină dificilă. Aplicațiile care rulează pe Heroku, nu a fost încă de stocare permanentă a fișierelor de pe disc, t. Pentru a. Heroku foloseste o platforma de virtualizare care nu stochează datele într-un fișier, sistemul de fișiere eliminate toate fișierele cu excepția fișierelor de aplicație direct, de fiecare dată când porniți instanța. Strict vorbind, aplicația poate stoca fișiere temporare pe disc, dar ar trebui să poată recupera aceste fișiere dacă acestea dispar. În plus, dacă rulează două instanțe, fiecare utilizează propriul sistem de fișiere virtuale și nu există posibilitatea de a împărți fișierele între ele.

Aceasta este o veste foarte neplăcută pentru noi. Pentru început, aceasta înseamnă că nu vom putea folosi sqlite ca bază de date.

Căutarea noastră de text full-text Whoosh va înceta de asemenea să lucreze, deoarece stochează datele sale ca fișiere.

Al treilea punct problematic este sistemul nostru de logare. Am salvat jurnalul în dosarul / tmp și acum, când lucrăm la Heroku, acest lucru va înceta de asemenea să lucreze.

Deci, am identificat 3 probleme principale pentru care trebuie să căutăm soluții.

Prima problemă pe care o vom rezolva prin migrarea către baza de date oferită de Heroku, bazată pe PostgreSQL.

Pentru funcționarea căutării full-text, nu avem o alternativă gata făcută. Va trebui să implementăm căutarea full-text folosind funcționalitatea PostgreSQL, dar acest lucru va necesita modificări în aplicația noastră. Bineînțeles că este un păcat, dar soluția la această problemă ne-ar duce acum departe de subiectul articolului, așa că pentru postarea pe Heroku, vom opri doar căutarea full-text.

În cele din urmă, t. Pentru a. Nu putem scrie jurnalele noastre, vom adăuga jurnalele noastre la sistemul de logare utilizat Heroku, care, întâmplător, este foarte ușor de utilizat, t. Pentru a. Trimite un jurnal tot ceea ce este afișat la stdout.

Crearea bazei de date Heroku


Pentru a crea o bază de date, folosim clientul Heroku:

$ heroku rula init

Rularea `init` atașată la terminal. în sus. rula. 7671

/ app /. heroku / python / lib / python2. 7 / site-uri - pachete / sqlalchemy / motor / url. py. 105.Prevenirea de avertizare. Diagrama SQLAlchemy PostgreSQL a fost redenumită de la postgres la postgresql. Noul format URL este postgresql [+ driver]. / / . @ /

modul = __import__ ('sqlalchemy.dialects.% s'% (dialect.)). dialecte

compilarea catalogului 'app / translations / es / LC_MESSAGES / messages.po' către 'app / translations / es / LC_MESSAGES / messages.mo'

Avertismentul aparține SQLAlchemy, deoarece nu-i plac URI-urile începând cu postgres: // în loc de postgresql: //. Acest URI formează Heroku prin valoarea variabilei de mediu $ DATABASE_URL, deci nu este în puterea noastră să o schimbăm. Rămâne să sperăm că acest format URI va funcționa mult timp.

Actualizați aplicația


Mai devreme sau mai târziu, este timpul să ne actualizăm aplicația. Acest lucru se va întâmpla ca o desfășurare inițială. În primul rând, aplicația va fi încărcată pe server folosind git:

Lucruri precum un sir de apeluri și alte erori de aplicare, toată lumea va fi în acest jurnal.


Acum avem o idee de a implementa o aplicație pe o platformă cloud și, prin urmare, putem compara acest tip de hosting cu opțiunea de găzduire tradițională.

În ceea ce privește simplitatea, victoria asupra noriilor. Cel puțin pentru Heroku, procesul de implementare a aplicației a fost foarte simplu. Când a fost trimis la un server dedicat sau VPS, a fost necesar să se efectueze o mulțime de lucrări pregătitoare. Heroku are grijă de acest lucru și ne permite să ne concentrăm asupra aplicației noastre.

Problema valorii este o problemă controversată. Costul serviciilor de găzduire în cloud este de obicei mai scump decât serverele dedicate, deoarece plătiți nu numai pentru server, ci și pentru servicii de administrare. Un plan tarifar tipic Heroku, care include două instanțe și cea mai ieftină bază de date de producție, va costa 85 USD (la momentul redactării acestor linii). Pe de altă parte, dacă arăți bine, puteți alege destul de bine un VPS decent

În cele din urmă, mi se pare că problema alegerii va fi redusă la alegerea a ceea ce este mai important pentru dvs.: timp sau bani.


Aplicația actualizată este disponibilă, ca întotdeauna, pe github. Sau îl puteți descărca ca arhivă zip din link-ul:

Odată cu implementarea aplicației noastre în toate modurile posibile, se pare că abaterea noastră se apropie de final.

Sper că aceste articole au fost o introducere utilă în dezvoltarea unei aplicații web reale și că cunoștințele pe care le-am vărsat pe tine pentru aceste 18 articole te motivează să-ți creezi propriul proiect.

Cu toate acestea, eu nu pun un punct, și nu neagă probabilitatea de articole despre microblog. Dacă și când va veni un subiect interesant, voi scrie mai multe, dar mă aștept ca rata de actualizare să scadă acum oarecum. Din când în când, pot face unele remedii minore în aplicație care nu merită un articol separat pe blog, astfel încât să puteți urmări aceste modificări pe GitHub.

Vă mulțumim, încă o dată, că ați fost un cititor loial.

Distribuiți acest link:

Articole similare