Instalando o fcgiwrap e a habilitando o Perl, Ruby e Bash Languages ​​Dynamic no Gentoo Lemp

Instalando o fcgiwrap e a habilitando o Perl, Ruby e Bash Languages ​​Dynamic no Gentoo Lemp

Este tutorial está estritamente relacionado ao ex -instalação do Lemp no Gentoo e trata outros problemas estendidos de servidor, como ativar linguagens de script dinâmicas como Perl ou Bash ou Ruby através Gateway fcgiwrap, e editar arquivos de configuração de hosts virtuais nginx para servir conteúdo dinâmico usando .pl, .rb e .CGI scripts.

Instale o fcgiwrap com Perl, Ruby e Bash

Requisitos

  1. Pilha Lemp instalada no Gentoo - https: // www.Tecmint.com/install-lemp-in-gentoo-linux/

Etapa 1: Ativar FCGiwrap no Gentoo Lemp

Fcgiwrap faz parte de Interface de gateway comum nginx fastcgi que processam outras linguagens dinâmicas de script, como Perl ou Bash ou Scripts Ruby, trabalham processando solicitações recebidas do Nginx, por meio de soquetes TCP ou Unix, de maneira independente e retorna o resultado produzido de volta ao Nginx, que, a termo, encaminhará respostas Voltar aos clientes finais.

1. Vamos começar a instalar FCCGIWRAP Processo no Gentoo Linux usando o seguinte comando.

# emerge --ks www-misc/fcgiwrap
Instale o pacote fccgiwrap

2. Por padrão, o pacote fcgiwrap não fornece nenhum iniciar Scripts no Gentoo para gerenciar o processo. Depois que os pacotes foram compilados e instalados, crie o seguinte iniciar scripts que ajudam você a gerenciar o processo FCGIWRAP usando três abordagens: lançando o processo usando UNIX DOMAIN SOCKETS ou usando local Soquetes TCP ou usando ambos ao mesmo tempo.

Usando o script de soquete TCP

Crie um arquivo init em /etc/init.d/ caminho com o seguinte conteúdo de arquivo.

# nano /etc /init.d/fcgiwrap

Adicione o seguinte conteúdo de arquivo.

#!/sbin/runscript ip = "0.0.0.0 "PORT =" 12345 "START () EBEGIN" Iniciando processo FCGIWRAP… "/usr/sbin/fcgiwrap -s tcp: $ ip: $ port & tcp_sock =" netStat -tulpn | Grep fcgiwrap "Echo" Detalhes do soquete: $ tcp_sock "EEND $? "Erros foram encontrados ao iniciar o processo FCGIWRAP" stop () eBegin "interrompendo o processo fcgiwrap ..." pid = "ps a | grep fcgiwrap | Grep tcp | corte -d" -f1 "matar -s 1 $ pid tcp_sock =" netstat -tulpn | Grep fcgiwrap "se teste $ tcp_sock = 2> /dev /null; Em seguida, o eco "FCGIWRAP interrompeu com êxito" tcp_sock = "netstat -atulpn | Grep $ porta" se teste $ tcp_sock = 2> /dev /null; Então eco "sem conexão aberta fcgiwrap encontrada ..." else eco "espere para fechar as conexões abertas do fcgiwrap ... verifique com o soquete 'status'" echo -e ": \ n $ tcp_sock" fi eco "fcgiwarp o processo ainda está em execução ainda está executando!Detalhes do soquete "eco": $ tcp_sock "fi eend $? "Os erros foram encontrados ao interromper o processo de fcgiwrap ..." status () ebegin "Status FCGIWRAP Processo ..." tcp_sock = "netstat -atulpn | Grep $ porta" se teste $ tcp_sock = 2> /dev /null; Então echo "fcgiwrap Process não executando" else eco "o processo fcgiwarp está em execução!Detalhes do soquete "eco -e": \ n $ tcp_sock "fi eend $? "Os erros foram encontrados ao interromper o processo de fcgiwrap ..."
Usando o script de soquete TCP

Como você pode ver, o arquivo de script contém duas variáveis ​​no início, respectivamente IP e porta. Altere essas variáveis ​​com suas próprias necessidades e verifique se elas não se sobrepõem a outros serviços do seu sistema, especialmente a variável de porta - o padrão aqui está 12345 - mudar de acordo.

Usando 0.0.0.0 Na variável IP, permite que o processo vincule e ouça qualquer IP (acessível externo se você não tiver um firewall), mas por motivos de segurança você deve alterá -lo para ouvir apenas localmente, em 127.0.0.1, A menos que você tenha outros motivos, como configurar remotamente o fcgiwrap gateway em um nó diferente para desempenho ou balanceamento de carga.

3. Depois que o arquivo é criado, anexar permissões de execução e gerenciar o processo daemon usando interruptores de início, parada ou status. O interruptor de status mostrará informações relevantes do soquete, como Porta IP emparel. Além disso, se o processo tiver conexões ativas em TEMPO DE ESPERA Declare que você não pode reiniciá -lo até que todas as conexões TCP fechem.

