Raskt utvikling og distribusjon av applikasjoner blir raskt et krav og mål for mange prosjekter, gamle og nye. Heldigvis kommer et stort utvalg av alternativer til utviklere å dra nytte av når det gjelder distribusjonsressurser og tett integrasjon med programmeringsspråket ditt valg. Cloud-distribusjoner, hvor selskaper tilbyr en stor mengde maskinvare som du kan skalere etter dine behov, blir stadig mer populære på grunn av deres fleksibilitet og kostnadseffektivitet ved å følge en lønn som du bruker modell.
En av de mer spennende endringene dette flyttet til skyplattformene har medført, særlig når det gjelder mindre prosjekter, er at mange skyer gir en gratis distribusjonsmulighet, om enn med minimal maskinvarebruk. Dette gjør det mulig for gratis hosting av prototypeprogrammer for eksempel eller beta-produkter som gir deg et levende, løpende applikasjonsinstans som du kan gjøre tilgjengelig for alle du liker, raskt. På samme måte fungerer det perfekt for alle nettsteder som mottar en moderat mengde trafikk, for eksempel en liten lokal bedrift eller en porteføljeside hvor du kan vise frem noe av arbeidet ditt.
Denne artikkelen fokuserer på min erfaring med å utvikle en porteføljeside i Python og det populære Django web-rammeverket ved hjelp av noen bootstrap-maler for å style nettstedet. Med et pent nettsted som kan vise frem arbeidet, viser jeg deg hvordan du legger det til i et Django-generert innholdshåndteringssystem (CMS), samt hvor enkelt det kan være å distribuere til Heroku for hosting av nettstedet ditt og deretter overvåke trafikk, feil og responstider ved hjelp av Heroku's bygget i New Relic-integrasjon. Alt gratis, innen få timer med arbeid.
Først og fremst trenger du et prosjekt som du ønsker å være vert for i skyen. Som nevnt tidligere, var prosjektet mitt i gang med å skape et porteføljeside for å presentere mine artikler og andre prosjekter, sammen med min C.V og kontaktinformasjon. Python og Django tilbød en perfekt kamp for disse kravene, og du kan raskt begynne å bygge et dynamisk nettsted med Django og dets ORM-design, som gir enkel integrasjon mellom webmaler og underliggende data lagret i en database.
Før du skriver kode, bør du opprette et virtuelt virtuelt miljø for prosjektet for å holde avhengighetene for dette prosjektet skilt fra noen andre. Under panseret, virtualenv
kopierer effektivt din globale Python-installasjon til .virtualenvs
mappe under en navngitt katalog for din virtualenv
. Den legger deretter til dette stedet på forsiden av banen, slik at systemet bruker denne Python-installasjonen for prosjektet. Alle avhengigheter installeres deretter her i stedet for globalt. Du kan gjøre dette ved først å installere virtualenv
og virtualenvwrapper
bruker Pythons pakkebehandler "pip
".
$ pip installere virtualenv $ pip installere virtualenvwrapper
Etter installering av virtualenv
verktøy du bør legge til en kilde linje til din .bashrc
i din hjemmekatalog (Linux / Mac OS X), som aktiverer virtualenvwrapper
skript på kommandolinjen, slik at det blir enkelt å lage, aktivere og slette virtuelle miljøer. Du kan opprette virtualenv
som følger.
$ mkvirtualenv portefølje
Med miljøoppsettet kan du deretter installere Django som du skal bruke til å definere webapplikasjonen. Django kan installeres ved å utføre følgende kommando.
$ pip installere django
Med avhengighetene på plass, er ditt første skritt i å lage ditt Django-prosjekt å lage en katalog for å holde filene dine etter en ganske standard struktur som vist nedenfor. Heldigvis hjelper Django til å automatisere denne prosessen med bruk av django-admin.py
kommandolinjeværktøy. Gjør følgende for å opprette prosjektet og søknadskatalogen.
$ django-admin.py startproject tuts
Dette vil produsere følgende struktur.
tuts / tuts / __init__.py settings.py urls.py wsgi.py
Du kan lese mer om oppsettet av Django-applikasjoner i Django-offisiell dokumentasjon, men en grunnleggende oppsummering av disse filene er som følger:
settings.py
- konfigurasjon for din Django-applikasjon, for eksempel databaseforbindelser og programmer (se nedenfor).urls.py
- ruter som kobler til de forskjellige delene av nettstedene dine.wsgi.py
- en fil for å tillate start av søknaden din av webservere som Apache.Prosjektet opprettet så langt er bare den ytre beholderen for din faktiske webapplikasjon. Kjøttet til koden skal ligge inne i en app, og du kan igjen gjøre bruk av Django's hjelpemetoder for å lage appstrukturen for deg.
$ python manage.py startapp portefølje
Dette legger til i følgende i vår generelle katalogstruktur.
tuts / tuts / __init__.py settings.py urls.py wsgi.py portefølje / admin.py models.py tests.py views.py
Når appen din er opprettet, må du registrere den til Django-prosjektet ditt. Åpne opp settings.py
og legg til "portefølje" til INSTALLED_APPS
tuppel:
INSTALLED_APPS = ('django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles' , 'portefølje')
For å sjekke alt som fungerer, skriv inn følgende kommando og besøk http: // localhost: 8000 i nettleseren din. Du bør se en side som den som vises i bildet nedenfor.
Nå som prosjektkatalogen er satt opp, la oss begynne å kaste ut koden. Som vi vet hvilken type data vi vil legge til på porteføljesiden, kan vi begynne å definere modellen. Dette beskriver våre data i databasen og lar Django å gå videre og lage de aktuelle feltene og tabellene i databasen for oss. På vår nettside skal vi legge inn artikler for bøker og avhandlinger. Hver av disse kan ha sin egen individuelle modell hvis du ønsker å gi dem unike datafelt som ikke gjelder for de andre oppføringstyper. Men for dette nettstedet vil hver oppføring bli gitt et navn, publiseringsdato, beskrivelse og URL. I models.py
fil under porteføljen app katalog, kan du definere denne inngangsdata som:
klassen element (models.Model): publish_date = models.DateField (max_length = 200) navn = models.CharField (max_length = 200) detalj = models.CharField (max_length = 1000) url = models.URLField () thumbnail = models.CharField (MAX_LENGTH = 200)
Med den definerte modellen kan du generere dette i databasen ved hjelp av Django's innebygde kommandolinjeverktøy som blir gjort tilgjengelig etter installasjonen. Hvis du gjør bruk av manage.py
filen igjen, kan du også bruke SyncDB
kommandoen for å håndtere databaseoppsettet for deg. Hvis du utsteder følgende kommando, vil du bli vist de tilgjengelige alternativene dette administrasjonsverktøyet gir.
$ python manage.py syncdb Opprette tabeller ... Opprette tabell portfolio_item Installere tilpasset SQL ... Installere indekser ... Installert 0 objekt (er) fra 0 inventar (er)
Bruker SyncDB
Metoden tillater Django å lese modellen vi nettopp har opprettet og sette opp den riktige strukturen for å lagre disse dataene i databasen. Da dette er første gang du har utført denne kommandoen, vil Django også be deg om å svare på noen få spørsmål. Disse vil inkludere elementer som å skape en superbruker for databasen (i hovedsak administrator), slik at du kan passordbeskytte mot å gjøre oppdateringer og endringer i databasen. Denne brukeren vil også danne den første brukeren som kan logge inn på CMS som vil bli generert for nettstedet når vi har maler oppe.
Med brukeroppsettet, skal kommandoen returnere som viser at den har utført SQL mot databasen. Det neste trinnet er å nå få tilgang til dataene som skal lagres for å opprette en dynamisk frontend som du vil vise til brukeren. For å oppnå dette må du legge til koden til visningene for å få tilgang til dataene du vil lagre i databasen. Med dataene som er tilgjengelige for visningene, kan den deretter sendes videre til maler som kan tolkes som informasjon til sluttbrukeren. I dette tilfellet vil dette være i form av HTML-sider for en nettleser. Det er imidlertid verdt å merke seg at dette mønsteret kan brukes til andre typer applikasjoner, for eksempel å produsere JSON eller XML, som igjen bare ville bruke modellen til å definere og flytte dataene og visningene som presenterer den, i riktig format for JSON / XML i motsetning til HTML.
I visningene skal du gjøre bruk av dataene som skal lagres i databasen for visning til brukerne. For å gjøre dette importerer vi Punkt
klassen for å få tilgang til den modellen (med Django som håndterer tilgangen til databasen under) og gi dataene som variabler til "mal" som Django vil gi. Malen er for det meste statisk HTML, med tillegg av muligheten til å utføre et begrenset sett med Python-kode for å behandle dataene dine og vise det etter behov. For eksempel kan du sende hele listen over gjenstandsobjekter til malen, men deretter gå over den listen i malen for å få bare navnet fra hvert element og vise det i en H1
stikkord. Forhåpentligvis vil dette bli tydeligere ved hjelp av eksempler nedenfor.
Åpne opp views.py
fil som ble opprettet for deg tidligere, og legg til følgende kode som vil bli utført når du åpner hjemmesiden (eller indeksen) på nettstedet ditt.
def index (request): items = Item.objects.order_by ("- publish_date") nå = datetime.datetime.now () return render (forespørsel, 'portfolio / index.html', "items": items, "year ": now.year)
Dette samler alle elementer som er lagret i databasen, bestiller dem etter publiseringsfeltet, lar deg vise de nyeste førstene og deretter sende disse inn på malen som du vil lage kort. Ordboken som sendes til gjengivelsesmetoden er kjent som kontekst, og du vil kunne få tilgang til dette kontekstavobjektet lett i malen for å vise dataene etter behov.
Django benytter seg av Jinja2-templeringsbiblioteket for å håndtere behandlingen av maler og er veldig fint å bruke, fordi dets syntaks er grei og dets evner er kraftige nok til å produsere det du trenger. Det er verdt å merke seg, en felle de fleste utviklere faller inn i når du arbeider med Jinja2, gjør for mye logikk i malen. Mens Jinja2 gir deg en stor mengde standard Python-operasjoner, er den ment for enkel behandling for å få dataene i formatet for visning. Logikken for å hente og strukturere dataene skulle ha blitt gjort i kontrolleren og eller visningen. Du vil vite når du har kommet inn i denne fellen når du koder mye inne i malene og blir frustrert som Jinja2-utganger feil eller dine viste data vil bare ikke vises som du vil. På dette tidspunktet er det verdt å revidere visningen for å se om du kan gjøre mer behandling foran, før du sender den videre til malen.
Med vår index
Metode som håndterer tilgang til data, alt som er igjen, er å definere malen for å vise varene våre. Som foreslått av index
Metode, du må legge til en index.html
fil i porteføljen app for å gjengi. Legg til den filen med følgende kode.
Tuts + Django Eksempel Velkommen til Django-siden din.
Her er dine objekter:
Dette er en grunnleggende HTML-side som vil løse over og produsere en punktpostliste over elementnavnene. Du kan selvfølgelig utforme dette, men du ønsker det, og jeg anbefaler på det sterkeste at du bruker en bootstrap-mal hvis du ønsker å få noe profesjonelt oppe i gang. Se mer på Bootstraps nettsted.
Det endelige stykket for å se om alt fungerer, er å gå videre, og legg til roten URL til å peke på denne malen som skal gjengis. Under appkatalogen åpnes "tuts" urls.py
og legg til følgende URL-direktiv til de automatisk genererte eksemplene og admin-nettadressen.
urlpatterns = mønstre (", # Eksempler: # url (r '^ $', 'tuts.views.home', name =" home "), # url (r '^ blog /', inkluderer ('blog.urls' )), url (r '^ admin /', inkluderer (admin.site.urls)), url (r '^ $', views.index, navn = "index"),)
Til slutt, åpne opp admin.py
å avsløre Punkt
klasse til admin CMS, slik at du kan legge inn dataene som skal vises på hjemmesiden.
fra portfolio.models import Vare admin.site.register (Item)
Du bør da kunne starte opp nettstedet ditt (bruk kjøre server
som før) og utfør følgende oppgaver.
SyncDB
Tidligere. Prøv å få tilgang til andre aspekter av elementdataene i malen. For eksempel, endre koden i punktpunktet for å legge til publiseringsdatoen også. For eksempel:
item.publish_date - item.name
Du har nå et arbeidssted som bare trenger litt styling og mer innhold for å kunne fungere som en arbeidsporteføljeside.
Heroku er en flott skyplattform som er tilgjengelig for alle utviklere og bedrifter, som en enterprise class hosting service som er skreddersydd for alle hosting krav. Fra hobby nettsteder, helt gjennom til høy trafikk, kritiske bedriftsnettsteder, kan Heroku håndtere alt. Best av alt, deres prisstruktur inkluderer en gratis tier som er mer enn i stand til å kjøre et lite nettsted, for eksempel porteføljens nettsted vi har bygd.
Heroku utnytter det stadig populære Git kildekoden styringsverktøy som deres mekanisme for å kontrollere distribusjon til plattformen. Alt du trenger for å komme i gang er et prosjekt, git
installert og en Heroku konto som kan fås ved å gå til registreringssiden.
Når du har registrert deg, gå inn på din Heroku-konto og opprett en app med en "web dyno". Heroku gir en dyne gratis, som er i stand til å kjøre en enkelt applikasjon instans og moderat trafikk til den forekomsten. Gi appen et navn eller la Heroku tilordne en til deg. Som vi trenger å bruke en database for søknaden vår, gå inn i Add-Ons og legg den gratis PostgreSQL-forekomsten til appen din.
Når du har opprettet appen, følger du disse trinnene for å konfigurere din git
depot og trykk til Heroku.
Installer Django Toolbelt som du finner i utvikler-delen av Heroku-nettstedet.
Initialiser Git repo i prosjektkatalogen ved å utstede følgende kommandoer:
$ git init. $ git add. $ git commit -m "Initial project commit."
Med Git-depotet på plass, legg til fjernkontrollen til Heroku-applikasjonen slik at du kan trykke koden til heroku.
$ heroku git: remote -a YOUR_APP_NAME
Heroku trenger å vite kommandoen for hvordan du starter søknaden din. For dette må du legge til en "Procfile
Msgstr "Legg til filen"Procfile
"inn i roten til prosjektkatalogen din, med følgende innhold.
web: gunicorn tuts.wsgi
For å tillate Heroku-appen muligheten til å koble til databasenes forekomst knyttet til søknaden din i skyen, må du legge til følgende linje for å settings.py
. Dette betyr at du ikke trenger å kode hardt, og Heroku vil håndtere forbindelsene for deg.
hvis ikke os.environ.get ("HOME") == '/ PATH / TO / YOUR / HOME': # Parse database konfigurasjon fra $ DATABASE_URL importere dj_database_url DATABASER ['default'] = dj_database_url.config ()
Ved å pakke inn innstillingen av denne databasetilkoblingen i hvis
setning, det gjør at konfigurasjonen kan fungere som på din lokale maskin, men sett opp databasen riktig når du er på Heroku.
Du må også legge til en requirements.txt
, som spesifiserer Python-avhengighetene for programmet, slik at Heroku kan installere dem i miljøet som er opprettet. Legg til requirements.txt
på samme nivå som Procfile
med følgende innhold:
Django == 1.6.2 dj-database-url == 0.3.0 dj-statisk == 0.0.5 django-verktøylinje == 0.0.1 gunicorn == 18.0 newrelic == 2.16.0.12 psycopg2 == 2.5.2 wsgiref = = 0.1.2
Med de filene som er opprettet, legg dem til Git og trykk deretter på Heroku-fjernkontrollen, hvor den vil bli mottatt og startet.
$ git add. $ git commit -m "Lagt til procfile and requirements.txt" $ git push heroku master
Du bør se noen utdata som den er sendt til Heroku og vil avslutte med følgende melding:
"http://APP_NAME.herokuapp.com/ distribuert til Heroku"
Hvis du skulle slå URL-adressen nå, vil du se en feilmelding. Hvis du husker på din lokale maskin, måtte du kjøre SyncDB
å lage tabellene i databasen for applikasjonen å bruke. Du må gjengi denne oppførselen på vår Heroku-instans. Heldigvis ga Heroku en enkel måte å utføre disse kommandoene på mot søknaden din i verktøybeltet du installerte tidligere.
$ heroku kjør python manage.py syncdb
Du bør da kunne besøke din link og se nettstedet som kjører på Heroku, gratis. Prøv å legge til noen elementer i databasen din på samme måte som du gjorde lokalt, for å sikre at databasen er riktig konfigurert.
Med søknaden din implementert med hell til Heroku-plattformen, kan du nå begynne å se på de mange tilleggene som tilbys. Heroku tilbyr et stort utvalg av tilleggsprogrammer fra databaser, overvåkingsverktøy, avanserte logverktøy, analyser, e-postleverandører og mange flere. Tilleggene er en av de store aspektene ved hosting din søknad på Heroku, da de raskt og enkelt kan tildeles søknaden din og innen få minutter, konfigureres og jobber. Heroku har strømlinjeformet prosessen for å legge til i disse verktøyene, og det tar mye arbeid ut av hendene, slik at du kan fokusere på å levere produktet.
En av tilleggene denne artikkelen vil fokusere på, er vedlegg av det store overvåkings- og analysverktøyet, New Relic. New Relic har mange muligheter til å grave inn i søknaden din og gi statistikk og data rundt elementer som forespørsler per minutt, feil, svartid og mer. Best av alt, Heroku gir igjen en gratis tier for å legge til nettstedet ditt for å gå sammen med gratis hosting vi har for øyeblikket.
Å legge til nye relikvier til Heroku-programmet ditt er enkelt og krever at du bare logger deg på din Heroku-kontoadministrasjonsside. Når du er der, klikker du på programmet du vil legge til det til og velger "+ Få tillegg". Du vil da bli presentert med det brede utvalget av tillegg som Heroku tilbyr. Søk gjennom for"Ny relikvie"og klikk på den. En side som viser beskrivelsen og prisingen vil bli vist, og en sammenfelling av funksjonene som er aktivert på hvert prisnivå. For det frie nivået får du i hovedsak tilgang til nesten alle funksjoner, men er bundet til bare de siste syv dagene verdt data. Fra New Relic legg til på siden, kan du bare kopiere og lime inn koden for å legge til New Relic til søknaden din og kjøre den på kommandolinjen.
$ heroku addons: legg til newrelic: stark
Med det som er lagt til, kan du deretter besøke appsiden din på din Heroku-konto, og du bør nå se New Relic oppført under databasen din. Klikk på den for å starte oppsettet i New Relic-kontoen din. Her må du godta vilkårene og deretter følge instruksjonene for å installere New Relic i din Django-applikasjon. Disse er som følger:
newrelic
" til din requirements.txt
og kjør deretter:$ pip installasjon -r krav.txt
$ newrelic-admin generere-config YOUR_LICENCE_KEY newrelic.ini
newrelic.ini
og endre "app_name
"til noe meningsfylt for deg, for eksempel" Django Tuts + "eller" Django Portfolio " Procfile
å inkludere starten av New Relic agent med serveren:NEW_RELIC_CONFIG_FILE = newrelic.ini newrelic-admin kjøreprogram gunicorn tuts.wsgi
$ git add .
$ git commit -m "Lagt til New Relic config."
$ git push heroku master
Det er alt der er til det! Innen ca. 15 minutter kan du få full New Relic-applikasjonsovervåkning knyttet til søknaden din, igjen gratis.
Tuts + har nylig hatt noen gode artikler som introduserer New Relic og viser noen mer avanserte teknikker og bruksområder for overvåkingsverktøyet. Du kan finne hele spekteret av artikler, eller du kan gå rett frem til min andre artikkel om ytelsestesting ved hjelp av New Relic og JMeter.
Forhåpentligvis har du funnet denne opplæringen informativ og noe som du kan dykke rett inn og prøve deg selv på en ekstra time eller to. Med litt styling og noe innhold som er innført via admin siden, oppretter Django, kan du raskt utvikle et profesjonelt nettsted, hostes og overvåkes gratis.
Sjekk ut nettstedet mitt i min forfatterprofil som ble skrevet i Django, hostet av Heroku og overvåket av New Relic, som inspirerte skrivingen av denne artikkelen.