Odată, era un dosar. A fost pe calculatorul tău și ai vrut să o primești pe un server.
Te-ai întrebat vreodată de ce există atât de multe modalități de a face asta? Vom explica câteva dintre elementele de bază ale implementării în acest articol, astfel încât să înțelegeți când să utilizați ce. Să începem!
FTP sau Protocolul de transfer de fișiere, este considerat de mulți oameni ca fiind calea vechei școli de a "pune un site în sus". Este un protocol, care în principiu înseamnă că există un set de reguli pe care atât computerul local cât și mașina gazdă sunt de acord și pot trimite mesaje prin intermediul acestuia. FTP nu este un "program", în sine, ci mai degrabă o linie telefonică.
Deci, dacă FTP este o linie telefonică de școală veche (care funcționează încă bine), SFTP este ca o rețea 4G
Acesta oferă un nou protocol pentru cele două mașini de a vorbi (nu că este în mod necesar mai rapid, totuși). SFTP este alimentat de SSH, care criptează în esență mesajele care sunt transmise între cele două mașini; astfel încât orice rețea răuvoitoare terță parte sau de neîncredere nu poate ține cont de datele dvs. brute în timpul transferului.
Dacă nu ați reușit acest lucru, FTP și SFTP sunt ambele protocoale de transfer de fișiere. Cu toate acestea, SFTP (și alte protocoale de transfer bazate pe SSH) transferă fișiere și criptează transferul. "Nu am nevoie de criptare", puteți spune. Mulți oameni cred în același fel; cu toate acestea, dezvoltatorii cu gândire înainte și instrumentele moderne se vor baza pe metode mai sigure. Ați auzit-o înainte - Mai bine în siguranță decât îmi pare rău.
Dar nu mă simt ca să trec prin necazuri.
Mai întâi de toate, dacă asta e treaba ta, suge-o. Puteți fie să vă lipiți de zona dvs. de confort (știți că FTP funcționează în continuare, la fel ca telefonul terestru). Dar nu vrei să te faci mai bine? La urma urmei, de asta ești aici, corect?
Acum, dacă sunteți încă un pic leneș, dar ca ideea de adoptare ușoară, puteți folosi SFTP cu aproape orice client FTP acolo. E mai sigur. Asigurați-vă că serverul acceptă SSH (portul 22, de obicei, trebuie să fie deschis) și ar trebui să fiți bine să mergeți. Dar punctul din acest articol nu este să te gândești la criptare și la transferul de securitate; este să vă gândiți la o strategie de implementare mai robustă.
"Dar nu mă simt ca să trec prin necazuri ..." ... dacă asta e treaba ta, suge-o
Dacă ați fost în curs de dezvoltare pentru un timp, ați trecut probabil prin exercițiul de creare a unui site și trăgând și lăsând în mod constant fișierele dvs. pe clientul dvs. FTP (sau dublu-clic, sau apăsând "sincronizare", sau ...). Acest este din punct de vedere tehnic, o strategie de implementare, deși nu este una foarte robustă. Desigur, de multe ori acest tip de strategie va funcționa bine, mai ales dacă sunteți singura persoană care va atinge vreodată fișierele și nu ați suprascris niciodată magie nici un fișier important. Dar, din nou, ești aici să te faci bine, nu? Și tu ești un magician.
Implementare, în forma sa cea mai simplă, ia ceva cod și face codul "live". Transferând un index.html
fișier în directorul de serviciu, pe care îl desfășurați. De fapt, la sfârșitul zilei, toate strategiile de implementare (cu excepția cazului în care utilizați un sistem de aplicații compilate) mută în esență fișiere sau versiuni ale fișierelor în "directorul curent de lucru" sau le modificați pe cele deja existente. De exemplu, puteți face schimbări la fel index.html
fișier direct de pe server, și care ar "efectiv" implementa aceste modificări publicului. Dar desfășurarea poate fi mult mai multă.
Echipa dvs. a creat vreodată un sistem care să vă impună să notificați pe toată lumea când ați împins un fișier pe server prin FTP? Sau poate trebuie să reporniți un server Django sau Rails după schimbarea codului. Dacă faceți acest lucru ca parte a rutinei de a face site-ul dvs. să reflecte modificările pe care le-ați făcut, aceasta face parte din procesul dvs. de desfășurare.
Deci, dacă implementarea înseamnă să facem un set de cod și fișiere în direct, cum poate fi mult mai mult decât SFTP? "Ce este Git și de ce ar trebui să vă pasă?" vă întrebați. Git este un sistem de control al versiunii sau un VCS. Este unul dintre numeroasele VCS-uri pe care le-am ales cu nerușinare ca fiind preferatul nostru. Vom explica de ce mai târziu, dar mai întâi să vorbim ce este.
Sistemele de control al versiunilor îndeplinesc o mulțime de sarcini, dar cel mai important este furnizarea unei rețele de siguranță dezvoltatorilor - în special a echipelor de dezvoltare. Am menționat mai devreme cum FTP și SFTP pot fi perfect fine dacă sunteți perfect și nu veți suprascrie niciodată un fișier sau nu ștergeți un dosar important neintenționat. Dar dacă nu ați făcut încă acest lucru, nu vă faceți griji - se va întâmpla mai devreme sau mai târziu. Este aproape sigur că sa întâmplat cu echipa dvs. dacă nu ați dat seama de un sistem de soluționare. Dar chiar și aceste sisteme de soluționare sunt o durere. De exemplu, directorul dvs. CSS a apărut vreodată așa?
Dacă da, țineți versiuni de foi de stiluri pe care le vei face în cele din urmă îmbina împreună. De altfel, Git face acest lucru, dar o face mult mai bine, mai repede și mai robust decât puteți singur. Aveți un fișier CSS diferit de fiecare dată când efectuați câteva modificări? Doar în cazul în care doriți să vă întoarceți la exact cum a fost dosarul la un moment dat? Bineînțeles că nu. Dar Git va face exact asta pentru tine, iar tu nu ai mizerie de fișiere împrăștiate și sisteme obscure de numire peste tot. Dincolo de asta, Git este suficient de inteligent pentru a ști cum să te iei styles.css
fișier și îmbinarea cu Mary sau cu John styles.css
fişier. Mai mult, versiunile lui Git sunt nu fișiere întregi; în schimb, ele sunt stocate în delte, care este, în esență, o reprezentare a codului la nivel scăzut al diferențelor dintre un fișier și altul. Aceasta înseamnă că versiunile diferite sunt mult mai mici și mult mai rapide pentru a le transfera atunci când vine momentul să le desfășoare.
Dar nimic din toate astea nu are nimic de-a face cu implementarea, tu spui? Ai dreptate, sistemele de control al versiunilor fac în mare măsură ceea ce sugerează numele lor: păstrați versiunile în ordine. Dar, ei au, de asemenea, capacitatea de a comunica prin diferitele protocoale discutate anterior. Git poate citi prin HTTP și poate citi și scrie prin SSH. (Citiți mai multe despre protocoalele de transfer aici.)
Deci, dacă Git are aceste conexiuni directe prin intermediul protocoalelor de transfer, puteți împinge versiuni înainte și înapoi cu echipa dvs. printr-un server local, GitHub sau propriul server live. Și așa se potrivește Git în desfășurare. Îți împingi codul, Mary și John își împing codul, apoi cine se ocupă de implementarea în echipa ta se va conecta la server și va îmbina codul în mediul live. Git oferă posibilitatea de a avea mai multe destinații și ramuri de cod pentru a împinge diferite versiuni în locuri diferite. O practică obișnuită constă în a avea un server "staging", în care codul este împins pentru a fi verificat într-un mediu live pe un domeniu privat de dezvoltare. Un alt flux de lucru posibil este să nu conectați niciodată depozitele locale ale echipei dvs. la depozitul live și, în schimb, să permiteți doar mașinii de staționare posibilitatea de a împinge la serverul live. Acest lucru creează un sistem de examinare care nu poate fi omis.
Diferitele versiuni sunt mult mai mici și mult mai rapide pentru a le transfera, când vine momentul să le desfășoare.
Dincolo de stadializare, ramuri, destinații multiple de desfășurare și control robust al versiunilor, Git oferă cârlige, cum ar fi "post-recepție", care poate efectua orice fel de acțiune pe care o puteți arunca împreună. Poate doriți o ramură "spider", unde când codul ajunge la un punct de pe serverul dvs., postul recepționează acest cod în mai multe locații (de la distanță sau altfel). Chiar și mai mult, utilizarea unei platforme ca GitHub oferă o interfață grafică excelentă pentru crearea de cârlige. Spuneți cu ușurință GitHub să vă trimită e-mailuri (sau dacă sunteți creativ, conectați o notificare Growl) de fiecare dată când primiți un impuls de la un membru al echipei, de exemplu.
Există literalmente mii de modalități de a dezvolta o strategie de implementare cu Git. Puteți vedea rapid că utilizarea unui VCS pentru implementare oferă câteva avantaje, protecție și putere foarte mari pentru implementarea dvs. Odată ce ați luat timp să aflați suficient despre Git pentru a obține un flux de lucru (și faceți câteva greșeli cu acesta), procesul dvs. de dezvoltare va beneficia foarte mult.
Următoarele comenzi vor configura un depozit pe o mașină de la distanță, vor configura un depozit pe mașina dvs. locală, vor adăuga depozitul la distanță ca "origine", vor finaliza o filială numită "mybranch" care va fi fuzionată pe server, va împinge "mybranch" la distanță, "origine", și în cele din urmă se loghează înapoi pe server pentru a fuziona "mybranch" cu ramura implicită "master".
local> ssh username@remotemachine.com de la distanță> calea cd / la / proiectul remote / path / to / project> git init remote / path / to / project> exit local> calea cd / / local / project> git init local / cale / la / local / proiect> git add. local / path / to / local / project> git commit -m "inițial comite" local / path / to / local / project> git comanda mybranch local / path / to / local / project> git remote add origin username@remotemachine.com : calea / spre / proiectul local / calea / la / local / proiectul> git push origine mybranch local / path / to / proiect> git merge mybranch
Dincolo de crearea propriului flux de lucru Git și integrarea în propriul server, puteți utiliza și alte servicii gratuite, cum ar fi Heroku ;. Heroku este o soluție de găzduire care vă permite să rulați câteva linii de la aplicația dvs. Git controlată și să o deplasați la "cloud" (în acest caz, un cluster de servere Linux) la Git cu aproape nici un efort. Luați câteva minute pentru a obține câteva lucruri configurate și sunteți plecați la curse cu doar câteva rânduri de cod pentru o implementare simplă. Serios, se pare ceva de genul asta.
# face unele lucruri, păstrează versiunea controlată cu Git ... apoi> heroku create - cedar stack # cedrul de stocare vă permite în principiu să creați mai multe tipuri de aplicații, inclusiv PHP și Node # ... Heroku vă va spune că crea lucruri , atunci vă va spune că a adăugat o distanță de la heroku la git repo> git push master heroku # și asta este! Deschideți aplicația implementată în browserul dvs.> heroku deschis
Alte instrumente similare includ Pagoda Box, care se concentrează pe arhitecturi bazate pe LAMP, și AppFog și PHPFog, care sunt foarte asemănătoare cu Heroku.
Atâta timp cât nu există nici o eroare în configurația dvs. și ați respectat instrucțiunile din partea Heroku privind modul de configurare a aplicațiilor, puteți să lansați aplicațiile Rails, PHP sau Node în câteva momente. Și am menționat că poți să faci gratuit aplicații gratuite pentru Heroku? Nu este până când faceți upgrade la mai multe instanțe sau memorie, sau trebuie să adăugați o bază de date, pe care o suportați de la Heroku. Alte instrumente similare includ Pagoda Box, care se concentrează pe arhitecturi bazate pe LAMP, și AppFog și PHPFog, care sunt foarte asemănătoare cu Heroku. Aceste opțiuni oferă servicii similare și integrare Git, cu structuri diferite de stabilire a prețurilor. Toate cele trei oferă o opțiune gratuită pentru o putere limitată a serverului. Acestea sunt în mod clar avantaje mari, deoarece necesită mult timp pentru a obține propriul server cu mai multe arhitecturi de aplicații implicate, cum ar fi Rails sau Node. Dincolo de aceasta, scalarea devine foarte simplă, deoarece toate cele trei servicii oferă echilibrarea încărcării și scalarea la mai multe instanțe la apăsarea unui buton. Aceste servicii au grijă de administrarea serioasă a serverului pentru dvs., astfel încât să vă puteți concentra pe crearea de aplicații, știind că există o strategie bine documentată, sigură și rapidă de implementare pe care să o utilizați atunci când sunteți gata să faceți publicitate.
Sperăm că acest articol a eliminat unele confuzii cu privire la diferențele dintre Git (și alte VCS) și FTP / SFTP și ceea ce înseamnă conceptul de implementare. De asemenea, sper că acest lucru v-a încurajat să vă dezvoltați propria strategie de implementare, cu ajutorul instrumentelor, cum ar fi Git și Heroku. Dacă aveți deja o strategie, ce fel de lucruri faceți în timpul desfășurării?