Frage

Ich versuche, Pyramidencode für dotcloud bereitzustellen.Leider werden einige Pfade nicht auf die gleiche Weise wie bei der lokalen Paster-Bereitstellung zugeordnet.Wenn ich die Entwicklungskonfiguration mit lokalem Server durchführe paster serve ..., kann ich auf statische Dateien zugreifen, die in konfiguriert sind:

config.add_static_view('static', 'appname:static')

allerdings auf den Dotcloud-Servern, wenn die Skripte über Folgendes ausgeführt werden wsgi.py:

import os, sys
from paste.deploy import loadapp
current_dir = os.path.dirname(__file__)
application = loadapp('config:production.ini', relative_to=current_dir)

statischer Inhalt wird in einem falschen Verzeichnis gesucht.Statt /home/dotcloud/current/static/pylons.css, es sollte hineinschauen /home/dotcloud/current/appname/static/pylons.css

Gibt es einen Teil der WSGI-Konfiguration, der das Basisverzeichnis definieren kann?Was verpasse ich?Die Anwendung wird über ausgeführt nginx / uwsgi.

Ich habe versucht zu laden config:../production.ini, relative_to=current_dir + '/appname' aber das hat nichts geändert.

War es hilfreich?

Lösung

Auf dotCloud beginnen URLs mit /static werden direkt von nginx gehandhabt, nicht von uwsgi.Das bedeutet, dass Ihr Code diese Anfragen niemals sehen wird:sie werden sofort von der serviert static/ unterverzeichnis Ihrer Anwendung.

Eine mögliche Problemumgehung besteht darin, einen Symlink von einzurichten static zu appname/static.

Wenn Sie Ihr Repository nicht mit einem solchen Symlink überladen möchten, können Sie ein postinstall skript stattdessen:

#!/bin/sh
# This creates the symlink required by DotCloud to serve static content from nginx
ln -s ~/current/appname/static ~/current/static

Der Symlink ist glatt, aber der postinstall skripte geben Ihnen die Möglichkeit, einen Kommentar in die Datei einzufügen, um ihren Zweck zu erläutern :-)

Zukünftige Versionen von dotCloud bieten möglicherweise einen Umschalter für die "nackte Konfiguration", bei dem die Nginx-Konfiguration keine spezielle Pfadbehandlung enthält, nur für den Fall, dass Sie sie nicht möchten.

In der Zwischenzeit können Sie einfach die Nginx-Standardkonfiguration Ihres dotCloud-Dienstes anzeigen dotcloud ssh zu Ihren Diensten und inspizieren /etc/nginx/sites-enabled/default.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top