Plack — это среда программирования веб-приложений на Perl , вдохновленная Rack для Ruby и WSGI для Python , [1] [2] , и это проект, лежащий в основе спецификации PSGI , используемой другими платформами, такими как Catalyst и Dancer . [3] Plack позволяет тестировать веб-приложения Perl без работающего веб-сервера. [4]
Plackup — это утилита командной строки для запуска приложений PSGI из командной строки. [5]
PSGI или Perl Web Server Gateway Interface — это интерфейс между веб-серверами и веб-приложениями и платформами , написанный на языке программирования Perl , который позволяет писать переносимые приложения, которые можно запускать как автономные серверы или использовать CGI , FastCGI , mod_perl и др. [6] Он создан на основе интерфейса веб-сервера Gateway для Python , Rack для Ruby и JSGI для JavaScript . Приложение PSGI — это подпрограмма Perl , которая принимает аргументы как одну ссылку на хэш и возвращает ссылку на массив из трех элементов: код состояния HTTP , ссылку на массив заголовков HTTP и ссылку на массив строк тела HTTP ( обычно сгенерированный HTML- документ) или объект , похожий на дескриптор файла .
По состоянию на май 2023 г. [7] Plack поддерживает следующие серверные части:[обновлять]
Использование автономного HTTP-сервера по умолчанию:
$ plackup app.psgi HTTP::Server::PSGI: прием подключений по адресу http://0:5000/
Запускается как демон FastCGI , прослушивающий сокет Unix , готовый к использованию любым веб-сервером с поддержкой FastCGI :
$ plackup -s FCGI -listen /tmp/fcgi.sock app.psgi FastCGI: менеджер (pid 3336): инициализирован FastCGI: менеджер (pid 3336): сервер (pid 3337) запущен FastCGI: сервер (pid 3337): инициализирован
Рабочее приложение Hello world , работающее как однострочное :
$ plackup -e 'sub { [200, ["Content-Type" => "text/plain"], ["Hello, world!"]] }' HTTP::Server::PSGI: прием соединений по адресу http:/ /0:5000/
Приведенная выше команда запускает HTTP-сервер , прослушивающий порт 5000 каждого локального интерфейса ( IP-адреса ), и возвращает ответ 200 OK на каждый HTTP-запрос :
HTTP / 1.0 200 OK Дата : пятница, 19 марта 2010 г., 23:34:10 GMT Сервер : HTTP::Server::PSGI Content-Type : text/plain Content-Length : 13Привет, мир!