Как легко запустить веб-сервер в любой папке?

115

Я ищу относительно безболезненный способ запуска веб-сервера с корнем документа в любой папке, которую я укажу (или еще лучше, где я запускаю).

Я часто пробую новые вещи, такие как фреймворки JS или около того, в новой папке где-то здесь:

/home/alexander/code/angularjs/

Тогда было бы удобно просто зайти в этот каталог и набрать что-то вроде:

start-webserver-here 

так что веб-сервер начинает прослушивать порт 80 и обслуживать этот каталог, и я могу попробовать все, над чем работаю.

Я установил XAMPP, но кажется, что это базовый apache с корнем документа, который я должен изменить, даже с привилегиями root, наряду с предоставлением разрешений для каждой папки и т. Д.

Есть ли более простой способ?

Александр Рехштайнер
источник
Кто-то составил большой список лайнеров, чтобы добиться этого: gist.github.com/willurd/5720255
Абхинав Бхатия,

Ответы:

174

использование

python2 -m SimpleHTTPServer 80

или же

python3 -m http.server 80

запустить простой HTTP-сервер.

Замените 80на другой номер, если вы хотите, чтобы он прослушивал другой порт. Для портов <1024 он должен работать с правами root.

Флориан Диш
источник
1
Это именно то, что я искал! Danke!
Александр Рехштайнер
1
Можете ли вы запустить это параллельно с Apache? Конечно, в другом порту (хотя я бы хотел, чтобы вы взорвали мне голову, сказав, что они могут использовать одни и те же порты).
бабки
3
@dibs Да, они могут работать параллельно. Но нет, не на том же порту.
Дан
11
Эквивалент Python 3.x этоpython3 -m http.server
Стефано Палаццо
1
Вот почему я так люблю stackoverflow. Пришёл искать здесь точную проблему, для которой я хотел найти решение для ... запуска angularjs с веб-сервера. Большое спасибо Флориан Дайш
SK176H
24

Мне также нравится использовать PHP для этой цели, так как он позволяет мне запускать такие вещи, как WordPress, на лету и легче разрабатывать темы (хотя вам все еще нужен MySQL):

php -S 0.0.0.0:8000

В том же самом скрипте, который запускает это, я также запускаю Guard , который автоматически обновляет браузер при изменении файла.

metakermit
источник
2
Обратите внимание, что встроенная функция сервера была добавлена ​​в 5.4.0
sierrasdetandil
Да, вам нужна одна из более новых версий. Версия в репозиториях 13.10, если вы делаете sudo apt-get install php5это 5.5.3, так что вы должны быть в порядке.
metakermit
Отлично ! Как раз то, что я искал!
Пракаш Раман
17

если вы больше рубин нравом, то служить камень велик

serve

или для меня другой порт:

serve 9000

установить с gem install serve

воли О.Б.
источник
Это отлично работает, но требует ruby> = 1.9.3
Валерио Скьявони
Да, но также 1.9.3 является eol . Исправления безопасности больше не бэкпортируются. Рекомендую rvm для управления устаревшими рубинами. Они не должны быть вашей системой по умолчанию
will-ob
13

Это также возможно в Ruby без установки гема.

ruby -run -e httpd . -p5000

Steelsouls
источник
Не работал для меня Какую версию ruby ​​вы пробовали?
Валерио Скьявони
Работает как рекламируется с Ruby 2.5.1.
Рафаэль
6

Просто используйте http-server, это сервер командной строки с нулевой конфигурацией.

Самый простой способ установить это через npm:

sudo npm install http-server -g

Использование:

http-server [path] [options]

[path]по умолчанию, ./publicесли папка существует, и в ./противном случае.

Чтобы увидеть ваш сервер в действии, посетите http: // localhost: 8080 . Используйте -pопцию, чтобы установить другой порт.

Для других вариантов посетите: https://www.npmjs.com/package/http-server .

Луис Ма
источник
Единственная причина не использовать это - то, что для этого требуется rpm, который не установлен изначально. Другие решения, в которых упоминаются ruby ​​и python, предустановлены практически на каждой ОС, поэтому нет никаких предварительных условий, связанных с установкой команды для запуска сервера.
Jamescampbell
3

Поскольку в названии вашей папки есть angularjs, похоже, это угловое приложение js. В таком случае не забудьте проверить Йомана .

Цитировать это сайт

Yeoman 1.0 - это больше, чем просто инструмент. Это рабочий процесс; набор инструментов и лучших практик, работающих в гармонии, чтобы сделать разработку для Интернета еще лучше.

Одна из многих других вещей - это связанный gruntсервер.

MREQ
источник
2

Для этого вы можете использовать Nginx: https://gist.github.com/asterite3/89236d1753a669e173531aca4b87afdc

Это не однопоточный (сервер не будет зависать для других клиентов при доступе, скажем, из google-chrome) и очень настраиваемый и эффективный.

asterite
источник