<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JD&#039;s Blog &#187; Hosting</title>
	<atom:link href="http://www.jdsblog.it/category/informatica/web-development/hosting/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jdsblog.it</link>
	<description>no, Scrubs non c&#039;entra proprio niente.</description>
	<lastBuildDate>Mon, 22 Feb 2010 16:08:36 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hosting gratuito Django (e non solo) con DB PostgreSQL e accesso SSH</title>
		<link>http://www.jdsblog.it/informatica/375/hosting-gratuito-django-e-non-solo-con-db-postgresql-e-accesso-ssh/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=hosting-gratuito-django-e-non-solo-con-db-postgresql-e-accesso-ssh</link>
		<comments>http://www.jdsblog.it/informatica/375/hosting-gratuito-django-e-non-solo-con-db-postgresql-e-accesso-ssh/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 09:35:56 +0000</pubDate>
		<dc:creator>JD</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Web Hosting]]></category>

		<guid isPermaLink="false">http://www.jdsblog.it/?p=375</guid>
		<description><![CDATA[Breve recensione di un ottimo servizio di free hosting Django, con tanto di accesso SSH e database PostgreSQL!]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-376 alignright" title="alwaysdata.com" src="http://www.jdsblog.it/wp-content/uploads/2009/07/alwaysdata.png" alt="alwaysdata.com" width="80" height="86" />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 <a href="http://it.wikipedia.org/wiki/Model-View-Controller" target="_blank">Model-View-Controller</a>. Devo dire di essere rimasto favorevolmente stupito da questo framework, veramente semplice e potente.</p>
<p>Uno dei più grandi inconvenienti è però la carenza quasi totale di hosting gratuiti (e il prezzo generalmente elevato di quelli a pagamento).<br />
Dopo svariate ricerche su google sono incappato in quello che credo essere l&#8217;unico hosting gratuito di Django per ora esistente: <a href="http://www.alwaysdata.com/" target="_blank">www.alwaysdata.com</a>.</p>
<p>Essendo l&#8217;unico servizio ad offrire free hosting non mi aspettavo grandi cose. Mi sono però dovuto ricredere alla grande. L&#8217;azienda francese offre infatti il supporto a tutte le principali versioni di Django  (1.0.2 e SVN compresa), oltre ad <strong>accesso SSH</strong><strong> <img src='http://www.jdsblog.it/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> </strong>, database PosgreSQL e dominio di terzo livello!<span id="more-375"></span></p>
<p>Ma ecco in dettaglio cosa offre il pacchetto gratuito:</p>
<ul>
<li>Spazio su disco: 10 MB <span style="font-size: x-small;">(non è tanto ma meglio di niente&#8230; Comunque basta hostare i file di grandi dimensioni altrove <img src='http://www.jdsblog.it/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</span></li>
<li>Traffico mensile: 1 GB</li>
<li>Memoria: 40 MB</li>
<li>PHP 5 con  <strong>php.ini personalizzabile</strong></li>
<li><strong>Python 2.4 e 2.5</strong></li>
<li>Ruby 1.8.6</li>
<li>Perl 5.8.8</li>
<li><strong>Supporto a Django (0.90, </strong><strong>0.91.3, </strong><strong>0.95.4, </strong><strong>0.96.3, </strong><strong>1.0, 1.0.1, 1.0.2, SVN) </strong></li>
<li>Supporto a Ruby on Rails</li>
<li>MySQL 5.0</li>
<li><strong>PostgreSQL 8.3</strong> et PostGIS</li>
<li>Numero di database illimitato</li>
<li>phpMyAdmin e phpPgAdmin</li>
<li>Supporto IMAP(S), POP3(S), SMTP(S)</li>
<li>Dominio di terzo livello su alwaysdata.net</li>
<li><strong>Completo accesso SSH (vim, emacs, gcc, mutt, lynx, etc)<br />
</strong></li>
<li>Uptime &gt; 99,9 %</li>
<li>Accesso FTP, SFTP, WebDAV</li>
<li>Supporto tramite ticket 7 giorni su 7</li>
</ul>
<p>Portare il mio progetto sviluppato interamente in locale su alwaysdata.com è stato semplicissimo. Mi sono limitato ad eseguire una rapida ricerca nel wiki dell&#8217;azienda dove ho trovato le istruzioni passo passo in francese. Mi sono preso la briga di tradurre la <a href="http://wiki.alwaysdata.com/wiki/D%C3%A9ployer_une_application_Django" target="_blank">sezione del wiki relativa a Django</a> per chi non masticasse bene la lingua dei cugini d&#8217;oltralpe:</p>
<h2>Importare una applicazione Django</h2>
<h4>Primo passo</h4>
<p>Innanzi tutto è necessario creare una directory <span style="font-family: courier new,courier;">public</span> nella radice del vostro progetto. All&#8217;interno va creato il file <span style="font-family: courier new,courier;">django.fcgi</span> contenente il seguente codice python:</p>
<div class="codecolorer-container python geshi" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:630px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>, <span style="color: #dc143c;">sys</span><br />
<br />
_PROJECT_DIR = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">dirname</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">dirname</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">abspath</span><span style="color: black;">&#40;</span>__file__<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">sys</span>.<span style="color: black;">path</span>.<span style="color: black;">insert</span><span style="color: black;">&#40;</span>0, _PROJECT_DIR<span style="color: black;">&#41;</span><br />
<span style="color: #dc143c;">sys</span>.<span style="color: black;">path</span>.<span style="color: black;">insert</span><span style="color: black;">&#40;</span>0, <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">dirname</span><span style="color: black;">&#40;</span>_PROJECT_DIR<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<br />
_PROJECT_NAME = _PROJECT_DIR.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>-1<span style="color: black;">&#93;</span><br />
<span style="color: #dc143c;">os</span>.<span style="color: black;">environ</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'DJANGO_SETTINGS_MODULE'</span><span style="color: black;">&#93;</span> = <span style="color: #483d8b;">&quot;%s.settings&quot;</span> <span style="color: #66cc66;">%</span> _PROJECT_NAME<br />
<br />
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">core</span>.<span style="color: black;">servers</span>.<span style="color: black;">fastcgi</span> <span style="color: #ff7700;font-weight:bold;">import</span> runfastcgi<br />
runfastcgi<span style="color: black;">&#40;</span>method=<span style="color: #483d8b;">&quot;threaded&quot;</span>, daemonize=<span style="color: #483d8b;">&quot;false&quot;</span><span style="color: black;">&#41;</span></div></div>
<p>Vanno poi dati i diritti di esecuzione al file (tramite SSH : <span style="font-family: courier new,courier;">chmod +x django.fcgi</span>).</p>
<h4>Secondo passo</h4>
<p>Sempre all&#8217;interno della directory <span style="font-family: courier new,courier;">public</span>, creare un file <span style="font-family: courier new,courier;">.htaccess</span> contenente:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:630px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AddHandler fcgid-script .fcgi<br />
RewriteEngine On<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]</div></div>
<h4>Terzo passo</h4>
<p>Questo passo è necessario solo se si utilizza l&#8217;interfaccia di amministrazione di Django.</p>
<p>Sempre all&#8217;interno della directory <span style="font-family: courier new,courier;">public</span>, creare un link simbolico che punta ai file media dell&#8217;admin Django:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>python<span style="color: #000000; font-weight: bold;">/</span>django<span style="color: #000000; font-weight: bold;">/</span>1.0.2<span style="color: #000000; font-weight: bold;">/</span>django<span style="color: #000000; font-weight: bold;">/</span>contrib<span style="color: #000000; font-weight: bold;">/</span>admin<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span> media</div></div>
<p>Rimpiazzate eventualmente <span style="font-family: courier new,courier;">1.0.2</span> con la versione di Django che utilizzate.</p>
<h4>Quarto passo</h4>
<p>Per garantire la sicurezza dei vostri file e permettere all&#8217;amministrazione Django di funzionare, questo passo è obbligatorio.</p>
<p>Dall&#8217;<a href="http://admin.alwaysdata.com/" target="_blank">interfaccia d&#8217;amministrazione alwaysdata</a>, fate puntare il vostro sottodominio verso la directory <span style="font-family: courier new,courier;">public</span> del vostro progetto.</p>
<p>Ad esempio, se il vostro progetto è in <span style="font-family: courier new,courier;">/home/myaccount/www/myproject</span> dovete impostare la directory di destinazione del vostro dominio <span style="font-family: courier new,courier;">myaccount.alwaysdata.net</span> in modo che punti verso <span style="font-family: courier new,courier;">/myproject/public</span>.</p>
<h4>Alla fine</h4>
<p>L&#8217;albero delle directory dovrà assomigliare a questo:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:630px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">myproject/<br />
&nbsp; &nbsp; __init__.py<br />
&nbsp; &nbsp; manage.py<br />
&nbsp; &nbsp; public/<br />
&nbsp; &nbsp; &nbsp; &nbsp; django.fcgi<br />
&nbsp; &nbsp; &nbsp; &nbsp; .htaccess<br />
&nbsp; &nbsp; &nbsp; &nbsp; media/<br />
&nbsp; &nbsp; settings.py<br />
&nbsp; &nbsp; urls.py<br />
&nbsp; &nbsp; myapp/<br />
&nbsp; &nbsp; &nbsp; &nbsp; views.py<br />
&nbsp; &nbsp; &nbsp; &nbsp; models.py</div></div>
<h2>Connettersi tramite SSH</h2>
<p>Per prima cosa dovete abilitare il vostro account SSH (per questioni di sicurezza è disattivato di default):<br />
Nell&#8217;interfaccia di amministrazione selezionare <a title="http://admin.alwaysdata.com/ssh/" rel="nofollow" href="http://admin.alwaysdata.com/ssh/">Accès distant &gt; SSH</a>. Cliccate sull&#8217;icona « Modifier » e selezionate « Activer », per finire cliccate su « Modifier ».</p>
<p>Per effettuare una connessione da terminale è sufficiente digitare il comando sottostante (sostituite <span style="font-family: courier new,courier;">myaccount</span> con il nome del vostro account):</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:630px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ssh</span> myaccount<span style="color: #000000; font-weight: bold;">@</span>ssh.alwaysdata.com</div></div>
<p>Se necessario è possibile <a href="http://ssh.alwaysdata.com/" target="_blank">accedere tramite SSH anche da interfaccia web</a>.</p>
<p>I programmi disponibi sono parecchi:</p>
<ul>
<li> <strong>editors</strong> : emacs, vim, nano&#8230;</li>
<li><strong>development</strong>: gcc, autoconf, automake, binutils, bison, flex, doxygen, make, cvs, subversion, bazaar, git, mercurial, darcs&#8230;</li>
<li> <strong>internet</strong> : mutt, fetchmail, slrn, lynx, curl&#8230;</li>
</ul>
<h2>Connettersi tramite FTP</h2>
<p>I dati per accedere tramite FTP sono i seguenti:</p>
<ul>
<li><strong>Server Host</strong>: ftp.alwaysdata.com</li>
<li><strong>Porta</strong>: 21</li>
<li><strong>User</strong>: Il nome dell&#8217;utente FTP,  di defaut è il nome del vostro account</li>
<li><strong>Password</strong>: la password associata all&#8217;utente FTP, di défaut è la password utilizzata durante l&#8217;isctrizione.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jdsblog.it/informatica/375/hosting-gratuito-django-e-non-solo-con-db-postgresql-e-accesso-ssh/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
