Servidor Web · 2 min read · Oct 19, 2025
Executando HTML::Mason Com nginx E FastCGI
Executando HTML::Mason Com nginx E FastCGI
Este artigo é um guia passo a passo para instalar o módulo HTML::Mason para usar com o servidor web ngingx e FastCGI. Foi testado no Debian (lenny), mas deve ser muito semelhante ao Ubuntu e outras distribuições baseadas em Debian.
Instalando um servidor mínimo em funcionamento
Primeiro de tudo, vamos instalar um servidor mínimo com nginx e FastCGI. Eu fiz scripts básicos para fazê-lo funcionar. Mais tarde, podemos personalizar esses scripts.
Instalar nginx
Agora vamos instalar o nginx e fazê-lo funcionar. Assume-se que não há outro servidor web ativo no host. Tudo será instalado por padrão.
apt-get install nginxVamos ver se funciona telnetando para a porta 80.
/etc/init.d/nginx start
telnet locahost 80
Escape character is '^]'
GET /
Bem-vindo ao ngingx!
... Instalar FastCGI
apt-get install libcgi-fast-perl libio-all-perlInstalar HTML::Mason
HTML::Mason supõe-se que precisa do apache2 para funcionar, então ele irá baixá-lo e instalá-lo. Vamos nos livrar dele mais tarde.
apt-get install libhtml-mason-perl
apt-get --purge remove apache2-mpm-worker apache2-utils
apt-get --purge autoremoveEsperançosamente, agora temos o HTML::Mason instalado e sem vestígios do apache. Certifique-se de que o nginx ainda está funcionando verificando se ele ainda responde na porta 80.
Configurar FastCGI
Precisamos de um servidor FastCGI em funcionamento para que ele possa executar o código HTML::Mason. Este script irá baixar todas as configurações e arquivos init. Devemos executá-lo como root. Por favor, dê uma olhada nele antes de executá-lo. Ele baixa e copia alguns arquivos do github. Isso pode ser perigoso para o seu servidor.
wget http://github.com/frankiejol/mason-fcgi/raw/master/download.sh
bash ./download.shÉ muito importante alterar a opção server_name em /etc/nginx/sites-available/mason para o nome real do servidor. Localhost não funcionará. Em seguida, modifique a variável %SITES em /var/www/mason/mason_fcgi.pl.
Executando código Mason
Finalmente, vamos criar uma página Mason simples.
mkdir /var/www/site1
echo '<% 2 + 2 %>' > /var/www/site1/index.htmlEntão vamos iniciar o serviço. Um 4 deve aparecer se você conectou o site com seu navegador.
/etc/init.d/nginx restart
/etc/init.d/fcgi startPersonalizando o servidor
Neste momento, temos um servidor Mason alimentado por nginx+FastCGI. Todos os arquivos de configuração e scripts podem ser encontrados no meu repositório do github.
nginx
A configuração do nginx está em /etc/nginx/sites-available/mason. A localização pode ser modificada para atender às suas necessidades. Observe que há duas linhas de reescrita porque o Mason não consegue lidar com diretórios adequadamente. Portanto, quando a solicitação parece um diretório, um postfix index.html é adicionado.
FastCGI
O script de inicialização do FastCGI é /var/www/mason/mason_fcgi.pl. Um monte de argumentos pode ser fornecido.
/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]Há uma seção para adicionar o carregamento de módulos Perl e variáveis globais. Este é o código padrão:
{
package HTML::Mason::Commands;
# use My::Own::Module;
# use Data::Dumper;
# qualquer coisa que você queira disponível para componentes
use vars(qw($DBH %stash));
}Executando múltiplos sites FastCGI
O daemon FastCGI é executado a partir de /etc/init.d/fcgi. Este script carrega a configuração de /etc/default/fcgi. Se você precisar de mais servidores FastCGI para diferentes sites, basta copiar o script init para outro nome e chamar o arquivo de configuração da mesma forma. O script init irá carregar um arquivo em /etc/default com o mesmo nome base que ele mesmo.
Links
- nginx
- HTML::Mason
- arquivos mason-fcgi
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.