# Como executar localmente

Se você usar apenas geometrias procedurais e não carregar nenhuma textura, as páginas web devem funcionar direto do sistema de arquivos, bastando clicar duas vezes no arquivo HTML em um gerenciador de arquivos para então funcionar no navegador (você verá file:///yourFile.html na barra de endereço).

## Conteúdo carregado de arquivos externos

Se você carregar modelos ou texturas de arquivos externos, devido a [link:http://en.wikipedia.org/wiki/Same_origin_policy same origin policy] dos navegadores, o carregamento de um sistema de arquivos falhará com uma exceção de segurança.

Para resolver isso, execute os arquivos de um servidor web local. Isso permitirá acessar a página por:

`http://localhost/yourFile.html`

Embora também seja possível alterar as configurações de segurança do navegador ao invés de executar um servidor local, não recomendamos essa abordagem. Isso pode abrir seu dispositivo para vulnerabilidades, se o mesmo navegador é usado para navegação regular na web. O uso de um servidor local é uma prática padrão em desenvolvimento web e explicamos abaixo como instalar e usar um servidor local.

## Rodando um servidor local

Muitas linguagens de programação têm servidores HTTP simples embutidos. Eles não são tão completos quanto servidores de produção como o [link:https://www.apache.org/ Apache] ou o [link:https://nginx.org NGINX], no entanto devem ser suficientes para testar sua aplicação three.js.

### Plugins para editores populares de código

Alguns editores de código tem plugins que irão rodar um servidor simples.

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

### Servez

[link:https://greggman.github.io/servez Servez] é um servidor simples com uma interface gráfica.

### Node.js five-server

Servidor de desenvolvimento com live reload. Para instalar:

`# Remove live-server (if you have it) npm -g rm live-server # Install five-server npm -g i five-server # Update five-server (from time to time) npm -g i five-server@latest`

Para executar (do seu diretório local):

`five-server . -p 8000`

### Node.js http-server

O Node.js tem um pacote simples de um servidor HTTP. Para instalar:

`npm install http-server -g`

Para executar (do seu diretório local):

`http-server . -p 8000`

### Servidor Python

Se você tem [link:http://python.org/ Python] instalado, deve ser suficiente para executar esse comando (do seu diretório de trabalho):

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

Isso vai servir os arquivos do diretório atual para localhost na porta 8000, isto é, na barra de endereço digite:

`http://localhost:8000/`

### Servidor Ruby

Se você tem Ruby instalado, você poder ter o mesmo resultado executando:

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

### Servidor PHP

PHP também tem um servidor web embutido, começando com php 5.4.0:

`php -S localhost:8000`

### Lighttpd

Lighttpd é um servidor web de uso geral muito leve. Abordaremos a instalação no OSX com HomeBrew aqui. Ao contrário dos outros servidores discutidos, Lighttpd é um servidor completo de produção.

1. Instale via homebrew `brew install lighttpd`
2. Crie um arquivo de configuração chamado lighttpd.conf no diretório onde você irá executar o servidor web. Um exemplo está [link:http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialConfiguration aqui].
3. No arquivo conf, mude o server.document-root para o diretório do qual você quer servir os arquivos.
4. Comece com `lighttpd -f lighttpd.conf`
5. Navegue até http://localhost:8000/ e ele servirá os arquivos estáticos do diretório que você escolheu.

### IIS

Se você estiver usando o Microsoft IIS como servidor web. Por favor adicione configurações de tipo MIME em relação à extensão .fbx antes de carregar.

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

Por padrão, o IIS bloqueia downloads de arquivos .fbx e .obj. Você tem que configurar o IIS para habilitar que esse tipo de arquivo possa ser baixado.

Outras alternativas simples são [link:http://stackoverflow.com/q/12905426/24874 discutidas aqui] no StackOverflow.