Execute um servidor web a partir de qualquer diretório

9

Estou escrevendo um site pequeno, mas NÃO quero descobrir como instalar e configurar a pilha LAMP completa para testar o site no meu ~/homediretório. Isso será completamente perturbador e desnecessário.

Tudo que eu quero é ter um diretório, por exemplo, ~/home/Documents/Websitee executar um pequeno servidor web a partir dessa pasta como a pasta "home" do site.

Eu sei que Jekyll pode fazer algo semelhante, mas parece funcionar apenas com sites baseados em Ruby / Jekyll que ele cria e configura.

Não existe um pequeno programa de servidor da web que eu possa instalar facilmente e depois executar com muita simplicidade?

Por exemplo, se eu precisasse executar algo como, por exemplo, a simple-server serve ~/home/Documents/Websitepartir de uma linha de comando e, em seguida, navegar para, por exemplo, localhost:4000ou o que quer que fosse para testar o site, seria perfeito.

Se isso já é possível no Ubuntu e eu simplesmente não sei como, por favor me avise.

etsnyman
fonte
Que tipo de arquivo você possui php pythonou comum html?
Dan
@ dan08 No momento, simplesmente htmle css. Talvez eu queira adicionar NodeJSno futuro, mas terei uma configuração diferente.
Etsnyman 5/09/14
Assim, você pode simplesmente abrir aqueles no seu navegador da web, sem necessidade de servidor.
Dan
Você pode esclarecer sua pergunta? É realmente muito mais fácil servir documentos de / var / www / html, então é do seu diretório pessoal. De qualquer maneira, você instala o Apache junto com o mysql, php ou qualquer outra coisa que possa precisar. Para usar / va / www / html, basta copiar os arquivos. É mais trabalhoso configurar o Apache para servir arquivos do diretório inicial, pois você precisa habilitar os diretórios pessoais ou editar os arquivos de configuração do apache. Nos dois locais, você ainda precisa ter os diretórios / arquivos disponíveis para www-data. Eu não entendo o que você acha tão difícil.
Panther
@ dan08 Existem limitações incapacitantes em servir a partir de um file://endereço e não de um http://endereço. Alguns links e pequenos trechos de Javascript simplesmente não funcionam.
Etsnyman

Respostas:

10

Se você possui o php instalado, pode usar o servidor embutido do php para executar arquivos html / css e / ou php:

cd /path/to/your/app
php -S localhost:8000

Como saída, você obterá:

Listening on localhost:8000
Document root is /path/to/your/app
tempestade
fonte
12

A maneira mais simples que conheço é:

cd /path/to/web-data
python3 -m http.server

A saída do comando lhe dirá em qual porta está escutando (o padrão é 8000, eu acho). Execute python3 -m http.server --helppara ver quais opções estão disponíveis.

Para maiores informações:

  1. Documentação do Python http.server
  2. Servidor HTTP simples (isso também menciona a python2sintaxe)
muru
fonte
Gênio! Obrigado, @muru! Por alguma razão, minha porta 8000 está em uso (não sei por quê), mas apenas executei python3 -m http.server 4000e naveguei localhost:4000no Firefox e BAM! - meu site está pronto para ser testado! Obrigado!
Etsnyman # 5/14
2

O que você deseja é chamado de servidor Web estático . Existem muitas maneiras de conseguir isso.

Ele está listado em servidores Web estáticos

Uma maneira simples: salve o script abaixo como static_server.js

   var http = require("http"),
     url = require("url"),
     path = require("path"),
     fs = require("fs")
     port = process.argv[2] || 8888;

 http.createServer(function(request, response) {

   var uri = url.parse(request.url).pathname
     , filename = path.join(process.cwd(), uri);

   path.exists(filename, function(exists) {
     if(!exists) {
       response.writeHead(404, {"Content-Type": "text/plain"});
       response.write("404 Not Found\n");
       response.end();
       return;
     }

     if (fs.statSync(filename).isDirectory()) filename += '/index.html';

     fs.readFile(filename, "binary", function(err, file) {
       if(err) {        
         response.writeHead(500, {"Content-Type": "text/plain"});
         response.write(err + "\n");
         response.end();
         return;
       }

       response.writeHead(200);
       response.write(file, "binary");
       response.end();
     });
   });
 }).listen(parseInt(port, 10));

 console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");

coloque o seu index.htmlno mesmo diretório e execute

 node static_server.js
Kenn
fonte
+1 para a lista de servidores estáticos. Devo dizer que o recuo desse código parece muito estranho.
muru 5/09/14
0

Instale local-web-server , ele instala o wscomando que você pode executar para servir qualquer diretório como um site estático.

Este clipe demonstra hospedagem estática, além de alguns formatos de saída de log - deve stats.

Saída de log estático estático

Lloyd
fonte