Denne artikkelen vil gå deg gjennom cloud hosting for PHP-applikasjonen din med Pagoda Box. Det vil detaljere hvordan du håndterer PHP-avhengigheter, få MySQL-databasene til å kjøre (og feilsøke lokalt), og tilpasse ulike aspekter av PHP med letthet.
Som utvikler som har spilt rundt med PHP siden 11 år, er det vanskelig å huske mange ting som helt har forandret måten jeg utvikler. I 2007 plukket jeg opp CodeIgniter, som fikk meg til å tenke på hvordan jeg strukturerer koden min og bruker OOP for å få ting gjort. I 2010 begynte jeg å jobbe med Git og Git Flow for teamarbeid og forgrening, men nylig har den største tingen å endre utviklingsarbeidet vært en "Platform as a Service", som heter Pagoda Box.
Du kan være en rockstar-utvikler som vet hvordan du setter opp en LAMP-stabel, men hvor mye av din potensielle utviklingstid slipper du å sette opp det, optimalisere det, sikre ting, låse det ned, skalere ressurser og overvåke trafikk.
Hver dag sporer jeg en utvikler som kjemper for å forsvare sin server fra en gruppe hackere eller skriptkiddier, får havflod, har problemer med å få noen tilfeldig sikkerhetsoppdatering, sliter med å migrere til større kraftigere servere, bli sint, prøver å sette opp Capistrano , listen fortsetter. Tjenester som Pagoda Box kan hjelpe deg med å hoppe over alt dette; så la oss se hvordan.
Det første trinnet er å ta deg en konto. Det er gratis, så fortsett.
Hver applikasjon må ha et unikt navn, da de også brukes til forhåndsvisningsadresser. Du kan ringe dette programmet uansett hva du ønsker, da du vil gjemme det bak et domene kort tid, men kaller det noe opplagt og minneverdig.
Git er et ekstremt nyttig versjon styringssystem. Akkurat nå er det massivt populært takket være nettsteder som GitHub som tillater gratis sosial kode hosting, men det er også flott for distribusjon av koden din.
Hvis du er ny på Git, så prøv krasjbanen.
Hvis du ikke allerede har konfigurert Git. Dokumentasjonen deres vil hjelpe deg med å komme i gang. Windows-brukere vil finne det litt vanskeligere enn OSX- eller Linux-brukere, så hvis du har en Virtual Machine of Ubuntu som ligger rundt, ville det vært en god tid å brenne den opp.
For å presse koden til Pagoda-boksen må du autorisere datamaskinen til å ha push-tilgang til programmer på kontoen din. Opprett en SSH-nøkkel og lim den inn her.
Først sett opp en mappe for søknaden din og sett Git-fjernkontrollene. Fjernbetegnelser er i hovedsak kallenavn for en repository-URL. Ved å sette opp denne fjernkontrollen, lar vi vår lokale Git repo vite hvordan du trykker på kode til Pagoda Box.
$ mkdir my-awesome-app && cd my awesome-app $ git init Initialisert tom Git-depot i /Users/phil/Sites/my-awesome-app/.git/ $ git remote legg til pagoda [email protected] : my-awesome-app.git
Nå med all denne kontoen og miljøoppsettet gjort, kan vi begynne å distribuere kode. For nå distribuerer vi en enkel Hello World-app:
$ echo ''> index.php
Dette er et lite kommandolinjebutikk for å legge inn tekst i en fil. Du kan alternativt opprette denne filen med din favoritt tekstredigerer eller IDE.
$ git legg til index.php $ git commit -m "OH HAI" [master (root-commit) 6aa23f4] OH HAI 1 filer endret, 1 innsettinger (+), 0 slettinger (-) opprett modus 100644 index.php
Så langt har vi laget en ny mappe for nettstedet vårt, initialisert Git, lagt til en fjernkontroll som forteller Git hvor Pagoda Box-appen lever, og legger til en ny index.php
fil, som ganske enkelt vil si Hei Verden!
. Neste:
$ git push pagoda master Telle objekter: 3, ferdig. Skriveobjekter: 100% (3/3), 244 byte, ferdig. Totalt 3 (delta 0), gjenbrukt 0 (delta 0) :: Automatisk distribusjon aktivert for 'master' +> for å endre, besøk https://dashboard.pagodabox.com/apps/my-awesome-app/admin :: Implementering til 6aa23f4 på master :: Parsing Boxfile :: Utfør distribusjon +> Init submodules +> Oppstart web1.1 - [22-Feb-2012 20:38:41] MERKNAD: fpm kjører, pid 54 - [22-feb-2012 20:38:41] MERKNAD: Klar til å håndtere tilkoblinger +> Forplantningsnettverksoppdateringer :: Opprydding Til [email protected]: my-awesome-app.git * [ny filial] master -> master
Det er her den magien skjer. Du vil presse til en Git-fjernkontroll som alle andre lagringssteder, men da vil du se utgangen av Pagoda Box overta og opprette en distribusjon. Dette vil brann opp en ny forekomst hver gang og bytte over fra live-forekomsten til denne nye instansen umiddelbart, noe som betyr umiddelbare oppdateringer - i motsetning til langsomme FTP-baserte fildistribusjonssystemer. I motsetning til noen lignende tjenester vil alle dine midlertidige filer (hurtigbuffer, logger, bildeopplastinger, osv.) Være der etter noen endring eller omplassering. Rått!
Nå, hvis du oppdaterer Pagoda Box-siden, vil du se et Dashboard med alle mulige alternativer.
Pagoda-boksen har en spesiell config-fil: Boxfile
. Dette går i roden av søknaden din. Et avansert eksempel kan se slik ut:
web1: ############################### ## GENERELLE INNSTILLINGER ############################################## ## shared_writable_dirs: [/ system / cms / cache, / system / cms / logs, / opplastinger, / addons] ############################################## ########## WEB SPECIFIKKE INNSTILLINGER #################################################################################### ############index_list: [index.php] ###################################################################################### ############## PHP SPECIFIKKE SETTINGS ################################################################################ ##########pp_version: 5.3.8 php_extensions: [mysqli, curl, gd, mbstring] php_date_timezone: Europa / London php_max_execution_time: 30 php_max_input_time: 60 php_post_max_size: 25M php_file_uploads: På php_upload_max_filesize: 20M php_max_file_uploads: 20
Dette eksemplet gir deg muligheten til å lage skrivebare mapper, sett inn index_listen (som er index.php
som standard) og endre alle slags PHP-innstillinger som normalt ville være i en php.ini
fil.
Den viktigste linjen her er:
php_extensions: [mysqli, curl, gd, mbstring]
Pagoda-boksen lar deg liste dine applikasjonsavhengigheter. "mysqli
"driveren er" MySQL Improved "som du bør begynne å bruke, som" mysql "skal bli deprecated i PHP 5.4." curl "og" gd "er ganske standard og" mbstring "hjelper deg med å jobbe med UTF-8 kode.
Det er godt å vite at de er tilgjengelige - sammen med mange andre - men for denne opplæringen trenger vi bare følgende:
php_extensions: [pdo, pdo_mysql]
Så la oss lage vår nye Boxfile og lagre den:
web1: php_extensions: [pdo, pdo_mysql]
Vi bruker dette senere.
På tidspunktet for denne skrivingen støtter Pagoda Box bare MySQL-databaser, noe som er bra som det er hva flertallet av utviklere bruker.
Vi kan skyte opp så mange små databaser som vi liker gratis. vi begynner bare å betale når de blir større, så du blir ikke overrasket av en massiv regning bare for å bygge et nettsted. På samme måte som web-forekomster, kan de også skaleres for å vokse med ditt nettsted.
For å lage en ny, klikk på + ikon og gi det et navn. Du ser en fremdriftslinje oppe mens den bygger; siden oppdateres siden.
Koble til via PHP er en cinch. Du får flere $ _SERVER
variabler, som inneholder legitimasjon for hver database du har. Dette betyr at du kan holde hardkodede passord ut av programmet - noe som er veldig nyttig hvis du ikke vil at alle utviklere skal se live passord, eller hvis du har hele nettstedet på GitHub, som noen mennesker begynner å gjøre.
$ db = ny BOB (sprintf ('mysql: vert =% s; dbname =% s; port =% s', $ _SERVER ['DB1_HOST'], $ _SERVER ['DB1_NAME'], $ _SERVER ['DB1_PORT'] ), $ _SERVER ['DB1_USER'], $ _SERVER ['DB1_PASS']);
Dette er et grunnleggende eksempel på variablene som brukes - kobler til MySQL-databasen via PDO-utvidelsen. Hvis du bruker et rammeverk, for eksempel CodeIgniter, kan du skyve disse variablene inn i din database.php
config-filer.
Noen webservere - spesielt de som er installert cPanel-oppsett - har phpMyAdmin installert og kan konfigureres for å tillate ekstern tilgang til MySQL-databasene.
I stedet for denne tilnærmingen bruker Pagoda Box Ruby Gem for - blant annet - å skape en midlertidig sikker SSH-tunnel. Dette betyr at MySQL-databasene er låst ned bak en brannmur og kun er tilgjengelig via denne sikre SSH-tilkoblingen.
Så, for å installere perlen løp:
$ sudo perle installasjon pagoda
Så å lage tunnelen, kjør bare:
$ pagoda tunnel db1
Første gang du kjører dette (eller en annen pagoda-per-kommando), bør du bli bedt om et brukernavn og passord. Dette er ditt Pagoda Box brukernavn og passord, og er nødvendig for at perlen kan fungere på dine vegne og ikke har noe å gjøre med databasen din.
$ pagoda tunnel db1 det ser ut til at dette er første gang du har brukt vår klient Brukernavn: someguy Passord: Tunnel Etablert! Godta tilkoblinger på: ---------------------------------------------- - HOST: 127.0.0.1 (eller localhost) PORT: 3307 BRUKER: (funnet i pagodabox dashbord) PASS: (funnet i pagodabox dashboard) --------------------- -------------------------- (Merk: ctrl-c For å lukke denne tunnelen)
Gå til dashbordet ditt og klikk på databasen, og klikk deretter "Vis referanser" for å se et informasjonsvindu som dette:
Bruk disse legitimasjonene til å koble til. Ikke glem å spesifisere hvilken port; den er oppført i utgangen fra perlen over - ikke den grønne boksen. Husk at du kobler til den lokale tunnelen, ikke direkte til databasen.
Hva slags opplæring ville dette være hvis det ikke innebar å lage en blogg om 20 minutter?
For all utvikling bør du virkelig bygge ting lokalt ved hjelp av MAMP, XAMPP, WAMP osv., Og deretter distribuere koden og databaseendringer ved hjelp av en slags "Migrasjoner" eller skjemaendringssporing, men det vil vi gjøre på den gammeldags måten.
Først koble til databasen din eksternt via tunnelen, og kjør deretter denne spørringen for å bygge et nytt bord:
CREATE TABLE posts ('id' int (11) IKKE NULL AUTO_INCREMENT, 'title' varchar (255) IKKE NULL, 'slug' varchar (255) IKKE NULL, 'sammendrag' tekst IKKE NULL, 'kropp' tekst IKKE NULL, ' created_at 'int (11) IKKE NULL,' updated_at 'int (11) IKKE NULL, PRIMARY KEY (id)) MOTOR = InnoDB; INSERT IN POST VALUES ('1', 'Women love guys som bruker FuelPHP', 'women-love-guys-who-use-fuelphp', 'Det er et godt bevist faktum at jenter elsker utviklere, men ting har aldri vært så Godt for PHP-utviklere. Alle som begynner å bruke FuelPHP får 150% flere kvinner innen den første måneden. Faktum. ',' Det er et godt bevist faktum at jenter elsker utviklere, men det har aldri vært så bra for PHP-utviklere. bruker FuelPHP får 150% flere kvinner innen den første måneden. Faktum. ',' 1322825332 ',' 1322934052 '),' 2 ',' Folk som ekko HTML fra apper som dør yngre ',' dårlig praksis ',' Forskere har Bevist at PHP-utviklere som ekko HTML direkte våre PHP-filer dør yngre. Ofte skjer det mens utvikleren er på kontoret. Mens de satt på stolene, har de flere sår, men tilsynelatende er det ingen vitner, selv om deres kolleger var i kontor \ "refactoring dårlig kode \" hele dagen. ',' Viktig kroppstekst ',' 1322826479 ',' 1322826479 ');
Med noen testposter på plass kan vi lage denne index.php:
spørring ('VELG * fra innlegg') som $ rad) echo "$ Rad [ 'tittel']
"; ekko "Skrevet: ".date ('l jS \ av F Y', $ row ['created_at'])."
";
"; ekko $ rad ['sammendrag']."
Med den filen lagret, og vår nye Boxfile (fra trinn 6) på plass, kan vi distribuere disse nye endringene:
$ git legg til Boxfile index.php $ git commit -m "Lagt Boxfile og distribuert index.php endringer" $ git push pagoda master
Gå til "http://my-awesome-app.pagodabox.com" og se produksjonen:
Dette er tydeligvis ikke noe du vil ha å kjøre på nettstedet ditt, men det gjør nok. Du kan se at databasen innholdet blir sendt til nettleseren, og din demo-URL fungerer. Du kan erstatte dette med ditt valgfrie CMS, eller bygge noe tilpasset.
Det er ikke noe poeng å ha din fantastiske nye blogg på en pagodabox.com
underdomene; så la oss parkere et domene på toppen av det.
Først legger du til noen oppføringer for domenet ditt i domenet DNS / SSL på dashbordet ditt:
Nå som søknaden din er klar til å akseptere et domene, bør du gå over til den som håndterer DNS-en for domenet ditt. Gå til DNS-administrasjonsområdet og sett inn en EN
rekord for "Myawesomedomain.com"
å være "50.97.141.37"
- som er IP-adressen som er oppført på grensesnittet for appen din. Disse IP-adressene er ikke unike per applikasjon, men vil ikke alltid være de samme. Sett inn en CNAME-post for "Www.myawesomedomain.com"
til alias "Myawesomedomain.com"
og du bør være helt klar.
Dette kan alle virke ganske annerledes enn hvordan du jobber for øyeblikket, men begynner å tenke på hvor mye arbeid du sparer deg selv i det lange løp. Å bruke PaaS er den samme grunnen til at vi bruker jQuery over native JavaScript, eller PHP-rammer over å skrive innfødt PHP. Hvorfor rote rundt med mindre detaljer når du i stedet kan fokusere på å bygge en fantastisk app?
Andre alternativer du kan vurdere er PHPFog og Orchestr.io, som begge tilbyr lignende tjenester. Ha det gøy og takk for å lese!