Современному 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
Не забудьте расшарить с друзьями ;)
Можно еще сделать батник или .sh чтобы не писать каждый раз. У меня что-то вроде такого на usb-flash
../php -S localhost:8008
pause
npm install nws -g
nws -p 8008 или вообще без порта
А как это все вести в Windows
Вообще не запускается php под node сервером, я может что не так делаю ?
что бы запустить строку через виндовс,у вас должен стоять пхп(скачайте и пропишите его в path),потом shift+кпм на папке-открыть через cmd в этой папке. Удачи
p.s. работаю на польском языке,поэтому посмотрите сначало какая функция у вас аддиться при нажатии shift+пкм,и нажмите на неё. Должно появиться окно cmd