Jetzt bräuchte ich Hilfe beim Hochladen in uberspace

Django, Flask, Bottle, WSGI, CGI…
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Pitwheazle hat geschrieben: Montag 6. März 2023, 21:55 Das ist jetzt keine böse Absicht, ich habe da mal reingeschaut - das ist wieder eine neue Baustelle, das ist nicht getan mit Klick und alles geht. Könnt ihr verstehen, dass ich damit überfordert bin? Ich habe das Gefühl, mein Problem hängt zurzeit nur daran, dass ich einen Link nicht richtig benannt habe. Ich habe schon einige Kolleginnen und Kollegen, die mit meinem Rechentrainer arbeiten und ohne CSS ist der zurzeit sehr "gewöhnungsbedürftig". Ich lasse ihn jetzt mit DEBUG=True laufen.
Einen Server im Netz laufen lassen, ist eben keine kleine Baustelle. Nebenbei eine neue Applikation entwickeln, ebenfalls. Vor allem wenn man beides erstmalig tut.
Ich kann deine Überforderung also gut nachvollziehen. Bin nicht sicher, wie sehr ich mich von Kollegen treiben lassen würde, wenn die Technik eben noch nicht fertig ist.
DEBUG=True ist ein großes Sicherheitsrisiko, und das solltest du auch besonders deswegen nicht tun, weil du besonders schützenswerte Daten vorhältst.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Also jetzt scheint es zu funktionieren. Gute Güte! Nach einigen Emails mit uber (die sind auch sehr geduldig) hat es geklappt (hoffentlich finde ich nichts was ich bisher übersehen habe).

Ich musste lernen, dass die Staticfiles an einer vollkommen anderen Stelle liegen und ich weiß jetzt wo der ist und kann dort meinen Ordner einfach hochladen. Der wichtigste Befehl in der bash (heißt die so?) war dann
"uberspace-web-backend-set --apache /staticfiles" - da sucht dann irgendein Indianer nach den CSS Dateien.

Aber zurück zu den settings:
STATIC_ROOT = BASE_DIR / "staticfiles" ist der Zeilordenr in dem die ganzen CSS Dateien mittels "collectstatic" kopiert werden - wenn ich das richtig sehe, könnte man das genauso gut händisch machen(?) und den muss ich dann an die oben beschriebene Stelle bei uber hochladen.
Durch STATIC_URL = '/static/' lege ich fest, dass meine CSS Dateien (wo auch immer sie liegen) in Ordnern liegen die "static" heißen und
STATICFILES_DIRS = [BASE_DIR /"static"] legt fest, dass "collectstatic" alle Ordner mit Namen "static" im gesamten Projekt einsammelt. (was ich auch händisch machen könnte). Habe ich das jetzt richtig verstanden?

Und eine weitere Frage: Wenn ich diese Einträge weglassen würde und meine CSS Dateien sorfältig einsammeln und in der richtigen Ordnerstruktur speichern würde und bei uber hochlüde - könnte ich den ganzen Summs auch weglassen?
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Kebap hat geschrieben: Dienstag 7. März 2023, 15:05 DEBUG=True ist ein großes Sicherheitsrisiko, und das solltest du auch besonders deswegen nicht tun, weil du besonders schützenswerte Daten vorhältst.
Es wird ja auch extra in den settings darauf hingewiesen. Woraus besteht aber denn dieses Sicherheitsrisiko?
Also, was ich erkenne ist, dass, bei Eingabe einer nicht vorgesehenen URL, meine Pfade angezeigt werden und bei einer Eingabe mit der mein Code nicht umgehen kann, oder einem Fehler der sowieso in meinem Code ist, die entsprechenden Codezeilen angezeigt werden.
Was kann den sonst noch passieren?
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Pitwheazle hat geschrieben: Mittwoch 8. März 2023, 18:43 STATIC_ROOT = BASE_DIR / "staticfiles" ist der Zeilordenr in dem die ganzen CSS Dateien mittels "collectstatic" kopiert werden - wenn ich das richtig sehe, könnte man das genauso gut händisch machen(?) und den muss ich dann an die oben beschriebene Stelle bei uber hochladen.
Das ist korrekt.
Und der Webserver sollte so konfiguriert sein, dass dieses Verzeichnis durch ihn ausgeliefert wird.
Pitwheazle hat geschrieben: Mittwoch 8. März 2023, 18:43 Durch STATIC_URL = '/static/' lege ich fest, dass meine CSS Dateien (wo auch immer sie liegen) in Ordnern liegen die "static" heißen und
Nein.
Damit legst fest, unter welchem URL-Pfad die statischen Dateien verfügbar sind.
Angenommen du würdest STATIC_URL = "/hirsch/" in deiner settings.py stehen haben und in einem Template {% static 'kuh.css' %} verwenden, dann würde hinterher "/hirsch/kuh.css" in dem gerenderten Template stehen.
Das hat also gar nichts mit irgendwelchen Verzeichnissen zu tun, sondern ist quasi der Platzhalter für die URL.