# chmod +x /etc /init.d/fcgiwrap # serviço iniciar fcgiwrap #/etc/init.status d/fcgiwrap
Inicie o serviço fcgiwrap
Usando o script de soquete Unix

Conforme apresentado anterior, o fcgiwrap pode ser executado simultaneamente usando os dois soquetes, então mudará levemente o nome do segundo script para fcgiwrap-unix-socket, para garantir que ambos possam ser iniciados e executados ao mesmo tempo.

# nano /etc /init.D/FCGIWR-UNIX-SOCKET

Use o seguinte conteúdo de arquivo para soquete Unix.

#!/sbin/runscript sock_detail = "ps a | grep fcgiwrap-unix | head -1" start () ebegin "iniciando o processo fcgiwrap-unix-socket…"/usr/sbin/fcgiwrap -s unix: run/fcgiwrwrwrix -unix/.Meia e sono 2 /bin /chown nginx: nginx /run /fcgiwrap-unix.sono de meia.Detalhes do soquete "Echo" da meia: $ Sock "EEND $? "Erros foram encontrados ao iniciar o processo fcgiwrap" stop () ebegin "interrompendo o processo de fcgiwrap -unix -socket ..." pid = "ps a | grep fcgiwrap | grep unix | corte -d" "-f1" rm -f /run /fcgiwrap-unix.Sock Kill -s 1 $ PID ECHO "FCGIWRAP Processo parou com sucesso" #killall/usr/sbin/fcgiwrap Sleep 1 echo "Detalhes do soquete: $ SOCK" EEND $? "Os erros foram encontrados ao interromper o processo de fcgiwrap ..." status () ebegin "Status fcgiwrap-unix-socket Process ..." se teste -s /run /fcgiwrap-unix.meia; Então o eco "processo é iniciado com soquete: $ sock_detail" else echo "fcgiwrap Process não executando!"Fi Eend $? "Os erros foram encontrados ao interromper o processo de fcgiwrap ..."
Usando o script de soquete Unix

4. Garanta novamente que este arquivo seja executável e use os mesmos interruptores de serviço: começar, parar ou status. Eu defini o caminho padrão para este soquete /run/fcgiwrap-unix.meia caminho do sistema. Inicie o processo e verifique -o usando status Switch ou List /correr conteúdo do diretório e localize o soquete ou use ps --a | Grep fcgiwrap comando.

# chmod +x /etc /init.d/fcgiwrap-unix-socket # serviço inicial fcgiwrap-unix-socket #/etc/init.d/fcgiwrap-unix-socket status # ps -a | Grep fcgiwrap
Iniciar e verificar fcgiwrap

Como mencionado anteriormente Soquete de domínio unix Somente, porque usa comunicação interprocessante, que é mais rápida que a comunicação sobre as conexões TCP Loopback e usa menos sobrecarga de TCP.

Soquete de domínio unix

Etapa 2: Ativar scripts CGI no nginx

5. Para o Nginx analisar e executar scripts Perl ou Bash através da interface de gateway comum rápida, os hosts virtuais devem ser configurados com definições de FCGIWRAP no caminho raiz ou em declarações de localização.

Um exemplo, é apresentado abaixo (localhost), que ativa os scripts Perl e CGI em todos os arquivos colocados no caminho raiz (/var/www/localhost/htdocs/) com .pl e .CGI Extensão usando soquetes fcgiwrap tcp para o caminho do documento raiz padrão, o segundo local usando UNIX DOMAIN SOCKETS, com um índice.pl arquivo e o terceiro local está usando Soquetes TCP com um índice.CGI arquivo.

Coloque o seguinte conteúdo, ou apenas algumas partes dele, no arquivo de configuração do host virtual desejado que você deseja ativar scripts dinâmicos Perl ou Bash com soquetes UNIX ou TCP em diferentes locais, modificando fastcgi_pass declaração de argumento.

# nano/etc/nginx/sites-averlable/localhost.conf

Editar LocalHost.conf Parecer no modelo abaixo.

servidor ouça 80; server_name localhost; access_log/var/log/nginx/localhost_access_log main; error_log/var/log/nginx/localhost_error_log info; root/var/www/localhost/htdocs/; Localização / AutoIndex on; ÍNDICE ÍNDICE.Índice HTML.Índice HTM.php;  ## php -fpm gateway ### Localização ~ \.php $ try_files $ uri = 404; incluir/etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1: 9001;  ## fcgiwrap gateway em todos os arquivos sob root com soquetes TCP ### Localização ~ \.(PL | CGI | RB) $ ​​ÍNDICE FASTCGI_INDEX.Índice CGI.pl; incluir/etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1: 12345;  ## fcgiwrap gateway em todos os arquivos sob a segunda pasta root com índice.PL usando soquetes Unix ### Location /Second Índice.pl; root/var/www/localhost/htdocs/; Localização ~ \.(PL | CGI | RB) $ ​​incluir/etc/nginx/fastcgi.conf; fastcgi_pass unix:/run/fcgiwrap-unix.meia; fastcgi_param script_filename $ document_root $ fastcgi_script_name;  ## fcgiwrap gateway em todos os arquivos sob a terceira pasta root com índice.CGI usando soquetes TCP ### Localização /terceiro Índice.CGI; Localização ~ \.(PL | CGI | RB) $ ​​incluir/etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1: 12345; 

