>> Okay.
Så kurserne for instruktion.
Harvards kursuskatalog har flere tusinde kurser,
der er flere hundrede af fakultetet
og der er flere snesevis af marker,
datalogi bare er en af ​​dem,
og jeg troede, vi ville bruge dette som en mulighed for at begynde at tænke
om, hvordan man gennemfører et standard web-baseret applikation
ved hjælp af PHP og Laravel og også hvordan vi kan modellere nogle
disse virkelige verden enheder.
Så for at gøre dette, vi vil bruge Laravel, der er bare en ramme
der tilføjer en masse funktioner til PHP,
ligesom Jango tilføjer det samme til Python,
Rails tilføjer det samme til Ruby.
Så der er et par forskellige måder
hvor du kan installere Laravel.
Dokumentationen for Laravel, som du måske husker
fra sidste uge, er faktisk temmelig rig
og du kan helt sikkert på din egen derhjemme spil
rundt med dette, og følg instruktionerne specifikt,
men jeg har tænkt mig at gå videre og bare give os en hurtig,
hurtig rundvisning i nogle af dem,
svarer til, hvad Tim gjorde den anden dag,
og jeg først kommer til at bruge dette.
Så Composer er en slags ny og forbedret funktion
for PHP verden, der gør det nemmere at installere ting.
Hvis du er fortrolig med loven Kom i den [uhørligt] verden
eller [uhørligt] verden eller Yum i [uhørligt]
og rød hat verden, dette er endnu kun et værktøj
der tillader dig at installere ting
for denne særlige miljø.
Så hvis jeg gør Composer, Opret projekt og så videre,
som jeg vil gøre her, lad os gå videre og bare, jeg vil lede dig
gennem nogle af disse skridt, som vi gjorde sidste gang
uden procent tegn Dammit, uden Composer.
Så med Composer-jeg hjælp en anden virtuel maskine
end jeg gjorde før.
Lad os gøre det rigtig hurtigt.
Okay, så installerer Composer er så simpelt som dette.
Så jeg vil lave en, får jeg op på min talerstol for et stykke tid også.
Dette er faktisk en meget mere almindeligt paradigme
til installation af ting på folks computere i disse dage,
hvor du hovedsageligt hente en vilkårlig URL
rør det gennem en tolk og så bare gøre, hvad
at vilkårlig stykke kode du lige har downloadet siger at gøre.
Det er meget let, som du er ved at se, men indse skeptiker
i din skulle tro, at dette er blandt de mere usikre
ting, du nogensinde kunne gøre; downloade en vilkårlig fil
fra internettet og derefter blindt kører det med måde
af røret, men vi vil tillid til, at installatøren er
faktisk berettiget dag.
Jeg har tænkt mig at gå videre og køre dette og dette foregår
for at hente programmet.
Det kommer til at downloade en fil kaldet composer.farphparchive,
og jeg har tænkt mig at gå videre og gøre det,
sudo-first faktisk chmod755composer.far,
som kommer til at gøre det eksekverbare af alle,
og så vil jeg gøre sudo mv komponist
til bruger lokal bin komponist, og hvad der er brugerens lokale bin
for dem kender Linux?
For at være klar jeg gør dette inde
af apparatet, selvom Jeg bruger terminal på min Mac.
[Lav lyd] Præcis, så i en mappe,
faktisk en lille afklaring.
I telefonbogen typisk kaldet / bin
eller / userbin er faktisk nogle meget populære programmer
som CD og LS og så videre.
I bruger lokal bin ved konvention er intet som standard, og vi,
brugerne af systemet, kan sætte noget, vi ønsker i der
og som standard er det i din såkaldte søgesti, så
når du bare skrive komponist det operativsystem, Linux,
kommer til at se i det bibliotek blandt andre
for at finde det pågældende program, og det viser sig, at det er fint
at omdøbe den med filtypen
fordi vi har lavet det eksekverbare.
Denne ting vil faktisk køre som vi agter.
Okay så nu har jeg tænkt mig at gå tilbage
til den linje, jeg foreslog vi eksekvere tidligere, hvilket er dette;
komponist og så tager det en kommandolinje argument,
som jeg kun kender fra læse dokumentationen,
kaldet skabe-projekt.
Jeg har brug for at angive navnet på det projekt, som jeg vil
at basere mine og Laravel / Laravel refererer hovedsagelig
til en get hub repository hvori denne kode lever.
Kataloget er et vilkårligt navn Jeg har tænkt mig at give til mit projekt,
kursuskataloget, men man kunne kalde det foo
eller noget andet, og foretrækker-dist.
Det er lidt afskåret.
Det betyder bare foretrækker den nyeste distribution.
Så jeg har tænkt mig at gå videre og Enter og da Tim sagde
onsdag den kan sommetider tage et stykke tid,
især hvis du er på en langsom forbindelse
eller hvis du ikke har cached nogle af disse ting,
men hvad det er gør, er det at kontrollere
ud af en hel flok kode fra online.
Det langsomt vil downloade den til min computer
og når den er endelig færdig,
Jeg har tænkt mig at have et bibliotek kaldet Butik inde
hvoraf-Ups, det er derfor.
Catalog, lad os gøre det igen.
Okay ikke køre denne ene.
Tilsyneladende har du en eksisterende Katalog bibliotek, og det bemærker
der i sidste øjeblik.
Dette kommer til at have for mig en mappe kaldet Butik inde
som er al den kode jeg har brug for
at begynde at skrive en webbaseret ansøgning med Laravel.
Så inden for et par sekunder dette bør sparke i
og når vi har-det og igen hvis du ikke er på det punkt,
hvor du er i stand til følge med lige nu,
det er helt fint, det er ret nemt
at genskabe disse trin bagefter i dit eget apparat.
Okay. Alright i mellemtiden, da vi gør det,
Jeg har tænkt mig at trække op en anden tip.
Så du har måske set Tim omtale
eller redigere denne fil sidste gang.
Hvad er en etc / host-fil og hvor lever det?
Okay så lad os rulle tilbage i tiden.
Hvad er DNS, som vi diskuteres ikke så længe siden?
Okay, så domænenavn system.
Dette er blot den infrastruktur på internettet
der gør hvad i en sætning?
Ja. [Lav lyd] Præcis.
Det konverterer domænenavne IP-adresser og omvendt
så det er effektivt en stor database tabel
med disse to kolonner, der har fuldt kvalificerede domænenavne
til venstre og IP-adresse til højre, for eksempel,
og det bare konverterer de to.
Nu er det er alt fint og godt men hvis du rent faktisk ønsker
at skabe nye værtsnavne på Internet, nye domænenavne
på internettet, du typisk nødt til at give nogen penge,
du nødt til at konfigurere ting på deres server, deres navneservere
og så videre, som er en reel smerte, og specielt
hvis vi ikke virkelig ønsker at købe et domænenavn, vil vi blot
at lade som om vi har vores egen lokale domæne,
for eksempel kaldes Katalog eller Catalog.com
eller noget lignende.
Nå etc / host giver dig mulighed for hårdt kode afbildninger mellem værtsnavne
og IP-adresser på din egen lokale computer, så
i det væsentlige at narre computer til at tro
at dette domænenavn rent faktisk findes på denne IP.
Det kontrolleres, før den faktisk DNS-systemet selv
er markeret.
Så lad mig gå ind i denne terminal vindue og det ser
lignende i baggrunden der,
alt havde hentet held,
så hvad jeg vil nu at gøre, er følgende.
Hvis du er mere fortrolig fra din 50. eller 51 dage
med G Edit, jeg kommer til at gå videre og gøre dette med G Edit
i første omgang, men jeg er kommer til at gå videre
og gøre sudo g redigere / etc / hosts indersiden af ​​apparatet,
og når jeg gør dette er jeg kommer til at få et vindue
der ser sådan en her.
Lidt kryptiske linjer kun fordi de er lange,
men det væsentlige er det kortlægning 127.0.0.1
til et par forskellige værtsnavne, hvoraf den ene er lokal vært,
hvoraf den ene er apparatet og derefter et par mere;
localhost.localdomain, appliance.localdomain.
Disse er blot konventioner at bruge ting som localhost
som standard værtsnavn og localdomain
som standard top level domæne eller TLD.
Så mærke til, hvad jeg allerede gjorde i forvejen her.
Hvis jeg ønsker at narre apparatet til at tænke
at kataloget er faktisk en reel hjemmeside på internettet,
Jeg kan fortælle apparat, dens IP-adresse er 127.0.0.1.
Nu hvorfor denne adresse?
Hvad er det IP?
Hvor kom det fra?
Hvem har jeg nødt til at spørge om det?
[Lav lyd] Hvad er det?
[Lav lyd] Det er loopback adresse,
som blot betyder dette er standard-IP-adresse,
til de fleste helst computer i verden, der understøtter IP,
Internet Protocol, og det er en løkke tilbage adresse
i den forstand, at det afspejler det.
Det refererer til sig selv.
Så alle os, hvis vi har et apparat eller endda en MAC
eller PC har en lokal IP-adresse af 127.0.0.1 og det er kun brugt
så du kan tale til dig selv.
Jeg kunne i teorien figur
ud af, hvad apparatet IP adresse er, og skrive i 192.168
eller hvad dette nummer er, men det er ikke nødvendigt.
Denne ene kommer til at være invariante og vil simpelthen altid arbejde.
Så når jeg gemmer det som i sidste ende betyder
at i en browser jeg kan gå til http://Catalog, som jeg vil gøre her,
men et par ting er brudt ud af portene.
Så hvad betyder dette typisk betyde,
når jeg ikke har tilladelser, forbudt, at gøre noget,
hvad er din første indskydelse til at løse dette problem?
Jeg henter en mappe kaldet Butik
ind i min V værter mappen, som fra sidste uge, du vil huske, er
hvor alle vores slags lokale hjemmesider vil leve.
Hvad kan være brudt?
Hvordan at fastsætte?
[Lav lyd] Tilladelser.
Tilladelser af hvad?
Okay filer potentielt.
Så lad os gå tilbage til vores terminal vindue her.
Jeg er i min V host bibliotek.
Lad mig gøre LS og bekendtgørelse der er et par ting.
Lokal vært, som kommer med apparatet, vi sætter det der.
Catalog.original, som Jeg sætter der tidligere,
der er slags af det færdige version af, hvad vi er
ved at dykke ned i, og Catalog, som jeg lige har downloadet.
Hvis jeg ønsker at se på tilladelserne
på kataloget biblioteket Jeg kan gøre LS-L og varsel
at de er lidt forskellig fra de andre.
Hvilken tilladelse er tilsyneladende Catalog biblioteket
som vi lige har downloadet, mangler som standard?
Selv hvis du ikke har nogen idé om, hvad ordet er du gnaven udlede
hvad der er anderledes ved hver af disse tre linjer?
Okay, hvad der mangler mellem linje én og linie to output?
Ja? [Lav lyd] Ja, så det er mangler X, der står
for eksekverbare og hvad betyder det
hvis en mappe er eksekverbar?
Det betyder bare, du kan åbne det.
Du kan cd'en i det.
Du kan få adgang til filer inde i den.
Så hvis en fils eksekverbare, midler det er ligesom et program, du kan køre.
En mappe er eksekverbar hvis du kan gå ind i det.
Så jeg kan løse dette med et par måder.
Jeg kunne gøre chmod A plus X, hvilket betyder alle plus eksekverbare
og så kan jeg sige kataloget.
Eller husker fra CS50 eller andre klasser,
Jeg kan være en smule mere avanceret og sige 0711 eller blot 711
på Catalog, tryk Enter, intet synes at ske
men hvis jeg gør LS-L igen, bemærke, at det er eksekverbar
af min gruppe, som er den midterste tre bits og af alle,
der er de rigtige tre bits, og det er tilstrækkeligt for dem
at være ens for vores formål.
Okay, jeg føler som om vi er i temmelig god figur.
Lad os gå tilbage til det browser og lad os genindlæse,
for fanden, stadig forbudt.
Så hvad der ellers kan være brudt?
Hvor ellers kunne vi ønsker at se?
Så vi fast i kataloget, så hvis jeg går ind i kataloget,
lad os gøre en anden LS, nu er der flere ting i her og ærligt
ved første øjekast er det overvældende
og jeg tør sige dette er en af hovedpine af rammer
ud af porten, og at du sortere af har en masse beskæftige sig med,
men vi vil slibe på hvad der er vigtigt i dag
og det vigtigste for nu er denne mappe.
Hvis du har brugt apparatet før du måske kender
at den offentligt tilgængelige mappe kaldes Public,
eller i de forløbne år blev det kaldt HTML, men vi har siden ændret det
til de mere almindelige offentlighed.
Så hvis jeg gør chmod 711 af Public
der synes at løse dette spørgsmål.
Så nu den offentlige bibliotek er også eksekverbar
og dermed tilgængelige.
Lad os se, om vi er et skridt nærmere.
Lad os genindlæse, stadig ingen god og nu det går
at få lidt udfordrende; denne ene er lidt sværere.
Hvis jeg går ind i Public, tilbagekaldelse at Tim viste os denne ene.
Hvis jeg gør LS-AL, der lister alle filer i det lange format,
der er en prik fil så at sige
hvor en prik fil er bare en fil, hvis filnavn begynder
med en prik.
Hvad betyder htaccess gøre?
Jamen så lad os se på det.
Snarere end at bruge G Rediger, Jeg har tænkt mig at bruge VIM,
kan du bruge Emax eller Nano eller nogen af ​​dine foretrukne redaktører,
men hvis jeg ser på her dette har en masse lavt niveau stuff
der fulgte med Laravel s distribution.
Dette er en fil, som den Apache webserver forstår
og lang historie kort, disse flere linjer
konfiguration trick hele Public biblioteket
i routing næsten alle HTTP anmodninger om at tage et gæt.
Hvilken fil?
Alle indgående HTTP-anmodninger med nogle få undtagelser vil blive dirigeret
til hvad fil, ellers kendt som en front controller?
>> Index.
>> Index.php.
Så selv om der er en foo.php fil eller en bar.php fil
i min offentlige bibliotek, betydningen af ​​disse linjer
i almindelighed er til route alle anmodninger
at index.php medmindre disse filer rent faktisk eksisterer, fordi tingene
som brag-f betyder, at hvis filnavn ikke findes,
og hvis direkte ikke eksisterer,
rute alle anmodninger til index.php.
Så i en lidt dette foregår at tillade os at have URL'er
ligesom http://Catalog/courses/123
hvor 123 er den unikke identifikator for et kursus
men det er helt klart ikke navnet på en fil, så anmodningen går
at blive dirigeret til index.php der kommer til at regne ud,
tak til Laravel og dig, hvor til rute
at indkommende HTTP-anmodning.
Men der er et problem.
Bemærk som standard som htaccess fil kan ikke læses
eller eksekverbare.
Gennemførligheden er ikke vigtigt men jeg ønsker at gøre chmod644
på dot htaccess eller Et plus R. Nu varsel
at hvis jeg gør en alt notering, nu er det læsbar.
Nu, hvis jeg krydser mine fingre her og reload, puha,
vi har det oppe og køre.
Så dumme trin, du nødt til at gå igennem i første omgang,
men det faktum, at jeg slags gik gennem det
så pedantisk er præcis den slags
af diagnostiske trin du bør tænke
over, når noget er forkert,
og selv når et bibliotek kan være skævt,
indse, der måske også dot filer,
især dot htaccess som er helt almindelige
i enhver Apache distribution,
der kan skabe hovedpine ligesom at en.
Så jeg får lidt træt af at gå tilbage
og tilbage til apparatet.
Jeg vil meget hellere arbejde på min MAC eller endda på min PC.
Så hvordan kan jeg gøre dette samme etc / host trick?
Nå bemærke, at lad mig figur
ud af, hvad apparatets IP-adresse er.
Jeg kan gøre ifcongig, som viser mig nogle temmelig kryptisk output
men varsel siden eth0 eller snarere siden eth1,
der er denne IP-adresse her.
Jeg har tænkt mig at gå videre og kopiere det og inde
min egen MAC terminal vindue Jeg har tænkt mig at redigere sudo etc / hosts
på min egen MAC, hvilket giver mig et lignende udseende fil.
Alt, hvad jeg har tænkt mig at gøre, er dette.
Så jeg har tænkt mig at narre min MAC
til at tro http://Catalog faktisk maps
til den specifikke IP-adresse.
Okay, så lad os gå videre og gemme dette, lad mig lukke
at terminal vindue og nu på min MAC bruger en browser jeg vil,
http://Catalog og jeg se de samme ting.
Nu ved jeg ikke engang at bekymre går tilbage til [uhørligt]
som du måske ikke lyst til at gøre alligevel, så nu er jeg tilbage
på min egen computer ved hjælp virkelig apparatet
som bare en web-server.
Okay, så her er bare en hurtig resumé af nogle
af filtilladelserne vi måske ønsker at ændre
og jeg skære nogle hjørner i ting som favicon eller alle
så interessant for nu.
Okay, så lad os nu starte
at konfigurere denne standard Laravel installation
for en database.
Så Tim gjorde dette kort sidste gang også og filen
i spørgsmål er en her.
Så inde i, lad mig forandring dette at være konsekvent,
Katalog app config database.php.
Så lad os gå ind i app, lad os gå ind i config
og lad os gå ind database.php.
Så dette er en temmelig lang fil, hvoraf de fleste er kommentarer,
men du vil se, hvis du læse dette nøje
du kan konfigurere Laravel og en masse en rammer
at støtte forskellige typer af databaser.
Måske du bruger MySQL, måske du bruger Indlæg [uhørligt]
Måske du bruger SQL Lite, der er andet
men hvis vi bruger MySQL