Как я могу запустить свой Perl CGI скрипт без apache? - PullRequest
5 голосов
/ 06 апреля 2010

Как я могу запустить свой Perl CGI-скрипт без apache?Это для целей тестирования, поэтому мне должно хватить какого-то однопроцессного сервера, который одновременно обрабатывает только один запрос.

Ответы [ 4 ]

5 голосов
/ 06 апреля 2010

Plack :: App :: WrapCGI или Plack :: App :: CGIBin представляют один из способов сделать это (вместе с plackup и однопоточным HTTP по умолчанию Plack HTTP сервер), но он не запускает CGI в контексте, в котором они действительно ожидают запуска (автономный процесс), поэтому он не совсем симпатичен (те же предостережения применяются, что и при использовании реестра modperl, более или менее). Я не знаю ни о каком веб-сервере с чистым Perl, который на самом деле разветвляет и запускает CGI как CGI (и ни один не-Perl-сервер, который делает CGI и требует нулевой конфигурации, хотя lighttpd подходит близко).

Причина, по которой «вы используете CGI.pm» является уместным вопросом, заключается в том, что, если вы еще не запустили приложение, вы можете подумать о том, чтобы писать против всего еще, например

(в случайном порядке, чтобы скрыть мой очевидный фаворитизм) и получить возможность легко запускать то же приложение, что и автономный HTTP-сервер, FastCGI, приложение mod_perl или обычный CGI, если push приходит на ход, и без несоответствия импеданса, которое получить при записи в интерфейс CGI.pm

3 голосов
/ 06 апреля 2010

Поскольку вы упомянули в комментариях, что используете CGI.pm, обратите внимание, что CGI.pm предлагает ряд опций для запуска сценариев CGI из командной строки. См. http://perldoc.perl.org/CGI.html#DEBUGGING. Даже без CGI.pm вы всегда можете просто подделать необходимые переменные окружения и канал в вашем файле. В основном, все, что вам нужно сделать для запуска CGI из командной строки, это настроить

 QUERY_STRING = blah=x&fu=bar

для методов GET или

 CONTENT_LENGTH = length of your file

для методов POST.

1 голос
/ 06 апреля 2010

Скрипт должен запускаться от имени конкретного пользователя, и в настоящее время я не хочу настраивать suexec при тестировании apache.

Ничто не мешает вам продублировать необходимую конфигурацию Apache, кроме пользователя, под которым будет запускаться httpd, интерфейса / порта для привязки и, возможно, каталога cgi-bin и запуска отдельной копии httpd (с опцией -f). Это был бы самый безопасный способ протестировать приложение в среде, в которой оно предполагается запустить.

См. Запуск Apache :

можно указать его местоположение во время выполнения, используя параметр командной строки -f, как в

/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf
0 голосов
/ 07 апреля 2010

Получите себе виртуальную машину и делайте с ней что угодно, включая запуск apache. Дублируйте как можно больше целевых настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...