Acest articol vă va ajuta să navigați prin cloud hosting pentru aplicația dvs. PHP cu Pagoda Box. Acesta va detalia modul în care să se ocupe de dependențele PHP, să vă executați și să executați bazele de date MySQL (și să depanați la nivel local) și să personalizați cu ușurință diverse aspecte ale PHP.
Ca dezvoltator care a jucat cu PHP de la vârsta de 11 ani, este greu să-mi amintesc multe lucruri care au schimbat absolut modul în care dezvolt. În 2007, am preluat CodeIgniter, ceea ce ma făcut să regândesc cum îmi structurez codul și folosesc OOP pentru a face lucrurile. În 2010, am început să lucrez cu Git și Git Flow pentru lucrul în echipă și ramificarea, dar, recent, cel mai important lucru pentru a-mi schimba fluxul de lucru pentru dezvoltare a fost o "Platformă ca serviciu" numită Pagoda Box.
S-ar putea să fiți un dezvoltator de rockstar care știe cum să înființeze un stivuitor LAMP, dar cât de mult din timpul dvs. de dezvoltare potențial îl pierdeți instalându-l, optimizându-l, securizând lucrurile, blocând-o, diminuând resursele și monitorizând traficul.
În fiecare zi, observ un dezvoltator care se luptă pentru a-și apăra serverul de la un grup de hackeri sau copii de scenariu, de a avea un port inundat, de a avea probleme cu achiziționarea unui patch de securitate aleatoriu, de a se deplasa la servere mai mari și mai puternice, de a încerca să înființeze Capistrano , lista continuă. Servicii cum ar fi Pagoda Box vă pot ajuta să renunțați la toate acestea; așa că să vedem cum.
Primul pas este să vă luați un cont. Este gratuit, deci mergeți mai departe.
Fiecare aplicație trebuie să aibă un nume unic, deoarece este folosit și pentru vizualizarea adreselor URL. Puteți să numiți această aplicație indiferent de ce doriți, deoarece în scurt timp o veți ascunde în spatele unui domeniu, însă îl numiți ceva evident și memorabil.
Git este un sistem de management al versiunilor extrem de util. În prezent, este mult mai popular datorită site-urilor precum GitHub care permit găzduirea gratuită a codului social, dar este, de asemenea, minunat pentru implementarea codului.
Dacă sunteți nou la Git, atunci încercați cursul de accident.
Dacă nu ați făcut-o deja, configurați Git. Documentația acestora vă va ajuta să începeți. Utilizatorii de Windows vor găsi un pic mai dificil decât utilizatorii de OSX sau Linux, deci dacă aveți o mașină virtuală a Ubuntu situată în jur, acum ar fi un moment minunat să-l arzi.
Pentru a vă împinge codul în Pagoda Box, trebuie să autorizați computerul să aibă acces la aplicații în cont. Creați o cheie SSH și o lipiți aici.
Mai întâi, configurați un dosar pentru aplicația dvs. și setați telecomenzi Git. Rematele sunt în esență porecle pentru o adresă de repozitori. Prin configurarea acestei telecomenzi, permiteți replicii locale Git să știe cum să împingă codul în Pagoda Box.
$ mkdir my-awesome-app && cd-mi-awesome-app $ git init Git repository goale goale în /Users/phil/Sites/my-awesome-app/.git/ $ git remote add pagoda [email protected] : mi-minunat-app.git
Acum, odată cu realizarea acestui cont și a configurării mediului, putem începe să implementăm codul. Pentru moment, vom implementa o aplicație Hello World simplă:
$ echo ''> index.php
Acesta este un mic truc de linie de comandă pentru a pune un text într-un fișier. Puteți crea alternativ acest fișier cu editorul de text preferat sau IDE.
$ git adăuga index.php $ git comanda -m "OH HAI" [master (root-commit) 6aa23f4] OH HAI 1 fișiere schimbate, 1 inserări (+), 0 ștergeri (-) mode create 100644 index.php
Până acum, am creat un nou dosar pentru site-ul nostru, Git inițializat, a adăugat o telecomandă care îi spune lui Git unde locuiește aplicația Pagoda Box și a adăugat o nouă index.php
fișier, care pur și simplu va spune Salut Lume!
. Următor →:
$ git push Pagoda master Contorizarea obiectelor: 3, terminat. Scrierea obiectelor: 100% (3/3), 244 octeți, terminat. Total 3 (delta 0), refolosit 0 (delta 0) :: Auto deploy enabled pentru 'master' +> pentru schimbare, vizitați https://dashboard.pagodabox.com/apps/my-awesome-app/admin :: Deploying la 6aa23f4 pe master :: Parsing Boxfile :: Executarea implementării +> Submodule init +> Bootare web1.1 - [22-Feb-2012 20:38:41] ANUNȚ: fpm se execută, pid 54 - [22-Feb-2012 20:38:41] ANUNȚ: gata să se ocupe de conexiuni +> Propagarea actualizărilor de rețea :: Curățenie până la [email protected]: my-awesome-app.git * [new branch] master -> master
Aici se petrece magia. Veți împinge la o distanță Git ca orice alt depozit, dar apoi veți vedea ieșirea din Pagoda Box preluând și creând o implementare. Acest lucru va declanșa o nouă instanță de fiecare dată și va trece de la instanța live la această nouă instanță instantaneu, ceea ce înseamnă actualizări imediate - spre deosebire de sistemele de implementare a fișierelor bazate pe FTP lentă. De asemenea, spre deosebire de unele servicii similare, toate fișierele dvs. temporare (memoria cache, jurnalele, încărcările de imagini etc.) vor fi acolo după orice redimensionare sau re-implementare. Minunat!
Acum, dacă actualizați pagina Pagoda Box, veți vedea un Tablou de bord cu tot felul de opțiuni.
Pagoda Box are un fișier special de configurare: Dosar
. Aceasta se află în rădăcina aplicației dvs. Un exemplu avansat poate arăta astfel:
web1: #################################### ## SETARI GENERALE ############################################## ## shared_writable_dirs: [/ system / cms / cache, / system / cms / jurnale, / încărcări, / addons] ########################## ####################### SETURI SPECIFICE WEB ###################### ########################## index_list: [index.php] ################# ############################# PHP SETIFICĂRI SPECIFICE ############## ########################## php_version: 5.3.8 php_extensions: [mysqli, curl, gd, mbstring] php_date_timezone: Europa / Londra php_max_execution_time: 30 php_max_input_time: 60 php_post_max_size: 25M php_file_uploads: În php_upload_max_filesize: 20M php_max_file_uploads: 20
Acest exemplu vă oferă șansa de a crea dosare cu scriere, setați index_list (care este index.php
în mod implicit) și să schimbe tot felul de setări PHP care ar fi în mod normal în php.ini
fişier.
Linia cea mai importantă aici este:
php_extensions: [mysqli, curl, gd, mbstring]
Pagoda Box vă permite să listați dependențele de aplicații. ""mysqli
"driverul este" MySQL Îmbunătățit "pe care ar trebui să-l utilizați, deoarece mysql va fi depreciat în PHP 5.4" curl "și" gd "sunt destul de standard și" mbstring "vă ajută să lucrați cu codul UTF-8.
Este bine să știți că acestea sunt disponibile - împreună cu multe altele - dar pentru acest tutorial vom avea nevoie doar de următoarele:
php_extensions: [pdo, pdo_mysql]
Deci, să facem noul nostru Boxfile și să îl salvăm:
web1: php_extensions: [pdo, pdo_mysql]
Vom folosi mai târziu.
La momentul acestei scrieri, Pagoda Box suportă numai bazele de date MySQL, ceea ce este bine deoarece majoritatea dezvoltatorilor folosesc.
Putem declanșa cât mai multe instanțe de baze de date mici pe care le-am plăcut gratuit; noi începem să plătim doar când devin mai mari, astfel încât să nu vă surprindeți de o factură masivă doar pentru a construi un site web. La fel ca și instanțele web, ele pot fi scalate și pentru a crește cu site-ul dvs. Web.
Pentru a crea unul nou, faceți clic pe + și dați-i un nume. Veți vedea un bara de progres în sus în timp ce se construiește; atunci pagina se va actualiza.
Conectarea prin PHP este un cinch. V-ați dat mai multe $ _SERVER
variabile, care conțin acreditări pentru fiecare bază de date pe care o aveți. Acest lucru înseamnă că puteți păstra parolele codate greu din aplicația dvs. - ceea ce este foarte util dacă nu doriți ca toți dezvoltatorii dvs. să vadă parole live sau dacă aveți site-ul dvs. complet pe GitHub, la fel cum unii încep să facă.
$ db = PDO nou (sprintf ('mysql: host =% s; dbname =% s; port =% s', $ _SERVER ['DB1_HOST'], $ _SERVER ['DB1_NAME' ), $ _SERVER ['DB1_USER'], $ _SERVER ['DB1_PASS']);
Acesta este un exemplu de bază al variabilelor în uz - conectarea la baza de date MySQL prin extensia DOP. Dacă utilizați un cadru, cum ar fi CodeIgniter, puteți împinge aceste variabile în dvs. database.php
fișierele de configurare.
Unele servere web - în special acele setări cPanel run-of-the-mill - au instalat phpMyAdmin și pot fi configurate pentru a permite accesul de la distanță la bazele de date MySQL.
În loc de această abordare, Pagoda Box utilizează Ruby Gem pentru - printre altele - crearea unui tunel SSH temporar securizat. Aceasta înseamnă că bazele dvs. de date MySQL sunt blocate în spatele unui paravan de protecție și sunt accesibile numai prin intermediul acestei conexiuni securizate SSH.
Deci, pentru a instala rula bijuterie:
$ sudo gem instalează pagoda
Apoi pentru a crea tunelul, rulați pur și simplu:
$ pagoda tunel db1
Prima dată când executați această comandă (sau orice altă comandă pagoda gem) trebuie să vi se solicite un nume de utilizator și o parolă. Acesta este numele de utilizator și parola dvs. pentru Pagoda Box și este necesar pentru ca bijuteria să poată acționa în numele dvs. și nu are legătură cu baza dvs. de date.
$ pagoda tunel db1 se pare că este prima dată când ați folosit clientul nostru Nume utilizator: someguy Parola: Tunel stabilit! Acceptarea conexiunilor la: ---------------------------------------------- - HOST: 127.0.0.1 (sau localhost) PORT: 3307 USER: (gasit in tabloul de bord pagodabox) PASS: (gasit in tabloul de bord pagodabox) --------------------- -------------------------- (notă: ctrl-c Pentru a închide acest tunel)
Du-te la tabloul de bord și faceți clic pe baza de date, apoi faceți clic pe "Afișare acreditări" pentru a vedea o fereastră de informații, cum ar fi:
Utilizați aceste acreditări pentru a vă conecta. Nu uitați să specificați portul; acesta este listat în ieșirea de la bijuterie de mai sus - nu caseta verde. Rețineți că vă conectați la tunelul local, nu direct la baza de date.
Ce fel de tutorial ar fi dacă nu ar implica realizarea unui blog în 20 de minute?
Pentru toate dezvoltările, ar trebui să construiți lucruri pe plan local folosind MAMP, XAMPP, WAMP etc., apoi să implementați modificări ale codului și bazei de date folosind un fel de "Migrații" sau lucruri de urmărire a schimbării schemelor, dar vom face acest lucru mod vechi.
Mai întâi conectați-vă la baza de date la distanță prin tunel, apoi executați această interogare pentru a crea o nouă tabelă:
CREATE TABLE posturi ('id' int (11) NOT NULL AUTO_INCREMENT, 'title' varchar (255) NOT NULL, 'slug' varchar (255) NOT NULL, create_at 'int (11) NU NULL,' updated_at 'int (11) NOT NULL, KEY PRIMARY (id)) ENGINE = InnoDB; INSERT IN posturile VALOARE ("1", "Femei care iubesc baietii care folosesc FuelPHP", "femei-iubiti-guys-who-use-fuelphp", "Este un fapt dovedit ca fetele iubesc dezvoltatorii, dar lucrurile nu au fost asa Bineinteles ca fetele iubesc dezvoltatorii, dar lucrurile nu au fost niciodata atat de bune pentru dezvoltatorii PHP. folosind "FuelPHP", a primit 150% mai multe femei în prima lună. "," 1322825332 "," 1322934052 ")," 2 "," Oameni care echivă HTML din aplicații mor mai tânăr " a demonstrat că dezvoltatorii PHP care echo HTML direct fișierele noastre PHP mor mai tânăr, de multe ori se întâmplă în timp ce dezvoltatorul este în birou, în timp ce ei stau la scaunele lor suferă de răni multiple, dar se pare că nu există martori, chiar dacă colegii lor erau în birou \ "refactoring cod rău" "toată ziua.", "Textul corpului important", "1322826479", "1322826479");
Cu ajutorul unor posturi de testare, putem crea acest index.php:
interogare ('SELECT * din mesaje') ca $ row) echo "$ Row [ 'titlu']
"ecou"Postat: ".date ('l jS \ din F Y', $ row ['created_at'])."
";
"; echo $ row ['summary']."
Cu acest fișier salvat și noul nostru Boxfile (de la pasul 6) în loc, putem implementa aceste noi modificări:
$ git adăugați Boxfile index.php $ git commit -m "Adăugat Boxfile și implementat index.php modificări" $ git push pagoda master
Mergeți la "http://my-awesome-app.pagodabox.com" și vedeți ieșirea:
Acest lucru nu este în mod clar un lucru pe care veți dori să-l difuzați pe site-ul dvs. web, dar nu este suficient. Puteți vedea că conținutul bazei dvs. de date este transmis către browser și că adresa URL demo funcționează. Puteți să o înlocuiți cu CMS de alegere sau să creați ceva personalizat.
Nu are niciun rost să ai noul tău minunat blog pagodabox.com
subdomeniu; așadar, să lăsăm un domeniu pe partea de sus a acestuia.
Mai întâi, în fila DNS / SSL a tabloului de bord, adăugați câteva intrări pentru domeniul dvs.:
Acum, când aplicația dvs. este gata să accepte un domeniu, trebuie să vă îndreptați către cel care se ocupă de DNS pentru domeniul dvs. Accesați zona de gestionare DNS și setați o A
înregistrare pentru "Myawesomedomain.com"
a fi "50.97.141.37"
- care este adresa IP afișată pe interfața aplicației dvs. Aceste adrese IP nu sunt unice pe aplicație, dar nu vor fi întotdeauna aceleași. Stabiliți o înregistrare CNAME pentru "Www.myawesomedomain.com"
la alias "Myawesomedomain.com"
și ar trebui să fiți toți pregătiți.
Acest lucru poate părea destul de diferit de modul în care lucrați în acest moment, dar începeți să vă gândiți la cât de mult vă salvați pe termen lung. Folosind PaaS este același motiv pentru care folosim jQuery peste JavaScript-ul nativ sau cadrele PHP peste scrisul PHP nativ. De ce să vă încurcați cu detalii minore atunci când vă puteți concentra în schimb să construiți o aplicație extraordinară?
Alte alternative pe care le-ați putea lua în considerare sunt PHPFog și Orchestr.io, care oferă ambele servicii similare. Distrează-te și mulțumesc pentru lectură!