Минимальный http сервер для тестирования cgi-bin

Я разработал и поддерживаю веб-приложение, которое действует как внешний интерфейс для некоторых скриптов в cgi-bin, которые, в свою очередь, вызывают программы C на сервере. Веб-сервером является Apache2, размещенный как в моем офисе Linux для тестирования, так и в Amazon ECC для реального развертывания.

Моя проблема в том, что я путешествую, в основном без подключения к Интернету и с небольшой портативной машиной с Linux, но я хочу разработать следующий выпуск веб-страниц, скриптов, наборов данных и программ. Тестирование статических веб-страниц не является проблемой, но тестирование страниц, которые вызывают скрипты cgi-bin на стороне сервера, всегда проблематично, поэтому моя идея состоит в том, чтобы поместить минимальный http-сервер на портативную Linux-систему (ubuntu 14.04), которая позволит серверу и клиенту быть на той же машине без интернета (и, может быть, только с сокетом) между ними.

Конечно, я могу и тестировать скрипты и программы напрямую, но это не реализует такие функции, как обработка символов верхнего бита в $POST_DATA или установка и извлечение файлов cookie, что неизбежно приведет к некоторому расхождению в кодовой базе.

So:

  1. Является ли этот способ разумным или есть лучший или более простой способ делать то, что я хочу?

  2. Если это разумно, какой сервер hppt вы бы порекомендовали? Я думал о miniWeb, но у меня нет опыта.

PS: я эксперт в (математике) серверных программ, но у меня гораздо меньше опыта в качестве системного администратора Apache.


person James C    schedule 01.10.2015    source источник
comment
Может Легкий? http://www.lighttpd.net   -  person Mark Setchell    schedule 01.10.2015
comment
вы можете использовать python для запуска минимального веб-сервера с поддержкой cgi, см. stackoverflow.com/a/30516779/906489   -  person user906489    schedule 26.08.2017


Ответы (1)


Для многих вещей этого достаточно:

python3 -mhttp.server --cgi

К сожалению, он настолько минимален, что не поддерживает такие вещи, как установка статуса HTTP: https://bugs.python.org/issue10487

Я не использую lighttpd, потому что не хочу писать файл конфигурации. Другой минимальный сервер, который можно использовать, это mini-httpd:

sudo apt install mini-httpd
/usr/sbin/mini_httpd -D -p 8000 -c 'cgi-bin/*'

Параметр -D удерживает сервер на переднем плане, а не демонизирует его. Параметр -p — это порт, а -c — шаблон для моих скриптов cgi.

Я также обнаружил, что встроенный веб-сервер busybox прекрасно справляется с cgi-скриптами:

busybox httpd -p 8000 -f
person josch    schedule 12.06.2021