Linha shebang em Python

0

Estou tentando executar um script em python como um script cgi usando o apache2. No entanto, em vez de executar, o arquivo é baixado. Eu permiti que meu arquivo python fosse um executável. Eu acho que isso está acontecendo porque minha linha de shebang está incorreta. Então, como eu sei qual é a linha de shebang correta para adicionar. Eu tenho o Ubuntu 16.04 e o python 3.5.2 instalado. Qualquer ajuda / direção seria de grande ajuda. Obrigado

EDITAR

Adicionando o script python

#!/usr/bin/env python

import cgi
form = cgi.FieldStorage() 
query = form.getvalue('query')
print("Content-type:text/html")
print()
print("<html>")
print("<head>")
print("<title>search results</title>") 
print("</head>")
print("<body>")
print("\
<div style = 'position:absolute;text-align:center;width:100%;left:0%;top:0%;margin:0%;padding:0%;'>\
<h4 style = 'font-family:Arial;font-size:24px;color:dodgerblue;'>muGoogle</h4>\
<form class='form-wrapper' action='hello.py' method='get'>\
    <input type='text' id='search' placeholder='Search docs related to...' required name = 'query' style = 'font-family:Arial;font-\size:14px;width:60%;height:40px;'/>\
    <input type='submit' value='Submit' id='submit' style = 'height:40px'>")
print("<p> search results for: %s </p>" % query)
print("</body>")
print("</html>")

EDIT 2

Adicionando o html

<html>
<head>
<title>muGoogle</title>
<link type = 'stylesheet' ref = 'style.css'>
</head>
<body>
<div style = 'position:absolute;text-align:center;width:100%;left:0%;top:15%;margin:0%;padding:0%;'>
<h4 style = 'font-family:Arial;font-size:48px;color:dodgerblue;'>muGoogle</h4>
<form class='form-wrapper' action='query.py' method='get'>
    <input type='text' id='search' placeholder='Search docs related to...' required name = 'query' style = 'font-family:Arial;font-size:14px;width:60%;height:40px;'/>
    <input type='submit' value='Submit' id='submit' style = 'height:40px'>
</form>
</div>
</body>
</html>

EDIT 3

adicionando o arquivo de configuração padrão

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks MultiViews
        AllowOverride None
    </Directory>

    <Directory /var/www/>
        Options ExecCGI Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all 
        AddHandler cgi-script .py
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin/">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
    
por Clock Slave 16.03.2017 / 15:36

1 resposta

1

Se o arquivo for baixado em vez de ser executado pelo Apache, então o módulo necessário para executá-lo não foi carregado pelo Apache. Para o Python, existem alguns módulos que podem ser usados. Parece que o usado aqui é o módulo CGI simples, então:

sudo a2enmod cgi
sudo service apache2 restart
    
por muru 16.03.2017 / 15:56