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 studente di Informatica e abito a Cagliari.






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