Mehrere Domains und Subdomains auf einer einzigen Pyramid-Instanz

Ich bin auf der Suche, um mehrere Domains und Subdomains auf einer einzigen Pyramide-Instanz haben. Allerdings kann ich keine Dokumentation darüber finden. Die letzte Frage bezieht sich auf ein Glossar mit sehr wenig Information und keine Beispiele. Hast du irgendwelche Beispiele oder kann mich zu einer besseren Dokumentation bringen?

2 Solutions collect form web for “Mehrere Domains und Subdomains auf einer einzigen Pyramid-Instanz”

Pyramide ist nur eine WSGI-Anwendung. Dies bedeutet, dass es von der HTTP_HOST-Umgebungs-Taste (vom Host-Header festgelegt) abhängig ist, um den Host der Anwendung zu bestimmen. Es ist alles relativ. Point-being, dass Pyramide hat keine Beschränkungen für das, was es akzeptieren kann, also die Welt ist Ihre Auster und Sie können es aufstellen, um Inhalte auf verschiedene Domains zu begrenzen, wie Sie möchten. Dies beginnt natürlich mit dem, was Hosts Ihr Webserver konfiguriert ist, um Ihre Anwendung zu füttern.

Angenommen, Sie verwenden URL-Versand, möchten Sie vielleicht einige benutzerdefinierte Route Prädikate, die Überprüfung der request.host Wert für was auch immer Sie request.host . Das Zurückgeben von False aus diesem Prädikat wird verhindern, dass diese Route jemals eine Anforderung an diesen Host abgibt.

Dies ist ein großes Thema, so könnte es helfen, wenn Sie einige weitere Besonderheiten geben. Zum Beispiel, da Pyramide relativ ist, muss jede URL, die Sie von 'example.com' generieren möchten, um jemanden zu 'sub.example.com' umzuleiten, über einen Vorgenerator erfolgen.

 def pregen(request, elements, kw): kw['_app_url'] = 'http://sub.example.com' return elements, kw def req_sub(info, request): return request.host.startswith('sub') config.add_route('sub_only', '/', custom_predicates=(req_sub,), pregenerator=pregen) config.add_route('foo', '/foo') config.add_view(view, route_name-'foo') def view(request): # redirect the user to "http://sub.example.com", regardless of whether # request.host is "example.com" or "sub.example.com" return HTTPFound(request.route_url('sub_only')) 

Wenn Sie die Kontrolle über Ihre Hosting-Umgebung haben, würde ich dringend vorschlagen, die Domain-Sachen aus der Pyramide und Umgang mit einem Proxy-Server wie Apache Mod Proxy, Routing zu Subdomains in Pyramide. Dann können Sie ganz einfach einen der Domain-Namen, um Routing zu sehen, ohne irgendetwas fragiles (wie Domain-Namen) in Ihrem Pyramiden-Code zu sehen. Ihr App Code wird viel sauberer auf diese Weise, und viel einfacher, später zu ändern.

Hier ist ein Apache-Beispiel für zwei Domains, die zu einer Pyramiden-App gehen, vorausgesetzt, wir bedienen die Pyramiden-App irgendwie auf Port 5001 (Gunicorn oder was auch immer du willst).

 <VirtualHost *:80> ServerName domain_2.com ProxyPreserveHost On # send all request to our app at /app1/* ProxyPass / http://127.0.0.1:5001/app_1/ ProxyPassReverse / http://127.0.0.1:5001/app_1/ </VirtualHost> <VirtualHost *:80> ServerName domain_2.com ProxyPreserveHost On # send all request to our app at /app2/* ProxyPass / http://127.0.0.1:5001/app_2/ ProxyPassReverse / http://127.0.0.1:5001/app_2/ </VirtualHost> 

Und hier ist ein Beispiel für eine Domain, die zu mehreren Pyramideninstanzen geht:

 <VirtualHost *:80> ServerName mydomain.com ProxyPreserveHost On # admin go to manager app on 5001 ProxyPass /media/manager/ http://127.0.0.1:5001/ retry=5 ProxyPassReverse /media/manager/ http://127.0.0.1:5001/ # downloads from server app on 5002 ProxyPass /media/server/ http://127.0.0.1:5002/ retry=5 ProxyPassReverse /media/server/ http://127.0.0.1:5002/ </VirtualHost> 
  • Eins zu einer Selbstbeziehung in SQLAlchemy
  • SQLAlchemy viele-to-many-Beziehung auf deklarative Tabellen
  • SQLAlchemie INSERT IGNORE
  • SQLAlchemy: Gibt einen Datensatz zurück, der durch den Maximalwert einer Spalte gefiltert wird
  • SQLAlchemy-Update-Elternteil bei verwandten untergeordneten Änderungen
  • Ich habe psycopg2 in virtuellen env installiert, aber immer noch importerror psycopg2
  • Mehrfachvermietung mit SQLAlchemy
  • Sqlalchemy id Gleichheit vs Referenz Gleichheit
  • Die Abhängigkeitsregel hat versucht, den Primärschlüssel in SQLAlchemy zu löschen, wenn die Fremdschlüssel-Einschränkung Teil des zusammengesetzten Primärschlüssels ist
  • Wählen Sie das Element mit dem Maximum aus sqlalchemy Beziehung
  • NULL-Werte in SQLAlchemy auswählen
  • Python ist die beste Programmiersprache der Welt.