Quickstart

Progetti

Provvedere alla creazione del progetto tramite comando jmb-start. Il comando accetta come parametro la versione di django desiderata (es. p18 per Django 1.8). È consigliabile optare per l’ultima versione stabile di Django di cui sia stato creato un apposito skeleton.

jmb-start -t p18

Il progetto andrà nominato come il dominio di pertinenza

www.nomeprogetto.it

Si procede alla modifica del file setup.py, nel quale è necessario indicare i required_install.

Si crea un db prostgres con il medesimo nome del progetto

createdb www.nomeprogetto.it

Si crea un file local.py, inserendo i dati del db.

Terminata la fase di creazione è necessario pushare il progetto realizzato sul repository hg.thundersystems.it

hg clone . ssh://dev@hg.thundersystems.it/jmb-siti/nomeprogetto

Il medesimo path andrà aggiunto al file .hg/hgrc alla voce default.

[paths]
default = ssh://dev@hg.thundersystems.it//home/hg/thunder/jmb/jmb.core

Applicazioni

Per creare le app usare il comdando jmb-start con paramentro -t japp

jmb-start -t japp nome.app

Terminata la fase di creazione è necessario pushare l’app realizzata sul repository hg.thundersystems.it

hg clone . ssh://dev@hg.thundersystems.it/jmb-siti/jmb/custom/nomeapp

Per inserire l’app nel progetto reigstrarla nel file buildout.cfg, nel file setup.py e nel /web/settings/base.py.

Indirizzo email Jumbo

Ogni progetto deve avere un indirizzo email jumbo@nomeprogetto.it, che verrà utilizzato per creare i vari account esterni.

Cookiecutter

E” possibile creare dei template per i nuovi progetti usando l’utility cookiecutter. Nel repository di Thux su Bitbucket esiste una sezione COOKIE con i template personalizzati sia per il progetto Django che per le apps. Per creare un nuovo progetto:

cookiecutter ssh://hg@bitbucket.org/thux/django-project-cookiecutter

Vengono richiesti una serie di input sul progetto (nome, anno, tipologia, directory, licenze, database, app esterne da installare etc…). Per ogni input richiesto viene proposto un valore di default.

Per creare delle nuove app ci si sposta nella directory apps del progetto e si lancia il comando:

cookiecutter ssh://hg@bitbucket.org/thux/django-app-cookiecutter

Anche in questo caso vengono chieste in input una serie di informazioni tra cui il nome dell’app e dei relativi modelli che vengono creati senza campi.

E” possibile creare un file di configurazione in formato YAML per passare a cookiecutter le varie opzioni, senza che vengano chieste in input all’utente. Ecco un esempio di file di configurazione app.yaml per la creazione di una app.

default_context:
    app_verbose_name: "SampleApp"
    model_names: "First Model, Second Model"
    model_plural_names: "First Models, Second Models"
    app_name: "sampleapp"
    author: "THUX Team"
    year: "2018"
    djangorestframework: "yes"
    reusable_app: "no"
    version: "0.0.1"
    license: "MIT"
    absolute_import_path: "apps.sampleapp"

Il comando da utilizzare per dare in pasto il file di config a cookiecutter è il seguente:

cookiecutter --config-file app.yaml --no-input ssh://hg@bitbucket.org/thux/django-app-cookiecutter

Deploy

Sul server copiare il codice del sito con mercurial

hg clone . ssh://dev@hg.thundersystems.it/jmb-siti/nomeprogetto

Modificare web/settings/local.py

Creare utente PostgreSQL

su – postgres
createuser -sP nomeuser

Creare database PostgreSQL con il medesimo nome del progetto assegnandogli l’utente precedentemente creato

createdb nomeprogetto -O nomeuser

Inizializzare il progetto con jmb-go con parametro -d (per «deployment»)

jmb-go -d

Creare il file di configurazione di uWsgi

jmb-prepare -cw nomeprogetto

Creare il file di configurazione di Nginx

jmb-prepare -cN nomeprogetto

Modificare il file di configurazione di Nginx, in /etc/nginx/sites-available/ modificando le voci relative all’indirizzo da servire. Sono presenti due sezioni denominate “server”: la primo è necessario per il redirect del sito senza il www, la seconda contiene l’indirizzo o gli indirizzi effettivamente serviti. Nella prima sezione modificare le voci server_name e return

server {
    listen         80;
    server_name    nomeprogetto.it;
    return         301 http://www.nomeprogetto.it;
}

Nella seconda sezione modificare la voce server_name e selezionare la porta: 80 o 443

server {
    [...]
    listen      80;
    #    listen      443 ssl;
    server_name    nomeprogetto.it;
    [...]

Per attivare nginx sul progetto, creare un link simbolico dalla cartella sites-available alla cartella sites-enabled

ln -s www.nomeprogetto.it ../sites-available/

Riavviare il servizio di nginx

service nginx reload

Avviare il server, lanciando da dentro la cartella del progetto, il comando

dj start