Kolben SERVER_NAME nie richtig

Ich arbeite derzeit an einem Kolben Anwendung gehostet auf Amazon AWS. Die Anwendung, die ich arbeite, hat mehrere Komponenten, von denen ich arbeite auf zwei. Ich bin auf der Suche, um das setup subdomains für diese Komponenten bin zwar mit einigen Schwierigkeiten.

Ich will :

  • www.example.com > GoDaddy
  • dashboard.example.com > AWS
  • api.example.com > AWS

Den www subdomain ist eine statische Website und alles, was mit, die gehen in Ordnung. Ich war in der Lage, um das setup Route53 und GoDaddy, so dass dashboard.example.com und api.example.com auf meiner EC2-server mit meinem Kolben Anwendung. Ich haben dies bestätigt, denn ich kann sehen, dass der Antrag (das ist 404ing), wenn ich auf die domain mit meinem browser.

Das problem, das ich habe ist, dass Flask erwartet, dass die app.config.SERVER_NAME festgelegt werden, um die server-Namen, die müssen auch passen, URI. Der server name von meiner EC2-Instanz ist ec2-###-###-###-###.compute-1.amazonaws.com.

Wenn ich meinen server Namen, der Kolben Anwendung läuft wunderbar, und ich bekomme eine 404-Seite, und sehen, der Antrag kommt durch das beobachten der Ausgabe des Kolbens Anwendung, wenn ich entweder dashboard.example.com oder api.example.com.

Nicht die Anzeige der 404-Seite app.config.SERVER_NAME sollte example.com, aber wenn ich dies Tue, wird der Kolben Anwendung wird nicht ausgeführt, und ich bekomme socket.error: [Errno 99] Cannot assign requested address.

Hier ist mein code :


from flask import \
    Flask, \
    request

# my imports
from dashboard import blueprint as dashboard

app = Flask(__name__)

@app.route('/')
def catch():
    return request.url

def main():
    print('Starting main ...')

    app.register_blueprint(dashboard)

if __name__ == '__main__':
    main()

app.config['SERVER_NAME'] = 'example.com'
app.run(
    host=app.config['server_name'],
    port=80,
    debug=True,
)

Und hier ist mein dashboard-Modul :


from flask import \
    render_template, \
    Blueprint,\
    Response

blueprint = Blueprint(
    'dashboard', __name__,
    static_folder='static',
    template_folder='templates',
    subdomain='dashboard',)

@blueprint.route('/', methods=['GET'])
def _():
    return render_template('index.html')

@blueprint.route('/js/')
def _js(path):
    print('js : %s' % path)
    with blueprint.open_resource('static/js/' + path, mode='r') as f:
        content = f.read()
        return Response(content, mimetype='text/javascript')

@blueprint.route('/css/')
def _css(path):
    print('css : %s' % path)
    with blueprint.open_resource('static/css/' + path, mode='r') as f:
        content = f.read()
        return Response(content, mimetype='text/css')

Danke Euch allen im Voraus für jede Hilfe zur Verfügung gestellt.

InformationsquelleAutor Dawson | 2013-08-14

Schreibe einen Kommentar