Como iniciar facilmente um servidor da web em qualquer pasta?

115

Estou procurando uma maneira relativamente indolor de iniciar um servidor Web com raiz de documento em qualquer pasta que eu especificar (ou melhor ainda, onde estou iniciando).

Costumo experimentar coisas novas, como estruturas JS ou algo assim, em uma nova pasta em algum lugar aqui:

/home/alexander/code/angularjs/

Seria conveniente apenas entrar nesse diretório e digitar algo como:

start-webserver-here 

para que um servidor Web comece a escutar na porta 80 e atenda a esse diretório, e eu possa experimentar o que estiver trabalhando.

Eu instalei o XAMPP, mas parece que é um apache básico com uma raiz de documento que eu teria que mudar, mesmo com privilégios de root, além de conceder permissões para todas as pastas, etc.

Existe uma maneira mais fácil?

Alexander Rechsteiner
fonte
Alguém compilou uma lista grande de forros para conseguir isso: gist.github.com/willurd/5720255
Abhinav Bhatia

Respostas:

174

Usar

python2 -m SimpleHTTPServer 80

ou

python3 -m http.server 80

para iniciar um servidor HTTP simples.

Substitua 80por outro número se você quiser ouvir em uma porta diferente. Para portas <1024, ele precisa ser executado com privilégios de root.

Florian Diesch
fonte
1
É exatamente isso que eu tenho procurado! Danke!
Alexander Rechsteiner
1
Você pode executar isso em paralelo ao Apache? Em uma porta diferente, é claro (embora eu queira que você exploda, dizendo que elas podem usar as mesmas portas).
dibs
3
@dibs Sim, ambos podem ser executados em paralelo. Mas não, não na mesma porta.
Dan
11
O equivalente pitão 3.x deste épython3 -m http.server
Stefano Palazzo
1
É por isso que eu amo tanto o stackoverflow. Vim procurar aqui o problema exato em que queria encontrar uma alma para ... executar angularjs a partir de um servidor da web. Muito obrigado Florian Deisch
SK176H
24

Também gosto de usar o PHP para esse fim, pois ele permite executar coisas como o WordPress em tempo real e desenvolver temas mais facilmente (você ainda precisa do MySQL):

php -S 0.0.0.0:8000

No mesmo script que inicia isso, também inicio o Guard , que atualiza automaticamente o navegador na alteração de arquivo.

metakermit
fonte
2
Note-se que o recurso de servidor embutido foi adicionado no 5.4.0
sierrasdetandil
Sim, você precisa de uma versão mais recente. A versão nos repositórios 13.10, se o fizer, sudo apt-get install php5é 5.5.3, então você deve estar OK.
Metakermit 19/11/2013
Perfeito! É mesmo o que eu procurava !
Prakash Raman #
17

se você é mais rubi, a gema de servir é ótima

serve

ou para uma porta diferente:

serve 9000

instalar com gem install serve

vontade-ob
fonte
Isso funciona bem, mas requer ruby> = 1.9.3
Valerio Schiavoni
Sim, mas também 1.9.3 é eol . As correções de segurança não são mais suportadas. Recomendaria o rvm para gerenciar rubis herdados. Eles não devem ser padrão do sistema
vai-ob
13

Isso também é possível no Ruby sem instalar uma gema.

ruby -run -e httpd . -p5000

Steelsouls
fonte
Não funcionou para mim. Qual versão do ruby ​​você tentou?
Valerio Schiavoni
Funciona como anunciado com o Ruby 2.5.1.
Raphael
6

Basta usar http-server, é um servidor de linha de comando com configuração zero.

A maneira mais fácil de instalá-lo é através do npm:

sudo npm install http-server -g

Uso:

http-server [path] [options]

[path]o padrão é ./publicse a pasta existir ou ./não.

Para ver seu servidor em ação, visite http: // localhost: 8080 . Use a -popção para definir uma porta diferente.

Para mais opções, visite: https://www.npmjs.com/package/http-server .

Luis Ma
fonte
A única razão para não usar isso é que ele requer rpm que não está instalado nativamente. As outras soluções que mencionam ruby ​​e python são pré-instaladas em quase todos os sistemas operacionais, portanto, não há um pré-requisito associado à instalação do comando para executar o servidor.
jamescampbell
3

Como há angularjs no nome da sua pasta, parece que é um aplicativo js angular. Nesse caso, não deixe de conferir o yeoman .

Para citar o site

Yeoman 1.0 é mais do que apenas uma ferramenta. É um fluxo de trabalho; uma coleção de ferramentas e práticas recomendadas trabalhando em harmonia para tornar o desenvolvimento da Web ainda melhor.

Uma de muitas outras coisas é o gruntservidor incluído .

mreq
fonte