5

Meine lokalen Rechner ein virtuelles CeontOS-7 mit einem Python ist 2.7 virtualenv ein Flask Anwendungsverzeichnis enthält, ist die Struktur der folgende:403 verboten für AWS Bohnenstange Flask statische Dateien ohne SSL

/var 
    /www 
    /myAppenv 
     /myApp 
     /.ebextensions 
      myApp-env.config 
     /.elasticbeanstalk 
     application.py 
     requirements.txt 
     /flaskApp 
      /core 
      views.py 
      models.py 
      forms.py 
      /templates 
      /static 

und ich es einsetzen from/myApp Verwenden von EB CLI Bereitstellen in einer Beanstalk-Anwendung namens myApp mit einer Umgebung namens myApp-env.

ich denke, der statischen Dateien Pfad rechts in /.ebextensions/myApp-env.config gesetzt:

option_settings: 
    "aws:elasticbeanstalk:container:python:staticfiles": 
    "/static/": "flaskApp/static/" 

und ich kann in AWS Web sehen Konsolen-> Umwelt->-Konfigurationen> Software-Konfiguration,

StaticFiles: /static/=flaskApp/static/ 

so scheint die Pfadeinstellung nicht die Ursache des Problems zu sein.

Also, wenn ich die Web-Seite für meine Anwendung öffnen sehe ich die Seite css und js fehlt, da alles aus statischem Verzeichnis eine 403 verbotene Antwort bekommt:

GET http://myApp-dev.elasticbeanstalk.com/ [HTTP/1.1 200 OK 174ms] 
GET http://myApp-dev.elasticbeanstalk.com/static/bootstrap-3.3.5-dist/js/bootstrap.min.js [HTTP/1.1 403 Forbidden 55ms] 
... 

Erraten, es ist etwas zu Berechtigungen, da in meinem lokale dir-Dateien gehören meinem Linux-Account (aus Samba-Gründen), dann habe ich versucht, root und chgrp root (statische Verzeichnisse und Dateien Berechtigungen sind 755), aber es hat nichts geändert. Ich glaube eigentlich nicht, dass etwas mit Firewall/Selinux zu tun hat, weil die Homepage tatsächlich geladen wird.

Weiß jemand, wie man dieses Problem löst?

Antwort

0

Der Eigentümer/die Gruppe, die root ist, kann irrelevant sein, wenn die Dateien nicht für alle Benutzer sichtbar sind. Stellen Sie sicher, dass sie für alle zugänglich sind, indem Sie eine chmod 664 für alle statischen Dateien ausführen.

+0

Entschuldigung, ich habe nicht in meiner Frage gesagt, dass statische Dirs und Dateien Berechtigungen 755 sind. Ich werde die Frage jetzt bearbeiten, um es hinzuzufügen. –

0

Ich denke, ich habe das Problem gefunden. Ich inspizierte von EB SSH nur zu verstehen, was los war, und ich bemerkte, dass die „EC2-user“ ich in der AWS Rechner angemeldet wurde zugreifen konnte, bis das Verzeichnis

/opt/python/current/app 

(cd Befehl ausgeführt wird), aber ec2- Benutzer konnte nicht auf Dir zugreifen

/opt/python/current/app/flaskApp 

wegen der Berechtigungen.

Während die statischen Dirs und Dateien in FlaskApp noch Berechtigungen auf 755 festgelegt hatten, bemerkte ich, dass FlaskApp dir (das statische Dir enthält) war 744 (das ich dachte, wäre in Ordnung). Also habe ich flaskApp dir Berechtigungen auf 755 geändert und es hat funktioniert: Jetzt werden statische Dateien geladen!

Übrigens bezweifle ich, dass diese Berechtigungen für die Produktion gut sind. Die Alternative könnte darin bestehen, dirs so zu strukturieren, dass static kein Unterverzeichnis von flaskApp dir ist. Auf diese Weise kann static dir auf 755 gesetzt werden, während flaskApp dir auf konservativere Berechtigungen setzt.