# Esecuzione in locale ([name])

Se si usano solo geometrie procedurali e non si caricano texture, le pagine web dovrebbero funzionare direttamente dal file system, basta fare doppio click sul file HTML in un file manager e la pagina dovrebbe apparire funzionante nel browser (si vedrà file:///yourFile.html nella barra degli indirizzi del browser).

## Contenuto caricato da file esterni

Se si caricano modelli o texture da file esterni, a causa delle restrizioni di sicurezza del [link:http://en.wikipedia.org/wiki/Same_origin_policy same origin policy] del browser, il caricamento da un file system fallirà con un'eccezione di sicurezza.

Per risolvere questo problema, conviene eseguire i file da un server locale. Questo permette di accedere alla pagina come:

`http://localhost/yourFile.html`

Anche se è possibile cambiare le impostazioni di sicurezza del browser invece di lanciare un server in locale, non lo raccomandiamo. Utilizzando questo approccio si potrebbe esporre il proprio dispositivo a molte vulnerabilità soprattutto se lo stesso browser viene utilizzato per la regolare navigazione sul web. Usare un server locale è una pratica standard nello sviluppo web. Qui sotto, spieghiamo come si installa e utilizza un server locale.

## Eseguire un server locale

Molti linguaggi di programmazione hanno semplici server HTTP integrati. Non sono completi come i server di produzione come ad esempio [link:https://www.apache.org/ Apache] o [link:https://nginx.org NGINX], ma sono sufficienti per testare la tua applicazione three.js.

### Plugin per i principali editor

Alcuni editor hanno plugin che genereranno un semplice server su richiesta.

- [link:https://marketplace.visualstudio.com/items?itemName=yandeu.five-server Five Server] per Visual Studio Code.
- [link:https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer Live Server] per Visual Studio Code.
- [link:https://atom.io/packages/atom-live-server Live Server] per Atom.

### Servez

[link:https://greggman.github.io/servez Servez] è un semplice server con GUI.

### Node.js five-server

Server di sviluppo con un reload in tempo reale. Installazione:

`# Eliminare live-server (se è presente) npm -g rm live-server # Installare five-server npm -g i five-server # Aggiornare five-server (di volta in volta) npm -g i five-server@latest`

Esecuzione (dalla tua cartella locale):

`five-server . -p 8000`

### Node.js http-server

Node.js ha un semplice server HTTP. Installazione:

`npm install http-server -g`

Esecuzione (dalla tua cartella locale):

`http-server . -p 8000`

### Python server

Se hai installato [link:http://python.org/ Python], dovrebbe essere sufficiente eseguire i seguenti comandi da terminale (dalla cartella di lavoro):

`//Python 2.x python -m SimpleHTTPServer //Python 3.x python -m http.server`

Questo servirà i file dalla cartella corrente a localhost sotto la porta 8000, cioè nella barra degli indirizzi digita:

`http://localhost:8000/`

### Ruby server

Se hai installato Ruby, puoi avere lo stesso risultato eseguendo il seguente comando:

`ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"`

### PHP server

Anche PHP ha un server web integrato, a partire da php 5.4.0:

`php -S localhost:8000`

### Lighttpd

Lighttpd è un server web generico molto leggero. Tratteremo l'installazione su OSX con HomeBrew. Diversamente dagli altri server di cui abbiamo discusso qui, lighttpd è un server di produzione completo pronto per la produzione.

1. Installazione tramite homebrew `brew install lighttpd`
2. Creare un file di configurazione chiamato lighttpd.conf nella cartella in cui vuoi eseguire il server. [link:http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialConfiguration Qui] trovi un esempio.
3. Nel file di configurazione deve essere cambiato il valore di server.document-root con la directory da cui vuoi servire i file.
4. Avvialo con `lighttpd -f lighttpd.conf`
5. Inserisci l'indirizzo http://localhost:3000/ nella barra degli indirizzi del browser, questo servirà file statici dalla cartella che hai scelto.

### IIS

Se usi Microsoft IIS come web server. Per favore aggiungi le impostazioni del MIME type relative all'estensione .fbx prima del caricamento.

`File name extension: fbx MIME Type: text/plain`

Per impostazione predefinita IIS blocca i download di file .fbx, .obj. È necessario configurare IIS per abilitare il download di questo tipo di file

Altre semplici alternative sono [link:http://stackoverflow.com/q/12905426/24874 trattate qui] su Stack Overflow.