:Mason · 2 min read · Oct 19, 2025
Запуск HTML::Mason с nginx и FastCGI
Запуск HTML::Mason с nginx и FastCGI
Эта статья является пошаговым руководством по установке модуля HTML::Mason для использования с веб-сервером ngingx и FastCGI. Она была протестирована на Debian (lenny), но должна быть очень похожа на Ubuntu и другие дистрибутивы на базе Debian.
Установка минимального работающего сервера
Прежде всего, мы установим минимальный сервер с nginx и FastCGI. Я создал базовые скрипты, чтобы запустить его. Позже мы можем настроить эти скрипты.
Установка nginx
Теперь мы установим nginx и заставим его работать. Предполагается, что на хосте нет другого веб-сервера. Все будет установлено по умолчанию.
apt-get install nginxДавайте проверим, работает ли он, подключившись к порту 80.
/etc/init.d/nginx start
telnet locahost 80
Escape character is '^]'
GET /
Добро пожаловать в ngingx!
... Установка FastCGI
apt-get install libcgi-fast-perl libio-all-perlУстановка HTML::Mason
HTML::Mason предполагается, что требует apache2 для работы, поэтому он будет загружен и установлен. Мы избавимся от него позже.
apt-get install libhtml-mason-perl
apt-get --purge remove apache2-mpm-worker apache2-utils
apt-get --purge autoremoveНадеюсь, теперь у нас установлен HTML::Mason и нет следов apache. Убедитесь, что nginx все еще работает, проверив, отвечает ли он на порту 80.
Настройка FastCGI
Нам нужен работающий сервер FastCGI, чтобы он мог выполнять код HTML::Mason. Этот скрипт загрузит все конфигурационные и инициализационные файлы. Мы должны запустить его от имени root. Пожалуйста, ознакомьтесь с ним перед запуском. Он загружает и копирует некоторые файлы с github. Это может быть опасно для вашего сервера.
wget http://github.com/frankiejol/mason-fcgi/raw/master/download.sh
bash ./download.shОчень важно изменить опцию server_name в /etc/nginx/sites-available/mason на реальное имя сервера. Localhost не сработает. Затем измените переменную %SITES в /var/www/mason/mason_fcgi.pl.
Запуск кода Mason
Наконец, давайте создадим простую страницу Mason.
mkdir /var/www/site1
echo '<% 2 + 2 %>' > /var/www/site1/index.htmlЗатем давайте запустим сервис. Если вы подключили сайт через браузер, должно появиться 4.
/etc/init.d/nginx restart
/etc/init.d/fcgi startНастройка сервера
Прямо сейчас у нас есть сервер Mason на базе nginx+FastCGI. Все конфигурационные файлы и скрипты можно найти в моем репозитории на github.
nginx
Конфигурация nginx находится в /etc/nginx/sites-available/mason. Местоположение можно изменить в соответствии с вашими потребностями. Обратите внимание, что есть две строки переписывания, потому что Mason не может правильно обрабатывать директории. Поэтому, когда запрос выглядит как директория, добавляется постфикс index.html.
FastCGI
Скрипт запуска FastCGI находится в /var/www/mason/mason_fcgi.pl. Можно передать множество аргументов.
/var/www/mason/mason_fcgi.pl --help
mason_fcgi.pl [--help] [--pid=/var/run/fcgi/fcgi.pid] [--log=/var/log/nginx/fcgi/fcgi.log] [--debug] [--socket=/var/run/fcgi/mason_fcgi.sock] [--basedir=/var/www] [--workspace=/var/www/mason/workspace] [--error-uri=/errors/503.html] [--listen-queue=100] [--default-host=debian.localdomain]Есть раздел для добавления загрузки модулей Perl и глобальных переменных. Это стандартный код:
{
package HTML::Mason::Commands;
# use My::Own::Module;
# use Data::Dumper;
# все, что вы хотите сделать доступным для компонентов
use vars(qw($DBH %stash));
}Запуск нескольких сайтов FastCGI
Демон FastCGI запускается из /etc/init.d/fcgi. Этот скрипт загружает конфигурацию из /etc/default/fcgi. Если вам нужно больше серверов FastCGI для разных сайтов, просто скопируйте инициализационный скрипт под другим именем и назовите конфигурационный файл так же. Инициализационный скрипт загрузит файл в /etc/default с таким же базовым именем, как и он сам.
Ссылки
- nginx
- HTML::Mason
- файлы mason-fcgi
Get new posts in your inbox
No spam. Unsubscribe anytime.