Il rapido sviluppo e l'implementazione di applicazioni sta rapidamente diventando un requisito e un obiettivo per molti progetti, vecchi e nuovi. Fortunatamente, stanno nascendo una vasta gamma di opzioni che gli sviluppatori possono sfruttare in termini di risorse di implementazione e stretta integrazione con il linguaggio di programmazione di vostra scelta. Le distribuzioni cloud, in cui le aziende offrono una grande quantità di hardware che è scalabile in base alle proprie esigenze, stanno diventando sempre più popolari grazie alla loro flessibilità ed economicità nel seguire una retribuzione durante l'utilizzo del modello.
Uno dei cambiamenti più interessanti che questo passaggio alle piattaforme cloud ha portato, in particolare nel caso di progetti più piccoli, è che molte nuvole offrono un'opportunità di distribuzione gratuita anche se con un utilizzo minimo dell'hardware. Ciò consente l'hosting gratuito di applicazioni prototipo per prodotti beta o di esempio fornendo un'istanza dell'applicazione in esecuzione, che puoi rendere disponibile a chiunque desideri, rapidamente. Allo stesso modo, funziona perfettamente per qualsiasi sito Web che riceve una quantità moderata di traffico, ad esempio una piccola attività commerciale locale o persino un sito Web di portfolio in cui è possibile mostrare alcuni dei tuoi lavori.
Questo articolo si concentra sulla mia esperienza nello sviluppo rapido di un sito Web di portfolio in Python e nel popolare framework web Django utilizzando alcuni modelli di bootstrap per lo stile del sito. Con un sito pulito in grado di mostrare il lavoro, ti mostrerò come aggiungerlo a un sistema di gestione dei contenuti (CMS) generato da Django, oltre a quanto facilmente può essere implementato su Heroku per l'hosting del tuo sito e quindi monitora il traffico, gli errori e i tempi di risposta usando l'integrazione New Relic integrata in Heroku. Tutto gratis, entro poche ore di lavoro.
Prima di tutto, hai bisogno di un progetto che desideri ospitare sul cloud. Come accennato in precedenza, il mio progetto era quello di creare rapidamente un sito web di portfolio da cui mostrare i miei articoli e altri progetti, insieme alla mia C.V e alle informazioni di contatto. Python e Django offrono una perfetta corrispondenza per questi requisiti e puoi iniziare rapidamente a costruire un sito web dinamico con Django e il suo design ORM, fornendo una facile integrazione tra i tuoi modelli web e i dati sottostanti memorizzati in un database.
Prima di scrivere qualsiasi codice, dovresti creare un ambiente virtuale Python per il tuo progetto, per mantenere separate le dipendenze per questo progetto da qualsiasi altro. Sotto il cappuccio, virtualenv
copia efficacemente la tua installazione Python globale su .virtualenvs
cartella in una directory con nome per il tuo virtualenv
. Quindi aggiunge questa posizione alla parte anteriore del tuo percorso in modo che il tuo sistema utilizzi questa installazione Python per il tuo progetto. Tutte le dipendenze vengono quindi installate qui anziché a livello globale. Puoi farlo installando per la prima volta virtualenv
e virtualenvwrapper
usando il gestore di pacchetti Python "seme
".
$ pip installa virtualenv $ pip installa virtualenvwrapper
Dopo aver installato il virtualenv
strumenti dovresti quindi aggiungere una linea sorgente al tuo .bashrc
nella tua home directory (Linux / Mac OS X), che abilita il virtualenvwrapper
script sulla riga di comando, che consente una facile creazione, attivazione e cancellazione di ambienti virtuali. Puoi creare il virtualenv
come segue.
$ portafoglio mkvirtualenv
Con la configurazione dell'ambiente è possibile installare Django che verrà utilizzato per definire l'applicazione Web. Django può essere installato eseguendo il seguente comando.
$ pip installa django
Con le dipendenze in atto, il primo passo per creare il tuo progetto Django è creare una directory per mantenere i tuoi file seguendo una struttura abbastanza standard come mostrato di seguito. Fortunatamente, Django aiuta ad automatizzare questo processo con l'uso di django-admin.py
strumento da riga di comando. Esegui quanto segue per creare il tuo progetto e la directory dell'applicazione.
$ django-admin.py startproject tuts
Questo produrrà la seguente struttura.
tuts / tuts / __init__.py settings.py urls.py wsgi.py
Puoi leggere ulteriori informazioni sulla configurazione delle applicazioni Django nella documentazione ufficiale di Django, ma un riassunto di base di questi file è il seguente:
settings.py
- configurazione per la tua applicazione Django, come le connessioni al database e le app (vedi sotto).urls.py
- i percorsi che si collegano alle diverse parti dei tuoi siti.wsgi.py
- un file per consentire l'avvio della tua applicazione da server web come Apache.Il progetto creato finora è solo il contenitore esterno per la tua vera applicazione web. La carne del codice dovrebbe vivere all'interno di un'app e puoi ancora utilizzare i metodi di aiuto di Django per creare la struttura dell'app per te.
$ python manage.py portfolio di startapp
Questo aggiungerà quanto segue alla nostra struttura generale delle directory.
tuts / tuts / __init__.py settings.py urls.py wsgi.py portfolio / admin.py models.py tests.py views.py
Creata la tua app, devi quindi registrarla nel tuo progetto Django. Aprire settings.py
e aggiungi "portfolio" al INSTALLED_APPS
tuple:
INSTALLED_APPS = ('django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles' , 'portafoglio' )
Per verificare che tutto funzioni, immettere il seguente comando e visitare http: // localhost: 8000 nel browser. Dovresti vedere una pagina come quella mostrata nell'immagine qui sotto.
Ora che la directory del tuo progetto è stata configurata, iniziamo ad arricchire il codice. Poiché conosciamo il tipo di dati che vogliamo aggiungere al sito del portfolio, possiamo iniziare a definire il modello. Questo descrive i nostri dati nel database e consente a Django di andare avanti e creare i campi e le tabelle appropriati nel database per noi. Sul nostro sito web, inseriremo voci per articoli, libri e materiale per tesi. Ognuno di questi potrebbe avere il proprio modello individuale se si desidera fornire campi di dati univoci che non si applicano agli altri tipi di voci. Tuttavia, per questo sito Web, a ciascuna voce verrà assegnato un nome, la data di pubblicazione, la descrizione e l'URL. Nel models.py
file sotto la directory dell'app portfolio, è possibile definire i dati di questa voce come:
class Item (models.Model): publish_date = models.DateField (max_length = 200) name = models.CharField (max_length = 200) detail = models.CharField (max_length = 1000) url = models.URLField () thumbnail = models.CharField (max_length = 200)
Con il modello definito, è possibile generare questo nel database utilizzando gli strumenti integrati della riga di comando di Django che sono resi disponibili dopo l'installazione. Se usi la manage.py
file di nuovo, è anche possibile utilizzare il syncDB
comando per gestire l'installazione del database per te. Se si impartisce il seguente comando, verranno visualizzate le opzioni disponibili fornite da questo strumento di amministrazione.
$ python manage.py syncdb Creazione di tabelle ... Creazione di una tabella portfolio_item Installazione di SQL personalizzato ... Installazione di indici ... Installato 0 oggetto / i da 0 fixture
Usando il syncDB
metodo consente a Django di leggere il modello che abbiamo appena creato e impostare la struttura corretta per memorizzare questi dati nel database. Poiché questa è la prima volta che esegui questo comando, Django ti chiederà anche di rispondere ad alcune domande. Questi includeranno elementi come la creazione di un superutente per il database (essenzialmente l'amministratore) che consente di proteggere con password contro l'esecuzione di aggiornamenti e modifiche al database. Questo utente formerà anche il primo utente in grado di accedere al CMS che verrà generato per il sito Web una volta che abbiamo i modelli attivi e funzionanti.
Con la configurazione utente, il comando dovrebbe tornare mostrando che ha eseguito l'SQL sul database. Il passo successivo è ora essere in grado di accedere ai dati che verranno memorizzati per creare un front-end dinamico che si desidera visualizzare all'utente. Per ottenere ciò, è necessario aggiungere codice alle viste per accedere ai dati che verranno archiviati nel database. Con i dati disponibili per le viste, può quindi passarlo a modelli che possono essere interpretati come informazioni all'utente finale. In questo caso, questo sarà sotto forma di pagine HTML per un browser web. Tuttavia, vale la pena notare che questo modello potrebbe essere utilizzato per altri tipi di applicazioni come la produzione di JSON o XML, che utilizzerebbero nuovamente il modello per definire e spostare i dati e le viste che lo presentano, nel formato corretto di JSON / XML rispetto all'HTML.
Nelle viste, si faranno uso dei dati che verranno memorizzati nel database per la visualizzazione agli utenti. Per fare ciò, importiamo il Articolo
classe per accedere a quel modello (con Django che gestisce l'accesso del database sottostante) e fornire i dati come variabili al "template" che Django renderà. Il modello è principalmente HTML statico, con l'aggiunta della possibilità di eseguire un set limitato di codice Python per elaborare i dati e visualizzarli come richiesto. Ad esempio, è possibile passare l'intero elenco di oggetti oggetto al modello, ma quindi scorrere l'elenco all'interno del modello per ottenere solo il nome da ciascun elemento e visualizzarlo all'interno di un H1
etichetta. Si spera che ciò diventi più chiaro con l'aiuto degli esempi di seguito.
Apri il views.py
file creato per te in precedenza e aggiungi il codice seguente che verrà eseguito quando accederai alla pagina home (o indice) del tuo sito web.
indice def (richiesta): items = Item.objects.order_by ("- publish_date") now = datetime.datetime.now () restituisce render (request, 'portfolio / index.html', "items": items, "year ": now.year)
Questo raccoglierà tutti gli elementi memorizzati nel database, li ordinerà dal campo Data di pubblicazione, ti consentirà di visualizzare prima i più recenti e poi li passerà al modello che creerai a breve. Il dizionario passato al metodo di rendering è noto come contesto e sarete in grado di accedere facilmente a questo oggetto di contesto nel modello per visualizzare i dati come richiesto.
Django fa uso della libreria di modelli di Jinja2 per gestire l'elaborazione dei suoi modelli ed è davvero piacevole da usare, in quanto la sua sintassi è semplice e le sue capacità sono abbastanza potenti da produrre ciò di cui hai bisogno. Vale la pena notare, tuttavia, che la maggior parte degli sviluppatori si trova nella trappola quando lavorare con Jinja2 sta facendo troppa logica all'interno del modello. Mentre Jinja2 ti offre una grande quantità di operazioni standard di Python, è inteso per una semplice elaborazione per ottenere i dati nel formato per la visualizzazione. La logica per il recupero e la strutturazione dei dati dovrebbe essere stata eseguita in controller e in vista. Saprai quando sarai caduto in questa trappola quando stai codificando molto nei modelli e sarai frustrato quando Jinja2 emetterà errori o i dati visualizzati non appariranno come desideri. A questo punto, vale la pena rivisitare la vista per vedere se è possibile eseguire più operazioni in anticipo, prima di passarle al modello.
Con la nostra indice
metodo che gestisce l'accesso ai dati, non resta che definire il modello per visualizzare i nostri articoli. Come suggerito dal indice
metodo, è necessario aggiungere un index.html
file all'interno dell'app portfolio per renderlo visibile. Aggiungi quel file con il seguente codice.
Tuts + Esempio di Django Benvenuto nel tuo sito Django.
Ecco i tuoi oggetti:
Questa è una pagina HTML di base che si sovrappone e produce un elenco puntato dei nomi degli oggetti. Ovviamente puoi dare uno stile a ciò che desideri e ti consiglio caldamente di utilizzare un modello di bootstrap se stai cercando di far funzionare rapidamente qualcosa di professionale. Vedi di più sul sito Web di Bootstrap.
Il pezzo finale per vedere se tutto funziona, è quello di andare avanti e aggiungere l'URL di root per puntare a questo modello da rendere. Sotto la directory app "tuts" si aprono urls.py
e aggiungi la seguente direttiva URL agli esempi generati automaticamente e all'URL di amministrazione.
urlpatterns = patterns (", # Esempi: # url (r '^ $', 'tuts.views.home', name =" home "), # url (r '^ blog /', include ('blog.urls' )), url (r '^ admin /', include (admin.site.urls)), url (r '^ $', views.index, name = "index"),)
Finalmente, apri admin.py
per esporre il Articolo
classe per l'amministratore CMS, che consente di inserire i dati da visualizzare sulla home page.
da portfolio.models import Item admin.site.register (Item)
Dovresti quindi essere in grado di avviare il tuo sito (usando eseguire il server
come prima) ed eseguire i seguenti compiti.
syncDB
prima. Prova ad accedere ad altri aspetti dei dati dell'articolo nel modello. Ad esempio, modificare il codice all'interno del punto elenco per aggiungere anche la data di pubblicazione. Per esempio:
item.publish_date - item.name
Ora hai un sito di lavoro che ha semplicemente bisogno di uno stile e di più contenuti per poter funzionare come un sito web di portfolio di lavoro.
Heroku è una grande piattaforma cloud messa a disposizione di tutti gli sviluppatori e aziende, come servizio di hosting di classe enterprise su misura per soddisfare tutte le esigenze di hosting. Dai siti di hobbistica, fino al traffico intenso, ai siti Web aziendali critici, Heroku può gestire tutto. Soprattutto, la loro struttura dei prezzi include un livello gratuito che è più che in grado di gestire un piccolo sito web come il sito web del portfolio che stiamo costruendo.
Heroku sfrutta il sempre più popolare strumento di gestione del codice sorgente Git come meccanismo per controllare le implementazioni sulla piattaforma. Tutto ciò che serve per iniziare è un progetto, idiota
installato e un account Heroku che può essere ottenuto visitando la pagina di registrazione.
Dopo esserti registrato, accedi al tuo account Heroku e crea un'app con un "web dyno". Heroku fornisce gratuitamente una dina, che è in grado di eseguire una singola istanza di applicazione e di moderare il traffico verso tale istanza. Dai un nome alla tua app o lascia che Heroku assegni uno per te. Poiché dovremo utilizzare un database per la nostra applicazione, vai Add-Ons e allega l'istanza PostgreSQL gratuita alla tua app.
Con la tua app creata, segui questi passaggi per configurare il tuo idiota
deposito e spingere a Heroku.
Installa il dispositivo Django Toolbelt che puoi trovare nella sezione sviluppatori del sito Web di Heroku.
Inizializza il repository Git nella directory del tuo progetto inviando i seguenti comandi:
$ git init. $ git add. $ git commit -m "Inizial commit del progetto."
Con il repository Git in posizione, aggiungere il telecomando dell'applicazione Heroku in modo da poter inviare il codice a heroku.
$ goit git: remote -a YOUR_APP_NAME
Heroku ha bisogno di sapere il comando per esattamente come avviare la tua applicazione. Per questo, è necessario aggiungere un "Procfile
Msgstr "Aggiungi il file chiamato"Procfile
"nella radice della directory del progetto, con i seguenti contenuti.
web: gunicorn tuts.wsgi
Per consentire all'app Heroku di connettersi all'istanza del database collegata all'applicazione nel cloud, è necessario aggiungere la seguente riga a settings.py
. Ciò significa che non è necessario codificare in modo rigido alcuna configurazione e Heroku gestirà le connessioni per te.
se non os.environ.get ("HOME") == '/ PATH / TO / YOUR / HOME': # Analizza la configurazione del database da $ DATABASE_URL import dj_database_url DATABASES ['default'] = dj_database_url.config ()
Racchiudendo le impostazioni di questa connessione al database in Se
dichiarazione, consente alla configurazione di funzionare come avviene sulla macchina locale, ma imposta correttamente il database su Heroku.
Devi anche aggiungere un requirements.txt
, che specifica le dipendenze Python per l'applicazione in modo che Heroku possa installarle nell'ambiente creato. Inserisci requirements.txt
allo stesso livello del Procfile
con i seguenti contenuti:
Django == 1.6.2 dj-database-url == 0.3.0 dj-static == 0.0.5 django-toolbelt == 0.0.1 gunicorn == 18.0 newrelic == 2.16.0.12 psycopg2 == 2.5.2 wsgiref = = 0.1.2
Con questi file creati, aggiungili a Git e poi spingi al telecomando Heroku, dove verrà ricevuto e avviato.
$ git add. $ git commit -m "Aggiunto procfile e requirements.txt" $ git push heroku master
Dovresti vedere qualche output che viene inviato a Heroku e terminerà con il seguente messaggio:
"http://APP_NAME.herokuapp.com/ distribuito su Heroku"
Se dovessi colpire l'URL ora, vedresti un messaggio di errore. Se si richiama sul proprio computer locale, è necessario eseguire syncDB
per creare le tabelle nel database per l'applicazione da utilizzare. È necessario riprodurre questo comportamento nella nostra istanza di Heroku. Fortunatamente, Heroku ha fornito un modo semplice per eseguire questi comandi contro l'istanza dell'applicazione nella cintura degli strumenti installata in precedenza.
$ heroku esegue python manage.py syncdb
Dovresti quindi essere in grado di visitare il tuo link e vedere il sito Web in esecuzione su Heroku, gratuitamente. Prova ad aggiungere alcuni elementi al tuo database nello stesso modo in cui lo hai fatto localmente, per assicurarti che il database sia impostato correttamente.
Con la tua applicazione distribuita con successo sulla piattaforma Heroku, ora puoi iniziare a esaminare i numerosi componenti aggiuntivi forniti. Heroku offre una vasta gamma di componenti aggiuntivi che vanno da database, strumenti di monitoraggio, strumenti di log avanzati, analisi, provider di posta elettronica e molti altri. I componenti aggiuntivi sono uno dei grandi aspetti dell'hosting della tua applicazione su Heroku in quanto possono essere rapidamente e facilmente assegnati alla tua applicazione e in pochi minuti, essere configurati e funzionanti. Heroku ha semplificato il processo di aggiunta di questi strumenti e ci vuole un sacco di lavoro da fare in modo che tu possa concentrarti sulla consegna del tuo prodotto.
Uno degli add-on su cui questo articolo si focalizzerà, è quello di collegare il nuovo strumento di monitoraggio e analisi, New Relic. New Relic ha molte funzionalità per scavare nella tua applicazione e fornire statistiche e dati su elementi come richieste al minuto, errori, tempi di risposta e altro ancora. Meglio ancora, Heroku offre ancora una volta un livello gratuito per aggiungere al tuo sito web per andare avanti con l'hosting gratuito che abbiamo attualmente.
L'aggiunta di una nuova reliquia alla tua applicazione Heroku è semplice e richiede solo l'accesso alla pagina di gestione dell'account Heroku. Una volta lì, fai clic sull'applicazione a cui desideri aggiungerla e scegli "+ Ottieni add-on"Ti verrà quindi presentata la vasta gamma di componenti aggiuntivi forniti da Heroku.Nuova reliquia"e fai clic su di esso. Verrà visualizzata una pagina che mostra la descrizione e il prezzo e una ripartizione delle funzionalità abilitate a ogni livello di prezzo. Per il livello gratuito, in pratica accedi a quasi tutte le funzionalità ma sono legate solo agli ultimi sette giorni vale la pena di dati. Dalla pagina di aggiunta di New Relic, puoi semplicemente copiare e incollare il codice per allegare New Relic alla tua applicazione ed eseguirlo sulla riga di comando.
$ addons heroku: aggiungi newrelic: stark
Con quello aggiunto, puoi quindi rivisitare la tua pagina dell'app all'interno del tuo account Heroku e ora dovresti vedere New Relic elencato sotto il tuo database. Fare clic per iniziare la configurazione all'interno del tuo account New Relic. Qui dovrai accettare i termini e le condizioni e quindi seguire le istruzioni per installare New Relic nella tua applicazione Django. Questi sono i seguenti:
newrelic
" alla tua requirements.txt
e quindi eseguire:$ pip install -r requirements.txt
$ newrelic-admin generate-config YOUR_LICENCE_KEY newrelic.ini
newrelic.ini
e cambia il "nome dell'applicazione
"per qualcosa di significativo per te, ad es." Django Tuts + "o" Django Portfolio " Procfile
per includere l'avvio dell'agente New Relic con il server:NEW_RELIC_CONFIG_FILE = newrelic.ini newrelic-admin programma-run gunicorn tuts.wsgi
$ git add .
$ git commit -m "Aggiunta nuova configurazione di Relic."
$ git push heroku master
Questo è tutto ciò che c'è da fare! Entro circa 15 minuti, è possibile avere il monitoraggio dell'applicazione New Relic completo allegato alla propria applicazione, di nuovo gratuitamente.
Recentemente Tuts + ha pubblicato alcuni fantastici articoli che introducono New Relic e mostrano alcune tecniche e usi più avanzati per lo strumento di monitoraggio. Puoi trovare l'intera gamma di articoli o, in alternativa, puoi andare direttamente al mio altro articolo sui test delle prestazioni usando New Relic e JMeter.
Spero che tu abbia trovato questo tutorial informativo e qualcosa in cui puoi tuffarti e provarci da solo in un'ora o due. Con un po 'di stile e alcuni contenuti inseriti attraverso la pagina di amministrazione creata da Django, è possibile sviluppare rapidamente un sito professionale, ospitato e monitorato gratuitamente.
Controlla il mio sito web nel mio profilo dell'autore che è stato scritto in Django, ospitato da Heroku e monitorato da New Relic, che ha ispirato la scrittura di questo articolo.