Executando um script Python que salva arquivos no servidor com cgi e apache2 versão 2.4

1

Eu tenho um script python (python.py) localizado na pasta / var / www / html / Python.

O script salva algumas imagens em outro diretório (/ var / www / html / Data)

Eu tenho a permissão de arquivo -x no script python.py e a permissão -rw para todos os arquivos em que a saída é salva.

Estou executando a versão 2.4 do apache2

É assim que meu arquivo apache2.conf se parece:

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

HostnameLookups Off
LogLevel warn

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

Include ports.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

</Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FileMatch>

IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

Como estou executando a versão 2.4, meu cgi conf está em: /ect/apache2/conf-available/serve-cgi-bin.conf

Parece assim:

<IfModule mod_alias.c>
    <IfModule mod_cgi.c>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfModule>

    ScriptAlias /cgi-bin/ /var/www/html/Python
    <IfDefine ENABLE_USR_LIB_CGI_BIN>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfDefine>

    <Directory "var/www/html/Python">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
        AddHandler cgi-script .py
        AddHandler default-handler .html.htm
    </Directory>
</IfModule>

Eu habilitei o módulo cgi executando o comando

sudo a2enmod cgi

e reiniciou o servidor usando

service apache2 restart

No entanto, apesar de tudo isso, meu script Python ainda não é executado e é exibido como um arquivo de texto.

Alguém pode me ajudar? Eu não consigo descobrir o que estou fazendo errado.

    
por cachemoi 17.04.2016 / 19:41

2 respostas

0

Uma pergunta estúpida: você tem um link físico para /etc/apache2/conf-available/serve-cgi-bin.conf no diretório /etc/apache2/conf-enabled ?

Editar: Para criar um link, o que você faz é, em um prompt de comando, mudar para o diretório /etc/apache2/conf-enabled e digitar

ln /etc/apache2/conf-available/serve-cgi-bin.conf serve-cgi-bin.conf

Você pode ter que usar esse comando se não tiver permissões de criação de arquivo nesse diretório. Você terá que reiniciar o apache depois de criar esse link, é claro.

    
por 17.04.2016 / 21:06
0

Se for um problema de permissões, pode ser que as permissões sejam muito brandas. Eu sei que o Sendmail se recusará a aceitar certos arquivos de configuração se eles forem graváveis; Eu não ficaria surpreso ao descobrir que o mesmo vale para o Apache. Verifique se o usuário do Apache não tem permissão para gravar o arquivo .conf.

    
por 18.04.2016 / 04:45