JD's Blog: no, Scrubs non c'entra proprio niente.

Hosting gratuito Django (e non solo) con DB PostgreSQL e accesso SSH

alwaysdata.comNei 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 8-O , 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:

#!/usr/bin/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:

AddHandler fcgid-script .fcgi
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:

ln -s /var/lib/python/django/1.0.2/django/contrib/admin/media/ media

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:

myproject/
    __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):

ssh myaccount@ssh.alwaysdata.com

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.

Condividi questo articolo:

  • Google Bookmarks
  • StumbleUpon
  • del.icio.us
  • Digg
  • Reddit
  • Wikio IT
  • Facebook
  • FriendFeed
  • MySpace
  • Twitter
  • LinkedIn
  • Mixx

Articoli forse correlati:

  1. Android: utilizzare le ROM devphone con l’emulatore dell’SDK in Ubuntu 9.10 Karmic Koala
  2. Ripristinare rapidamente GRUB2 dopo aver reinstallato Windows
  3. Far riconoscere l’HTC Dream G1 all’Android SDK/ADB/Fastboot sotto Ubuntu 9.10 Karmic Koala
  4. Tema Human per FileZilla

  • 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 utilizzando Google Chrome 3.0.196.2 Google Chrome 3.0.196.2 su Windows XP Windows XP
  • Ciao Andrea, grazie per aver segnalato l’articolo :) .

    Un saluto

    JD

    Commento inserito utilizzando Firefox 3.5.1 Firefox 3.5.1 su Ubuntu 9.04 Ubuntu 9.04
  • 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 utilizzando Google Chrome 2.0.172.39 Google Chrome 2.0.172.39 su Windows Vista Windows Vista
  • 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 utilizzando Google Chrome 2.0.172.39 Google Chrome 2.0.172.39 su Windows Vista Windows Vista
  • staff disponibilissimo e gentilissimo, risolto il problema precedente con l’uso di un indirizzo assoluto al database sqlite3

    nuovamente, grazie :)

    Commento inserito utilizzando Google Chrome 2.0.172.39 Google Chrome 2.0.172.39 su Windows Vista Windows Vista
  • 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 utilizzando Firefox 3.5.2 Firefox 3.5.2 su Windows 7 Windows 7
  • Un utilissimo articolo. Grazie e complimenti.

    Commento inserito utilizzando Safari 4.0.4 Safari 4.0.4 su Mac OS X 10.6.2 Mac OS X 10.6.2
  • Grazie :)

    Commento inserito utilizzando Firefox 3.6 Firefox 3.6 su Ubuntu 9.10 Ubuntu 9.10
  • Ma 10mb non sono veramente troppo pochi?? cosa ci potrà mai stare???

    Commento inserito utilizzando Firefox 3.6 Firefox 3.6 su Windows 7 Windows 7
  • 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.
    Il 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 :)

    Commento inserito utilizzando Firefox 3.6 Firefox 3.6 su Ubuntu 9.10 Ubuntu 9.10
  • Mi ha incuriosito parecchio questo articolo, devo provere :-)

    Commento inserito utilizzando Firefox 3.6 Firefox 3.6 su Windows 7 Windows 7
  • 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 utilizzando Google Chrome 5.0.307.11 Google Chrome 5.0.307.11 su Mac OS X 10.5.8 Mac OS X 10.5.8
  • Ciao, ti ringrazio :D .
    Sinceramente 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 :) .

    Commento inserito utilizzando Firefox 3.6 Firefox 3.6 su Ubuntu 9.10 Ubuntu 9.10

Puoi seguire i commenti a questo articolo anche attraverso il feed RSS 2.0