Hosting gratuito Django (e non solo) con DB PostgreSQL e accesso SSH
Nei mesi scorsi mi son trovato a dover realizzare un sito in Django, un framework open source per lo sviluppo di applicazioni web, scritto in linguaggio Python, seguendo il pattern Model-View-Controller. Devo dire di essere rimasto favorevolmente stupito da questo framework, veramente semplice e potente.
Uno dei più grandi inconvenienti è però la carenza quasi totale di hosting gratuiti (e il prezzo generalmente elevato di quelli a pagamento).
Dopo svariate ricerche su google sono incappato in quello che credo essere l’unico hosting gratuito di Django per ora esistente: www.alwaysdata.com.
Essendo l’unico servizio ad offrire free hosting non mi aspettavo grandi cose. Mi sono però dovuto ricredere alla grande. L’azienda francese offre infatti il supporto a tutte le principali versioni di Django (1.0.2 e SVN compresa), oltre ad accesso SSH
, database PosgreSQL e dominio di terzo livello!
Ma ecco in dettaglio cosa offre il pacchetto gratuito:
- Spazio su disco: 10 MB (non è tanto ma meglio di niente… Comunque basta hostare i file di grandi dimensioni altrove
) - Traffico mensile: 1 GB
- Memoria: 40 MB
- PHP 5 con php.ini personalizzabile
- Python 2.4 e 2.5
- Ruby 1.8.6
- Perl 5.8.8
- Supporto a Django (0.90, 0.91.3, 0.95.4, 0.96.3, 1.0, 1.0.1, 1.0.2, SVN)
- Supporto a Ruby on Rails
- MySQL 5.0
- PostgreSQL 8.3 et PostGIS
- Numero di database illimitato
- phpMyAdmin e phpPgAdmin
- Supporto IMAP(S), POP3(S), SMTP(S)
- Dominio di terzo livello su alwaysdata.net
- Completo accesso SSH (vim, emacs, gcc, mutt, lynx, etc)
- Uptime > 99,9 %
- Accesso FTP, SFTP, WebDAV
- Supporto tramite ticket 7 giorni su 7
Portare il mio progetto sviluppato interamente in locale su alwaysdata.com è stato semplicissimo. Mi sono limitato ad eseguire una rapida ricerca nel wiki dell’azienda dove ho trovato le istruzioni passo passo in francese. Mi sono preso la briga di tradurre la sezione del wiki relativa a Django per chi non masticasse bene la lingua dei cugini d’oltralpe:
Importare una applicazione Django
Primo passo
Innanzi tutto è necessario creare una directory public nella radice del vostro progetto. All’interno va creato il file django.fcgi contenente il seguente codice python:
import os, sys
_PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, _PROJECT_DIR)
sys.path.insert(0, os.path.dirname(_PROJECT_DIR))
_PROJECT_NAME = _PROJECT_DIR.split('/')[-1]
os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
Vanno poi dati i diritti di esecuzione al file (tramite SSH : chmod +x django.fcgi).
Secondo passo
Sempre all’interno della directory public, creare un file .htaccess contenente:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
Terzo passo
Questo passo è necessario solo se si utilizza l’interfaccia di amministrazione di Django.
Sempre all’interno della directory public, creare un link simbolico che punta ai file media dell’admin Django:
Rimpiazzate eventualmente 1.0.2 con la versione di Django che utilizzate.
Quarto passo
Per garantire la sicurezza dei vostri file e permettere all’amministrazione Django di funzionare, questo passo è obbligatorio.
Dall’interfaccia d’amministrazione alwaysdata, fate puntare il vostro sottodominio verso la directory public del vostro progetto.
Ad esempio, se il vostro progetto è in /home/myaccount/www/myproject dovete impostare la directory di destinazione del vostro dominio myaccount.alwaysdata.net in modo che punti verso /myproject/public.
Alla fine
L’albero delle directory dovrà assomigliare a questo:
__init__.py
manage.py
public/
django.fcgi
.htaccess
media/
settings.py
urls.py
myapp/
views.py
models.py
Connettersi tramite SSH
Per prima cosa dovete abilitare il vostro account SSH (per questioni di sicurezza è disattivato di default):
Nell’interfaccia di amministrazione selezionare Accès distant > SSH. Cliccate sull’icona « Modifier » e selezionate « Activer », per finire cliccate su « Modifier ».
Per effettuare una connessione da terminale è sufficiente digitare il comando sottostante (sostituite myaccount con il nome del vostro account):
Se necessario è possibile accedere tramite SSH anche da interfaccia web.
I programmi disponibi sono parecchi:
- editors : emacs, vim, nano…
- development: gcc, autoconf, automake, binutils, bison, flex, doxygen, make, cvs, subversion, bazaar, git, mercurial, darcs…
- internet : mutt, fetchmail, slrn, lynx, curl…
Connettersi tramite FTP
I dati per accedere tramite FTP sono i seguenti:
- Server Host: ftp.alwaysdata.com
- Porta: 21
- User: Il nome dell’utente FTP, di defaut è il nome del vostro account
- Password: la password associata all’utente FTP, di défaut è la password utilizzata durante l’isctrizione.
Articoli forse correlati:
Mi chiamo Roberto, sono uno laureato in Informatica e per lavoro faccio lo sviluppatore mobile.






