Stworzyłem aplikację web.py, a teraz, gdy jest ona gotowa do wdrożenia, chcę uruchomić nie na wbudowanym serwerze internetowym web.py. Chcę mieć możliwość uruchamiania go na różnych serwerach internetowych, Apache lub IIS, bez konieczności zmiany kodu aplikacji. Właśnie tam WSGI ma wejść, jeśli rozumiem to poprawnie.
Nie rozumiem jednak, co muszę zrobić, aby aplikacja mogła być wdrażana na serwerze WSGI? Większość przykładów zakłada, że używasz Pylons/Django/other-framework, na którym po prostu uruchamiasz magiczne polecenie, które naprawia wszystko za Ciebie.
Z tego co rozumiem (dość krótka) dokumentacja web.py, zamiast uruchamiać web.application(...).run()
, powinienem używać web.application(...).wsgifunc()
. I co wtedy?Wdrażanie aplikacji Web.py z WSGI, kilka serwerów
Odpowiedz
Dokładnie to, co trzeba zrobić, aby hostować go z określonym mechanizmem hostingu WSGI różni się w zależności od serwera.
W przypadku Apache/mod_wsgi i Phusion Passenger wystarczy podać plik skryptu WSGI, który zawiera obiekt o nazwie "application". W przypadku web.py 0.2 jest to wynik wywołania web.wsgifunc() z odpowiednimi argumentami. W przypadku web.py 0.3 zamiast tego używasz funkcji wsgifunc() obiektu zwróconego przez web.application(). Dokładne informacje na nich zobaczyć mod_wsgi dokumentację:
http://code.google.com/p/modwsgi/wiki/IntegrationWithWebPy
Jeśli natomiast masz użyć FastCGI, SCGI lub AJP adaptery do serwera, takich jak Lighttpd, Nginx lub Cherokee, następnie trzeba użyć pakietu „flup” w celu zapewnienia mostu między tymi językowymi interfejsami agnostycznymi i WSGI. Obejmuje to wywoływanie funkcji flup z tym samym obiektem aplikacji WSGI powyżej, że coś takiego jak mod_wsgi lub Phusion Passenger użyje bezpośrednio bez potrzeby mostu. Szczegółowe informacje o tym przekonać:
http://trac.saddi.com/flup/wiki/FlupServers
Ważne jest to, aby uporządkować swoją aplikację internetową tak, że jest w jego własnym autonomiczny zestaw modułów. Aby pracować z określonym serwerem, utwórz w razie potrzeby oddzielny plik skryptu, aby uzyskać most między tym, czego ten serwer potrzebuje, a kodem aplikacji. Twój kod aplikacji powinien zawsze znajdować się poza katalogiem dokumentów serwera WWW, a tylko plik skryptu, który działa jak most, znajduje się w katalogu dokumentów serwera, jeśli jest to właściwe.
Począwszy od 21 lipca 2009 roku, jest znacznie pełniejsze instrukcja instalacji na the webpy install site, który omawia flup, FastCGI, apache i więcej. Nie mam jeszcze wypróbowałem, ale wygląda na to, że jest bardziej szczegółowy.
Oto przykład dwóch hostowanych aplikacji wykorzystujących CherryPy serwer WSGI:
#!/usr/bin/python from web import wsgiserver import web # webpy wsgi app urls = ( '/test.*', 'index' ) class index: def GET(self): web.header("content-type", "text/html") return "Hello, world1!" application = web.application(urls, globals(), autoreload=False).wsgifunc() # generic wsgi app def my_blog_app(environ, start_response): status = '200 OK' response_headers = [('Content-type','text/plain')] start_response(status, response_headers) return ['Hello world! - blog\n'] """ # single hosted app server = wsgiserver.CherryPyWSGIServer( ('0.0.0.0', 8070), application, server_name='www.cherrypy.example') """ # multiple hosted apps with WSGIPathInfoDispatcher d = wsgiserver.WSGIPathInfoDispatcher({'/test': application, '/blog': my_blog_app}) server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8070), d) server.start()
- 1. Wdrażanie treści na wiele serwerów (EC2)
- 2. Sterowanie programowe serwerów aplikacji
- 3. Web.py - AttributeError: „moduł” obiekt ma atrybut „aplikacji”
- 4. Wdrażanie aplikacji kolby z mod_wsgi
- 5. Wdrażanie usługi strumieniowej WSGI: (jak wykrywać rozłączenia klientów)
- 6. Asynchroniczne WSGI z Twisted
- 7. Wdrażanie aplikacji sieci web ASP.NET
- 8. wdrażanie aplikacji pythonowych
- 9. wdrażanie aplikacji Windows 8
- 10. Wdrażanie Django z Apache
- 11. Wdrażanie aplikacji na Androida
- 12. Wdrażanie aplikacji MS Lightswitch
- 13. WSGI bajt waha służąc
- 14. Wdrażanie aplikacji WinForm z osadzonym sqlite
- 15. Wdrażanie aplikacji Websharper z Visual Studio 2012
- 16. Wdrażanie Django aplikacji OpenSource z zależnościami
- 17. Ciągłe wdrażanie aplikacji z jedną stroną?
- 18. Wdrażanie aplikacji z Eclipse do GlassFish
- 19. Wdrażanie PostgreSQL w aplikacji Windows
- 20. Pakowanie i wdrażanie aplikacji Scala
- 21. Wdrażanie aplikacji Sails.js w Heroku?
- 22. Apache wdrażanie aplikacji Spark najlepsze praktyki
- 23. Wdrażanie aplikacji C# (.NET 2.0) jako aplikacji przenośnej?
- 24. Serwer IIS z żądaniem aplikacji Routing Ustawienia farmy serwerów
- 25. C# Wdrażanie mojej aplikacji - clickonce tylko z Internetu
- 26. web.py w Google App Engine
- 27. Argumenty dla klas obsługi web.py
- 28. web.py - podaj adres i port
- 29. Łączenie gniazd internetowych i WSGI w aplikacji pythonowej
- 30. Wdrażanie aplikacji OpenGL w systemie Windows Mobile
Ok, więc nie ma ogólny sposób to zrobić. Szkoda. Będę musiał wtedy napisać kilka adapterów. Dzięki! – carlpett