Nasazení aplikace baňka s CGI

hlasů
9

Napsal jsem malou aplikaci pomocí rámce baňky. Snažím hostit to pomocí CGI. Následující dokumentace jsem vytvořil soubor .cgi s následujícím obsahem:

#!/usr/bin/python
from wsgiref.handlers import CGIHandler
from yourapplication import app

CGIHandler().run(app)

Běžící výsledky souborů v následující chybě:

...

Soubor /usr/lib/pymodules/python2.7/werkzeug/routing.py, řádek 1075, v bind_to_environ wsgi_server_name = environ.get ( 'HTTP_HOST', environ [ 'název_serveru'])
KeyError: 'název_serveru'
Stav: 500 vnitřní chyba serveru
Content-Type: text / plain
Content-Length: 59

V mé žádosti jsem si stanovili:

app.config['SERVER_NAME'] = 'localhost:5000'

Když jsem spuštění aplikace s vývojovým serverem Flask to funguje velmi dobře. Jak můžete říct, že jsem k této věci zcela nový a já jsem hledat jiné s podobnými chybami, ale bez úspěchu. All pomoc je oceňována.

Položena 06/09/2011 v 19:56
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
0

To je vyslán jako odpověď následující připomínky výše pro úplnost.

Jak již bylo uvedeno výše, by měla CGI skripty spouštět nějakým serverem. Zde je abstraktní z CGI 1.1 RFC :

Common Gateway Interface (CGI) je jednoduché rozhraní pro spouštění externích programů, software nebo brány v rámci informačního serveru způsobem platformě nezávislé. V současné době jsou podporovány informační servery jsou servery HTTP.

U proměnných prostředí (které byly chybějící a vyvolaly chybu), viz sectuib 4.1 v RFC.

Odpovězeno 07/09/2011 v 20:51
zdroj uživatelem

hlasů
2

Tato otázka je tři roky starý a nikdy nebyl označen jako odpověď. Pokud hledáte docela kompletní diskuzi o tom, jak se vám to vidět nejnovější příspěvek, které mě k tomuto související StackOverflow otázku . To by mělo pracovat pro vás.

Rozhodně mkriheli má správný nápad; monostop by neměl být pokusu o spuštění souboru cgi (ať server tomu, že v reakci na příchozí HTTP požadavku).

Odpovězeno 20/07/2014 v 08:57
zdroj uživatelem

hlasů
0

Pokusím se ukázat, co jsem udělal, a to funguje v Godaddy hostitelské sdílení účtu:

Ve složce cgi-bin ve složce mysite, jsem přidal následující soubor cgi:

#!/home/USERNAME/.local/bin/python3
from wsgiref.handlers import CGIHandler

from sys import path
path.insert(0, '/home/USERNAME/public_html/MYSITE/')
from __init__ import app

class ProxyFix(object):
   def __init__(self, app):
       self.app = app

   def __call__(self, environ, start_response):
       environ['SERVER_NAME'] = ""
       environ['SERVER_PORT'] = "80"
       environ['REQUEST_METHOD'] = "GET"
       environ['SCRIPT_NAME'] = ""
       environ['PATH_INFO'] = "/"
       environ['QUERY_STRING'] = ""
       environ['SERVER_PROTOCOL'] = "HTTP/1.1"
       return self.app(environ, start_response)

if __name__ == '__main__':
    app.wsgi_app = ProxyFix(app.wsgi_app)
    CGIHandler().run(app)

Jak můžete vidět na init soubor ve složce mysite mají baňky aplikaci.

Nejdůležitější věc je nastavit oprávnění správně. setted I 755 k této složce povolení, stejně jako složky „/home/USERNAME/.local/bin/python3“ !! Nezapomeňte, že systém potřebuje toto povolení k otevření baňky.

Chcete-li otevřít CGI Mám následující soubor .htaccess v adresáři mysite:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /home/USERNAME/public_html/MYSITE/cgi-bin/application.cgi/$1 [L]

Tak to bude skýtat soubor cgi, když někdo vstoupí do stránky.

Odpovězeno 12/01/2018 v 17:17
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more