Daraus ergibt sich:
Du musst dem Webserver sagen, dass er die URL, die in STATIC_URL steht, auf das Verzeichnis, das in STATIC_ROOT steht abbilden soll.
Wenn also dein STATIC_ROOT = "/irgendwo/tief/im/system" ist und dein STATIC_URL = "/irgendwas/", dann müsstest du dem Webserver sagen "stelle den Inhalt von "/irgendwo/tief/im/system" unter der URL "/irgendwas/" zur Verfügung.
Und wenn du dann deinHost.de/irgendwas/file.css aufrufst, sollter der Webserver - die richtige Konfiguration vorausgesetzt, /irgendwo/tief/im/system/file.css ausliefern - oder einen 404.
Pitwheazle hat geschrieben: Mittwoch 8. März 2023, 18:43 STATICFILES_DIRS = [BASE_DIR /"static"] legt fest, dass "collectstatic" alle Ordner mit Namen "static" im gesamten Projekt einsammelt. (was ich auch händisch machen könnte). Habe ich das jetzt richtig verstanden?
Nein, das sagt, dass es den Inhalt aus BASE_DIR / "static" einsammeln soll.
Für das Einsammeln aus den Apps sorgt der Staticfiles Finder.
Pitwheazle hat geschrieben: Mittwoch 8. März 2023, 18:43 Und eine weitere Frage: Wenn ich diese Einträge weglassen würde und meine CSS Dateien sorfältig einsammeln und in der richtigen Ordnerstruktur speichern würde und bei uber hochlüde - könnte ich den ganzen Summs auch weglassen?
Du musst gar nichts davon nehmen.
Du kannst alles aus der settings.py raus löschen, was mit staticifiles zu tun hast.
Dann schießt du dir halt nicht nur in den Fuß sondern in den Kopf.
Dann funktioniert nichts mehr, was mit static zu tun hat und du musst das alles hard kodieren.
Oder anders: Das wäre großer Blödsinn.

Wenn du den Kram selbst entwickeln und hosten willst, bleibt dir nichts anderes übrig als das zu lernen.
In der Regel macht man das auch alles nicht per Hand, sondenr hat im günstigsten Fall etwas, dass das Deployment automatisiert und in diesem Deployment-Prozess auch das 'collectstatic' ausführt. Deshalb gibt es dieses Hilfsprogramm ja, damit man eben nicht per Hand irgendwie einsammeln und irgendwo hin legen muss, weil das genau so lange funktioniert, bis man Dinge vergisst.
Und wenn du per Hand deployest, dann musst du auch per Hand collectstatic ausführen. Und dein Projekt und der Webserver müssen aber natürlich richtig konfiguriert sein.
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Das Risiko ist bspw. dass jemand deinen Server aufmacht und alle Daten rausträgt oder auch zukünftig mitliest oder unbrauchbar macht oder für eigene Zwecke übernimmt usw.
Du willst nicht zum Spaß die detaillierten Informationen über deinen benutzten Pfade, Code, Datenbank, usw. anzeigen lassen. Niemals. Denn dieses Wissen kann gegen dich eingesetzt werden.
Was genau die Angreifer dann mit den Details anfangen, obliegt allein deren Kreativität oder kriminellem Potential.
Pitwheazle hat geschrieben: Mittwoch 8. März 2023, 18:47
Kebap hat geschrieben: Dienstag 7. März 2023, 15:05 DEBUG=True ist ein großes Sicherheitsrisiko, und das solltest du auch besonders deswegen nicht tun, weil du besonders schützenswerte Daten vorhältst.
Es wird ja auch extra in den settings darauf hingewiesen. Woraus besteht aber denn dieses Sicherheitsrisiko?
Also, was ich erkenne ist, dass, bei Eingabe einer nicht vorgesehenen URL, meine Pfade angezeigt werden und bei einer Eingabe mit der mein Code nicht umgehen kann, oder einem Fehler der sowieso in meinem Code ist, die entsprechenden Codezeilen angezeigt werden.
Was kann den sonst noch passieren?
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Woraus besteht aber denn dieses Sicherheitsrisiko?
Kurzfassung: die Debugging Ausgabe enthält extrem viele Details (nützlich beim Debugging) und kann potentiellen Angreifern mögliche Angriffsvektoren gegen dein System und deine Anwendung zeigen.