Andrea
3 ago, 2009
Complimenti, ottimo post, mi appresto adesso a studiare python e sono molto interessato a django! twitto l’articolo e lo salvo su del.icio.us!
Commento inserito utilizzandoJD
5 ago, 2009
Ciao Andrea, grazie per aver segnalato l’articolo
.
Un saluto
JD
Commento inserito utilizzandopiergiu
5 ago, 2009
Graazie!!! finalmente posso provare e mostrare le mie prove in django!
Che poi la proceduta di importazione, mi ha permesso di far funzionare un’applicazione creata la sul momento, proprio grazie alla questioncina della cartella pubblic e .htaccess
favoloso, grazie +infinito!
Commento inserito utilizzandopiergiu
5 ago, 2009
aggiornamento: non riesco ad evitar un
”
Unhandled Exception
An unhandled exception was thrown by the application.
”
quando tento di accedere al pannello di amministrazione di django! peccato!!
Commento inserito utilizzandopiergiu
6 ago, 2009
staff disponibilissimo e gentilissimo, risolto il problema precedente con l’uso di un indirizzo assoluto al database sqlite3
nuovamente, grazie
Commento inserito utilizzandoJD
6 ago, 2009
Ciao, grazie a te per i commenti
Lo staff è veramente molto disponibile e rapido nel rispondere. Ha risolto anche a me un paio di problemi nel giro di mezzora e alle 23.30!
Commento inserito utilizzandoAntonio
13 feb, 2010
Un utilissimo articolo. Grazie e complimenti.
Commento inserito utilizzandoJD
13 feb, 2010
Grazie
Commento inserito utilizzandofabio
24 feb, 2010
Ma 10mb non sono veramente troppo pochi?? cosa ci potrà mai stare???
Commento inserito utilizzandoJD
24 feb, 2010
Beh non si propone come alternativa ai vari siti di hosting gratuito, ma ti permette di provare i servizi che vende gratuitamente e senza impegno. Poi se qualcuno, come è capitato a me, vuole provare a metter su un sito in python/django/ruby/ruby-on-rails lo può fare: in 10 mega ci sta tanto di quel codice che non immagini, eventualmente le immagini e gli altri media che occupano molto spazio puoi sempre hostarli da qualche altra parte.
Commento inserito utilizzandoIl sito in django che avevo creato (una progetto di social bookmark con tanto di registrazione/login, classifica, condivisione, edit in AJAX, interfaccia di amministrazione…) occupava qualche centinaio di kB, compreso il tema grafico.
Non era nulla di eccezionale, ma 10MB bastavano e avanzavano
fabio
24 feb, 2010
Mi ha incuriosito parecchio questo articolo, devo provere
Commento inserito utilizzandoMarco
20 mar, 2010
Ottimo articolo! Domani provo anch’io. Volevo chiederti se avevi considerato Google App Engine per l’hosting. E’ gratuito (per la versione base). Lo svantaggio è che occorre fare degli hack qua e là, ma la cosa che non mi va giù è quella di dover utilizzare una variante dei modelli diversa da quella di Django
ciao e grazie per aver condiviso queste informazioni! Marco
Commento inserito utilizzandoJD
20 mar, 2010
Ciao, ti ringrazio
.
.
Commento inserito utilizzandoSinceramente Google App Engine non l’ho proprio preso in considerazione, anche perché oramai mi trovo talmente bene su alwaysdata che non ne sento neanche l’esigenza
Andre
1 dic, 2010
Ho un problema.
Commento inserito utilizzandoHo creato una piccola applicazione che permette il login di un utente presente nel DB, in locale funziona tutto, invece dopo aver caricato tutto su alwaysdata mi dice “Unhandled Exception”, vado a cercarmi l’error.log e trovo “DatabaseError: no such table: django_session”.
Qualcuno ha riscontrato questo errore e l’ha risolto?
Ho seguito tutte le impostazioni di questo articolo e le ho provate prima con un semplicissimo HELLO WORDL e ha funzionato alla grande. Ora però non va!
Mik
9 gen, 2011
credo che rilanciando il “syncdb” il tuo problema dovrebbe risolversi…
Commento inserito utilizzando@rchie
6 mar, 2011
Bravo!! Python e django meritano davvero, bisognerebbe publicizzarli un tantino più spesso. Ottimo post.
Commento inserito utilizzandoGabriele
7 mar, 2011
Grande!
Commento inserito utilizzandoPietro
12 dic, 2011
Grazie per la segnalazione, proverò, sto proprio cercando qualcosa di questo tipo.
x Fabio piccola nota: non stai nel 10MB? Chiedi rimborso. Ah, non puoi, perché è gratuito? Allora di che cosa ti lamenti? Hai bisogno di più spazio? Semplice, basta pagare, 9 € al mese per 10GB di spazio forse puoi permettersi, sono 30 centesimi al giorno.
Commento inserito utilizzando