6. Depois de terminar de editar nginx LocalHost.conf, Ou seu arquivo de configuração do host virtual específico, vá para o seu site Raiz de documento padrão, crie essas duas pastas para refletir sua declaração de localização e crie arquivos de índice para cada local com sua extensão específica.

# CD/var/www/localhost/htdocs # mkdir segundo terceiro

Criar índice.pl Arquivo no segundo local com o seguinte conteúdo.

# nano/var/www/localhost/htdocs/segundo/index.pl

Adicione este conteúdo para obter variáveis ​​de ambiente.

#!/usr/bin/perl impressão "Tipo de conteúdo: text/html \ n \ n"; imprimir <Um índice Perl CGI no segundo local com variáveis ​​ENV  Impressão html "Tipo de conteúdo: text/html \ n \ n"; foreach my $ keys (classificar as chaves %env) print "$ keys = $ Env $ Keys
\ n "; saída;

Em seguida, crie índice.CGI Arquivo no terceiro local com o seguinte conteúdo.

# nano/var/www/localhost/htdocs/terceiro/index.CGI

Adicione este conteúdo para obter variáveis ​​de ambiente.

#!/BIN/BASH ECHO-TYPE: TEXTO/HTML ECHO "" CAT << EOF  Bash script 
 

Um índice Bash CGI na terceira localização com variáveis ​​ENV

Eof Env Cat << EOF EOF

7. Ao terminar a edição, faça os dois arquivos executáveis, reinicie o servidor nginx e verifique se os dois soquetes fcgiwrap estão em execução.

# chmod +x/var/www/localhost/htdocs/segundo/index.pl # chmod +x/var/www/localhost/htdocs/terceiro/index.CGI # Serviço Nginx Reiniciar # serviço fcgiwrap Iniciar # serviço fcgiwrap-unix-soket

Em seguida, redirecione seu navegador local para seguir o URL.

http: // localhost http: // localhost/segundo/http: // localhost/terceira/

O resultado deve aparecer como nas capturas de tela abaixo.

Verifique o diretório CGI Uma página de índice Perl CGI Uma página de índice Bash CGI

8. Se tudo estiver em vigor e configurado corretamente, permita que os dois daemons fcgiwrap iniciem automaticamente, depois de reiniciar, emitindo os seguintes comandos (caso você tenha configurado o NGINX para usar os dois soquetes CGI).

# rc-update add fcgiwrap padrão # rc-update add fcgiwrap-unix-socket padrão

Etapa 3: Ative o suporte do rubi no FCGIWRAP

9. Se você precisar executar scripts rubi dinâmicos no nginx fcgi, você deve instalar Rubi intérprete sobre gentoo com o seguinte comando.

# emerge --k ruby
Instale o intérprete Ruby

10. Depois que o pacote foi compilado e instalado, mova -se para o nginx Sites disponíveis e editar LocalHost.conf Arquivo anexando as seguintes declarações antes do último suporte encaracolado “”, que ativa o suporte para executar scripts Ruby em um quarto localização sob o caminho raiz do documento padrão servido pelo Nginx localhost.

# nano/etc/nginx/sites-averlable/localhost.conf

Use as seguintes diretivas NGINX.

## fcgiwrap gateway em todos os arquivos sob a quarta pasta da raiz com índice.RB sob soquetes TCP ### Localização /Quarto Índice.rb; Localização ~ \.rb $ incluir/etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1: 12345;  ## Last Curly Bracket, que fecha as definições do servidor nginx ##
Ativar suporte de rubi no fcgiwrap

11. Agora, para testar a configuração, crie o quarto diretório em /var/www/localhost/htdocs caminho, crie um script de índice de rubi executável com .rb extensão e adicione o seguinte conteúdo.

# mkdir/var/www/localhost/htdocs/quarto # nano/var/www/localhost/htdocs/quarto/index.rb

Índice de Rubi.Exemplo de RB.

#!/usr/bin/ruby coloca "http/1.0 200 ok "puts"-Type: text/html \ n \ n "puts" ruby ​​script "puts"
"Puts"

Um índice Ruby CGI na quarta localização com variáveis ​​Env

"System ('Env')

12. Depois de adicionar permissões de execução em arquivo, reinicie o daemon nginx para aplicar configurações.

# chmod +x/var/www/localhost/htdocs/quarto/índice.RB # Service Nginx Reiniciar

Abra seu navegador e navegue até o URL http: // localhost/quarta/, que deve apresentar o seguinte conteúdo.

Página de índice Ruby CGI

Por enquanto, você configurou o nginx para servir scripts dinâmicos de perl, rubi e batida no gateway fastcgi, mas saiba que executar esse tipo de scripts interpretados no gateway nginx cgi pode ser perigoso e impor riscos de segurança seriamente ao seu servidor porque eles Execute usando conchas ativas sob seu sistema, mas pode expandir a barreira estática imposta pelo HTML estático, adicionando funcionalidade dinâmica ao seu site.