Gruß, noisefloor
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Zu den ganzen konkreten (und richtigen) Argumenten kommt dann noch, dass in der Django-Doku explizit steht: "Never deploy a site into production with DEBUG turned on." (https://docs.djangoproject.com/en/4.1/r ... ngs/#debug) Das sollte für sich genommen schon Grund genug sein, denn ganz offensichtlich wird es so vom Django-Team so betrachtet, als könnten da kritische Sachen drin stehen, egal, ob sie das aktuell tun oder nicht.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

So, jetzt bräuchte ich wieder Hilfe beim "Hochladen in uberspace" (war ja zu erwarten). Mein Rechentrainer läuft ja unter uberspace recht ordentlich und es wurden auch schon 10000 Aufgaben gerechnet (na ja, das ist nicht wirklich viel - ich will aber nichts kaputtmachen, das wäre der Motivation der Kids sehr abträglich). Das mit dem Hochladen habe ich ja letztendlich nur mithilfe der freundlichen Administratoren ebendort hinbekommen.
Darum geht es:
Ich habe ja in meinem anderen Post viel Hilfe bekommen bei der Erstellung der "Sachaufgaben". Jetzt wird es Zeit, meinen Rechentrainer auf uberspace upzudaten. Ich habe das ganze Projekt sicherheitshalber mal runtergeladen und das lokal geübt. Ich muss also ein view ersetzen und das model mit meinen "sachaufgaben" hochladen, dann die Datenbank ergänzen (siehe meinen UTF-8 Post) und alles zum Laufen bringen. Lokal habe ich es hinbekommen und gelernt, dass ich zunächst die beiden Dateien "view" und "models" ersetzen muss, dann "makemigrations" durchführen einen default für "variablen" einsetzen (warum auch immer), dann "migrate" und mit "load sachaufgabe.json" meine Datenbank ergänzen.
... lokal hat es geklappt. Online nicht so recht und da ja "debug = False" ist, komme ich nicht so recht weiter und habe erstmal meine Sicherheitskopie zurückgespielt (zum Glück geht dann alles wieder!).
Ich denke, der Fehler liegt erstmal nur daran, dass ich es nicht hinbekommen habe, mit der SSH Konsole, das "makemigration" durchzuführen. Wahrscheinlich mache ich das an der falschen Stelle? Am besten zeige ich mit einem Screenshot was ich gemacht habe (es ist mir auch bisher nicht gelungen, Code aus dem cmd oder powershell zu kopieren):Bild
Rufe ich "makemigration" an der richtigen Stelle auf? Und warum die Fehlermeldung?
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Es sieht so aus als wäre deine manage.py auf edm Server kaputt. Die Fehlermeldung sagt, dass deren Syntax kaputt ist.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Die Fehlermeldung sehr wahrscheinlich weil ``python`` Python 2.7 ist, da gab es diese Syntax noch nicht. Versuchs mal mit ``python3``.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Da klingelt was. Danke, werde ich morgen ausprobieren- was würde ich ohne euch machen!
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Hurra, das klappt! (kommt ihr mal in mein Alter! Wahscheinlich stehe ich in ein paar Wochen wieder vor dem gleichen Problem!)
Tja, das mit dem makemigration klappt - ich habe aber von @sparrow den Tipp bekommen:
sparrow hat geschrieben: Montag 20. März 2023, 21:20 Zum Evaluieren von Formeln gibt es Module, die das sicher können (das hier scheint so eins zu sein).
diese Bibliothek mit dem "parser()" habe ich importiert (in dem view den ich updaten muss) und das geht gut aber - ich zitiere mich mal selbst:
Pitwheazle hat geschrieben: Mittwoch 22. März 2023, 13:21 Das ist das erste Mal, dass ich bewusst eine Bibliothek einsetze. Die muss ich, wenn ich meine Sachaufgaben fertig habe, dann wohl auch in uber.space installieren?
... und natürlich bekomme ich es nicht hin. Ich habe also an der gleichen Stelle, wie das "makemigration"

Code: Alles auswählen

pip install py_expression_eval
eingegeben und es wird auch ein Weilchen rumgerödelt und ich bekomme die Meldung:
[rt@caelum rechentrainer]$ pip install py_expression_eval
Collecting py_expression_eval
Using cached https://files.pythonhosted.org/packages ... .14.tar.gz
Installing collected packages: py-expression-eval
Running setup.py install for py-expression-eval ... error
Complete output from command /usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-xNo6LY/py-expression-eval/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-6iZY72-record/install-record.txt --single-version-externally-managed --compile:
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'long_description_content_type'
warnings.warn(msg)
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/py_expression_eval
copying py_expression_eval/__init__.py -> build/lib/py_expression_eval
copying py_expression_eval/tests.py -> build/lib/py_expression_eval
running install_lib
creating /usr/lib/python2.7/site-packages/py_expression_eval
error: could not create '/usr/lib/python2.7/site-packages/py_expression_eval': Permission denied

----------------------------------------
Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-xNo6LY/py-expression-eval/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-6iZY72-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-xNo6LY/py-expression-eval/
You are using pip version 8.1.2, however version 23.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
[rt@caelum rechentrainer]$
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Psst, schau mal wie oft da python2 und python2.7 steht. 😉

Entweder ``pip3 …`` oder ``python3 -m pip …`` um das passende PIP zu starten.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

__blackjack__ hat geschrieben: Sonntag 9. April 2023, 15:57 Psst, schau mal wie oft da python2 und python2.7 steht. 😉

Entweder ``pip3 …`` oder ``python3 -m pip …`` um das passende PIP zu starten.
Das ist ja zum Piepen. ... Sorry und danke, aber dazu müsste ich das mit dem Piepen verstehen. Lass' es mich versuchen: Mein Projekt ist mit einem anderen Python erzeugt als es hier zur Verfügung steht ("meins" ist neuer?). Beim neueren reicht "python" und "pip", wenn man aber bei Uber ein älteres zur Verfügung steht, muss ich "python3" und "pip3" schreiben? ... oder so ...
Ich habe es probiert (wahrscheinlich wieder irgendwie falsch) egal ob "pip3" oder python3 -p pip bringt das:
[rt@caelum rechentrainer]$ pip3 install py_expression_eval
Collecting py_expression_eval
Using cached https://files.pythonhosted.org/packages ... ne-any.whl
Installing collected packages: py-expression-eval
Exception:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/lib/python3.6/site-packages/pip/commands/install.py", line 365, in run
strip_file_prefix=options.strip_file_prefix,
File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 789, in install
**kwargs
File "/usr/lib/python3.6/site-packages/pip/req/req_install.py", line 854, in install
strip_file_prefix=strip_file_prefix
File "/usr/lib/python3.6/site-packages/pip/req/req_install.py", line 1069, in move_wheel_files
strip_file_prefix=strip_file_prefix,
File "/usr/lib/python3.6/site-packages/pip/wheel.py", line 345, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/lib/python3.6/site-packages/pip/wheel.py", line 287, in clobber
ensure_dir(dest) # common for the 'include' path
File "/usr/lib/python3.6/site-packages/pip/utils/__init__.py", line 83, in ensure_dir
os.makedirs(path)
File "/usr/lib64/python3.6/os.py", line 210, in makedirs
makedirs(head, mode, exist_ok)
File "/usr/lib64/python3.6/os.py", line 220, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.6'
[rt@caelum rechentrainer]$ pip install -upgrade pip
... für mich könnte das ja ach chinesisch sein ...
Und bei "pip install -upgrade pip" fehlt ja wohl auch irgendws.
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

Das sieht aus, als wenn du dein virtualenv nicht aktiviert hast. Pip probiert ja ins System zu installieren. Falls du gar kein virtualenv hast, probier mal

Code: Alles auswählen

pip3 install --user  py_expression_eval
Viele Grüße
Whitie
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Whitie hat geschrieben: Montag 10. April 2023, 19:03 Das sieht aus, als wenn du dein virtualenv nicht aktiviert hast. Pip probiert ja ins System zu installieren. Falls du gar kein virtualenv hast, probier mal

Code: Alles auswählen

pip3 install --user  py_expression_eval
Viele Grüße
Whitie
Bingo! Das hat geklappt - super!
Aber heißt das im Umkehrschluss, dass ich das virtualenv nicht aktiviert habe?
Prinzipiell weiß ich ja was das ist, aber auch damit kann ich mal wieder nicht umgehen. Auf meinen lokalen Geräten habe ich keines eingerichtet. Ich dachte aber bei uberspace hätte ich das machen müssen (vielleicht habe ich da ja auch wieder was falsch gemacht). Aber es ist eines da:
Bild
... was heißt das jetzt, soll/muss ich das nachrüsten?
Zusätzlich hat mich jetzt aber auch noch Covid erwischt, jetzt wird das mit den komplizierten Zusammenhängen noch schwieriger.
Antworten