Como garantir que um script bash é executável via web sem estar no diretório / cgi-bin?

1

Minha raiz do documento é

 /0/

não tenho nenhum diretório cgi-bin.

este é o meu host virtual com o apache:

Listen *:80
DirectoryIndex 1

<VirtualHost *:80>
DocumentRoot /0
ServerName domain.tld
ServerAlias www.domain.tld
</VirtualHost>

o que eu quero fazer é colocar um script bash neste diretório.

a raiz do documento que é ..

nele eu terei .. (test.sh)

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "test"

é tudo.

suponho que preciso adicionar esta linha ao

/etc/sudoers

arquivo ..

 apache ALL=NOPASSWD:/0/test.sh

tudo isso é suficiente para garantir que eu possa realmente fazer meu site ser executado via scripts bash e scripts python?

se isso funcionar ... o que seria usar coisas como

mod_wsgi and python for the web ?

suponho que eu também tenha que fazer o executável test.sh

chmod +x test.sh

se isso funcionar e eu definir a raiz do documento como

index.sh

qual seria o ponto de perder tempo com python para os frameworks web. ou mesmo o próprio python, dado que o bash para a web seria mais direto e, portanto, mais rápido. ?

    
por user82418 30.08.2014 / 18:57

1 resposta

1

Edite a entrada <Directory "/0" > no seu arquivo httpd.conf e adicione:

Options +ExecCGI
AddHandler cgi-script .sh 

Você deve acabar com algo semelhante a:

<Directory "/0" >
    ...
    Options +ExecCGI
    AddHandler cgi-script .sh 
    ...
</Directory>

Reinicie seu servidor:

# service httpd restart

Todos os arquivos CGI devem ser executáveis ( chmod +x <cgi file> ). O arquivo será executado como usuário apache e group apache .

Aponte seu navegador para http://<name or IP>/test.sh

A CGI não é a maneira mais eficiente de executar scripts, pois um novo processo (python ou bash, neste caso) é iniciado para cada solicitação, mas facilita a implementação de seus scripts. WSGI é uma maneira mais eficiente de executar o Python do que como um script CGI básico.

    
por 30.08.2014 / 20:12