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

9

Я пишу небольшой сайт, но я НЕ хочу выяснять, как установить и настроить полный стек LAMP для тестирования сайта из моего ~/homeкаталога. Это будет совершенно разрушительным и ненужным.

Все, что я хочу, - это иметь каталог, например, ~/home/Documents/Websiteи запустить небольшой веб-сервер из этой папки в качестве «домашней» папки сайта.

Я знаю, что Jekyll может делать нечто подобное, но, похоже, он работает только с сайтами на основе Ruby / Jekyll, которые он создает и настраивает.

Есть ли какая-нибудь небольшая веб-серверная программа, которую я могу легко установить, а затем просто запустить очень просто?

Например, если бы мне просто нужно было запустить что-то вроде, например, simple-server serve ~/home/Documents/Websiteиз командной строки, а затем перейти, например, localhost:4000или что-то еще, чтобы протестировать сайт, это было бы идеально.

Если это уже возможно в Ubuntu и я просто не знаю как, пожалуйста, дайте мне знать.

etsnyman
источник
Какие файлы у вас есть php pythonили простые html?
Дан
@ dan08 На данный момент просто htmlи css. Я мог бы хотеть добавить NodeJSв будущем, но тогда у меня будет другая установка.
etsnyman
Таким образом, вы можете просто открыть их в своем веб-браузере, сервер не требуется.
Дан
Вы можете уточнить свой вопрос? Документы из / var / www / html гораздо проще обслуживать, чем из домашнего каталога. В любом случае вы устанавливаете Apache вместе с MySQL, php или чем-то еще, что вам может понадобиться. Чтобы использовать / va / www / html, просто скопируйте файлы. Настройка Apache для обслуживания файлов из вашего домашнего каталога требует больше усилий, так как вам нужно либо включить домашние каталоги, либо отредактировать файлы конфигурации Apache. В обоих местах у вас все еще должны быть каталоги / файлы, доступные для www-данных. Я не понимаю, что вам так трудно.
Пантера
@ dan08 Существуют серьезные ограничения на обслуживание с file://адреса, а не с http://адреса. Некоторые ссылки и небольшие фрагменты Javascript просто не работают.
etsnyman

Ответы:

10

Если у вас установлен php, вы можете использовать встроенный сервер php для запуска файлов html / css и / или php:

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

В качестве результата вы получите:

Listening on localhost:8000
Document root is /path/to/your/app
буря
источник
12

Самый простой способ, который я знаю, это:

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

Вывод команды покажет вам, на каком порту она прослушивается (я думаю, по умолчанию это 8000). Запустите, python3 -m http.server --helpчтобы увидеть, какие варианты доступны.

За дополнительной информацией:

  1. Python документация по http.server
  2. Простой HTTP-сервер (здесь также упоминается python2синтаксис)
Мур
источник
Genius! Спасибо, @muru! По какой-то причине мой порт 8000 используется (я не могу понять, почему), но я просто запустился, python3 -m http.server 4000а затем перешел localhost:4000в Firefox и BAM! - мой сайт готов к тестированию! Спасибо!
etsnyman
2

То, что вы хотите, называется статическим веб-сервером . Есть много способов достичь этого.

В нем перечислены статические веб-серверы

Один простой способ: сохранить ниже сценарий как 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");

поместите ваш index.htmlв тот же каталог и запустите

 node static_server.js
кенна
источник
+1 за список статических серверов. Надо сказать, отступ этого кода выглядит очень странно.
Муру
0

Установите local-web-сервер , он устанавливает wsкоманду, которую вы можете запустить, чтобы обслуживать любой каталог как статический сайт.

Этот клип демонстрирует статический хостинг плюс пару форматов вывода журнала - devи stats.

Статический вывод статического журнала

Lloyd
источник