Как запустить http сервер из текущей директории одной командой на разных платформах

2014-03-01_2340

Современному frontend-разработчику часто необходимо быстро запустить локальный http сервер из какой-нибудь директории для раздачи статических файлов на localhost. Кануло в лету время непоколебимого и абсолютного господства apache с его documentRoot и виртуальными хостами, где все мы хранили тонны нужных и ненужных проектов еще 2-3 года назад.

В этой статье мы рассмотрим способы мгновенного запуска сервера из любой директории с помощью одной команды, в зависимости от имеющегося в наличии окружения (php, ruby, node.js, pyton, perl, IIS и др)

Это может сэкономить кучу времени при работе с

  • большим количеством проектов
  • тестовых приложений, разбросанных по диску с названиями temp, temp1, tmptrololo :)
  • демок, только что слитых с гитхаба… тех, которые вы попробуете использовать один раз и удалите

… Ну, вы понимаете о чем я.

Что должен уметь сервер:

  • Раздавать по http статические файлы, используя текущий каталог (или указанный каталог) в качестве корневого.
  • Запускаться одной командой (возможно, придется выполнить еще несколько команд при установке зависимостей перед первым запуском, но это тоже просто)
  • Уметь раздавать (HTML, CSS, JS, изображения и т.п.) с необходимыми MIME-type.
  • Работать в foreground (т.е без демонов)
  • Не должен напрямую зависеть от конфигурационных файлов или других способов конфигурации, кроме параметров, передаваемых в командной строке.

Каждая из приведенных ниже команд будет запускать сервер на http://localhost:8000. Просто положите в закладки и пользуйтесь!

Команды для различного окружения:

Python 2.x

command shell

python -m SimpleHTTPServer 8000

Python 3.x

command shell

python -m http.server 8000

Twisted (Python)

command shell

twistd -n web -p 8000 --path .

или

command shell

python -c 'from twisted.web.server import Site; from twisted.web.static import File; from twisted.internet import reactor; reactor.listenTCP(8000, Site(File("."))); reactor.run()' 

зависит от Twisted.

Ruby

command shell

ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd).start' 

Ruby 1.9.2+

command shell

ruby -run -ehttpd . -p8000 

adsf (Ruby)

command shell

gem install adsf # install dependency 
adsf -p 8000

Sinatra (Ruby)

command shell

gem install sinatra # install dependency
ruby -rsinatra -e'set :public_folder, "."; set :port, 8000' 

Perl

command shell

cpan HTTP::Server::Brick # install dependency
perl -MHTTP::Server::Brick -e '$s=HTTP::Server::Brick->new(port=>8000); $s->mount("/"=>{path=>"."}); $s->start'

Plack (Perl)

command shell

cpan Plack # install dependency 
plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root=>".");' -p 8000

Mojolicious (Perl)

command shell

cpan Mojolicious::Lite # install dependency 
perl -MMojolicious::Lite -MCwd -e 'app->static->paths->[0]=getcwd; app->start' daemon -l http://*:8000

http-server (Node.js)

command shell

npm install -g http-server # install dependency
http-server -p 8000 

node-static (Node.js)

command shell

npm install -g node-static # install dependency 
static -p 8000

PHP (>= 5.4)

command shell

php -S 127.0.0.1:8000

Erlang

command shell

$ erl -s inets -eval 'inets:start(httpd,[{server_name,"NAME"},{document_root, "."},{server_root, "."},{port, 8000},{mime_types,[{"html","text/html"},{"htm","text/html"},{"js","text/javascript"},{"css","text/css"},{"gif","image/gif"},{"jpg","image/jpeg"},{"jpeg","image/jpeg"},{"png","image/png"}]}]).'

busybox httpd

command shell

busybox httpd -f -p 8000

webfs

command shell

webfsd -F -p 8000 

зависит от webfs

IIS Express

command shell

C:> "C:\Program Files (x86)\IIS Express\iisexpress.exe" /path:C:\MyWeb /port:8000 Depends on IIS Express.

/path должен быть абсолютным

Часть материала позаимствована с willurd/web-servers.md


Не забудьте расшарить с друзьями ;)

Метки: ,
5 комментариев на “Как запустить http сервер из текущей директории одной командой на разных платформах
  1. drcreazy пишет:

    Можно еще сделать батник или .sh чтобы не писать каждый раз. У меня что-то вроде такого на usb-flash

    ../php -S localhost:8008
    pause

  2. Mikhail Larchanka пишет:

    npm install nws -g

    nws -p 8008 или вообще без порта

  3. 123 пишет:

    А как это все вести в Windows

  4. Geyan пишет:

    Вообще не запускается php под node сервером, я может что не так делаю ?

  5. Bohdan пишет:

    что бы запустить строку через виндовс,у вас должен стоять пхп(скачайте и пропишите его в path),потом shift+кпм на папке-открыть через cmd в этой папке. Удачи
    p.s. работаю на польском языке,поэтому посмотрите сначало какая функция у вас аддиться при нажатии shift+пкм,и нажмите на неё. Должно появиться окно cmd

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

*

* Copy This Password *

* Type Or Paste Password Here *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Узнавай о новых статьях первым!

Спасибо за лайк в FACEBOOK
Подписывайтесь на новости вконтакте
Последние статьи от html5.by