Jetzt bräuchte ich Hilfe beim Hochladen in uberspace

Django, Flask, Bottle, WSGI, CGI…
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Na denn, es war ja zu erwarten, dass ich das nicht alleine hinbekomme!
Also bei pythonanywhere war das ganz einfach, aber für PostgresSQL müsste ich dort knapp 15€ bezahlen, dann könnte ich ja auch gleich eurem Rat folgen und das ganze in uberspace hochladen ... dachte ich. Jetzt habe ich viele Anleitungen gelesen, verstehe viel Bahnhof. Es ist mir gelungen, einen Account zu erstellen und sogar, mich per SSH in der powershell mit ihm zu verbinden, kann ls und cd und habe auch gunicorn installiert (warum auch immer). Aber jetzt hänge ich an:
Create ~/etc/services.d/gunicorn.ini with the following content:
[program:gunicorn]
command=gunicorn --error-logfile - --reload --chdir ~/MyDjangoProject --bind 0.0.0.0:8000 MyDjangoProject.wsgi:application
Ich habe irgenwann DOS gekonnt und weiß auch was eine Batchdatei ist, das überfordert mich aber.
Wie erstelle ich eine ini Datei? Ich kann zumindest ins Verzeichnis "/etc/services.d/ wechseln (immerhin), wie aber erstellt man da eine ini Datei??

Ich habe schon etwas weitergelsen und festgestellt, dass ich dann django installieren muss und dann ein Djangoproject starten soll, mein Project ist aber doch schon fertig, wie bekomme ich das auf den Server (bei pythonanywhere ging das mit github (das habe ich hinbekommen), bei AWS mit einer zip Datei (das hat nicht geklappt) - da brauche ich dann FileZillaClient- und benötige ich da auch die Option "Site Manager synchronization " (die kostet mehr)? (Mein TotalCommander reicht wohl dafür nicht)
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Nachtrag: ich habe jetzt auch FileZilla installiert und es geschafft, mich mit dem Server zu verbinden, die ini Datei zu erstellen und hochzuladen. Ich habe auch "supervisorctl reread" ausgeführt und "gunicorn: available" zurückgemeldet bekommen. Ich habe auch "supervisorctl update" ausgeführt und "added process group" als Rückmeldung (was auch immer das heißt), "supervisorctl status" bringt aber die Rückmeldung "gunicorn FATAL Exited too quickly (process log may have details)". Ich habe es sogar geschafft, diese Logdatei zu finden. Das Verzeichnis "MyDjangoProject" wird nicht gefunden. Ich habe "MyDjangoProject" in der ini Datei in Rechentrainer geändert und versucht, ein Verzeichnis zu erstellen. mkdir "rechentrainer" hat sogar geklappt aber obengenannter Befehl findet das Verzeichnis immer noch nicht und im Serververzeichnis finde ich es auch nicht - wo gehört das hin? Und wo müssen meine Projektdateien hin?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

~ steht für das Home-Verzeichnis unter Linux. Das ist, wenn ich mich richtig erinner, das Verzeichnis, wo du landest, wenn du dich einloggst.

Dein Projekt heißt doch nicht wirklich MyDjangoProject, oder? Das musst du natürlich durch den Namen des Projekts ersetzen und auch das Verzeichnis so nennen.

Nutzt du privat Windows oder Linux auf deinem Rechner?

Gruß, noisefloor
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Möglicherweise bin ich weiter. Ich hatte die spontane Idee dass "django-admin startproject Rechentrainer" alle erforderlichen Dateien anlegt und eben auch den gesuchten Ordner an der richtigen Stelle anlegt und diesen kann ich dann wohl mit meinen Dateien füller. Und wenn man genau in die Anleitung schaut, wird ja auch dieser Befehl aufgefüht. Dass man dann aber sein Projekt da reinpackt, steht da nicht. Ist aber wohl logisch.
Morgen geht es weiter.
Ach so, ich bin windoof. Ich habe mich immer wieder mal mit Linux versucht aber nicht wirklich damit angefreundet.
Und noch eine Anmerkung: Das MyDjangoProject hatte ich durch "Rechentrainer" ersetzt.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Ach so, ich bin windoof. Ich habe mich immer wieder mal mit Linux versucht aber nicht wirklich damit angefreundet.
Was ist denn windoof? Ich kenne bei den gängigen Betriebssystemen nur Windows, Linux und MacOS.

Egal, worauf ich hinaus wollte: (sehr) viele Server, wo man Webspace etc. mieten kann, laufen unter Linux. So auch die bei Uberspace. Und bei Uberspace kann man in seinem Verzeichnis ja alles machen, solange es die Benutzerrechte zu lassen. D.h. wenn man ein bisschen Erfahrung mit Linux hat oder zumindest Linux in einer virtuellen Maschine (oder WSL2 unter Windows oder, wenn man Ubuntu nehmen möchte, Ubuntu in Multipass unter Windows), dann tut man sich bei der Verwaltung des Server i.d.R. leichter.
gunicorn läuft ja AFAIK gar nicht unter WIndows, also kann man das auf einen Windows Rechner nicht üben.

Gruß, noisefloor
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Windoof bezieht sich auf darauf, dass Linuxisten davon ausgehen, dass Windowsnutzer zu doof sind um Linux zu benutzen. Wie gesagt, von den Grundzügen bin ich mit Linux vertraut und bin mir auch bewusst, dass die Webserver normalerweise unter Linux laufen. Ich habe sogar einen Laptop, auf dem WIN10, Sierra und Linux Mint läuft.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Windoof bezieht sich auf darauf, dass Linuxisten davon ausgehen, dass Windowsnutzer zu doof sind um Linux zu benutzen.
Wir haben 2023 und das ist totaler Unfug. Ja, es gab mal so Tendenzen, aber das ist IMHO > 10 Jahre her. Für die Webentwicklung mit Python ist es IMHO ein einfacher, dass mit Linux zu machen, weil man IMHO viel einfacher testweise Webserver etc. aufsetzen kann. Für den Python-Code an sich ist es egal, der ist ja immer gleich.

Gruß, noisefloor
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Stimmt, wenn man Linux beherrscht ist das eindeutig alles leichter!
gomez72
User
Beiträge: 71
Registriert: Sonntag 28. März 2021, 09:57

ich habe mir eine Docker Umgebung gebaut, die den uberspace Server ungefähr simuliert. Dort drin habe ich meine Django APp am laufen bevor ich sie dann auf den uberspace server pushe. Wenn man den Uberspace Anleitungen folgt, kommt man eigentlich ganz gut hin, hat bei mir aber auch mehrere Anläufe und eingie support Mails benötigt. Eine kleine Unachtsamkeit und man hat eine Fehlkonfiguration und nichts läuft :-)
gomez72
User
Beiträge: 71
Registriert: Sonntag 28. März 2021, 09:57

ich könnte dir während einer online remote session meine uberpace Konfigruation und Herangehensweise zeigen. Das könnte aber 2 Stunden in Anspruch nehmen. Würde ich aber anbieten, wenn es zeitlich passt.
vg gomez
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Danke, das ist ganz toll! Auch ich habe eine Supportanfragen an Uberspace geschickt und wurde geholfen. Ich hatte große Probleme gesehen, es war aber wirklich nur eine Kleinigkeit. Ich hatte eine url zuviel, diese eigentlich schon gelöscht und nur nicht hochgeladen. Dann hat es eigentlich auf Anhieb geklappt. Jetzt muss ich noch das mit den Emails hinbekommen und von SQLite auf Postrges umziehen. Wenn das funktioniert, ziehe ich mein Projekt von Pythonanywher zu Uberspace um. Vielleicht komme ich aber auf dein Angebot zurück.
Zurzeit sitze ich aber parallel an dem Problem, dass ich anstelle von einem Eingabefeld eine Wertetabelle entwerfe - (auch) da habe ich noch nur wage Vorstellungen, wie ich das hinbekomme.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Da bin ich nochmal und bräuchte Hilfe. Ich hatte es ja letztendlich geschafft, mein Projekt auf uberspace hochzuladen. Zurzeit läuft es noch auf pythonanywhere und ich wollte es jetzt umziehen (auf euren Rat hin) und dabei updaten. Natürlich klappt das wieder nicht anstandslos und ich habe wieder ein paar Frage:
1. Meine staticfiles hatte ja schon mal funktioniert, jetzt nicht mehr. Folgendes habe ich gemacht:
- in settings.py eingetragen: STATIC_ROOT = BASE_DIR /"staticfiles"
- den Ordner hochgeladen
- in der ssh Konsole (habe ich tatsächlich hinbekommen): uberspace web backend set --apache /staticfiles ausgeführt
= die CSS, die mal funktioniert hat, geht gar nicht mehr
- wahrscheinlich muss man "collectstatic" in der ssh Konsole ausführen. Das bringt aber einen Fehler:
Bild
- ihr könnt das wahrscheinlich interpretieren?
2. Das mit dem Emailaccount scheint auch nicht zu funktionieren - zumindest bekomme ich keine Nachricht, wenn ich auf Passwort vergessen klicke. Ich habe jetzt das mit Filezilla und der ssh Konsole hinbekommen, wo aber finde ich die Fehlermeldungen in uberspace? Bei pythonanywhere ging das alles über die Webseite.
3. Ich habe bei uberspace meinen ganzen Rechentrainer Ordner hochgeladen, wahrscheinlich brauche ich das aber gar nicht alles. git und gitignore habe ich schon wieder gelöscht. Ich habe aber noch keine Anleitung gefunden, was wirklich benötigt wird. Was kann ich denn da noch löschen - oder beim nächsten Mal nicht hochladen:
Bild
4. Ich benutze jetzt Filezilla, weill ich dazu eine Anleitung gefunden habe. Ansonsten habe ich eigentlich den Total Commander benutzt. Mit dem gelingt mir aber keine Verbindung. Hat hier jemand Erfahrung damit?
5. Eigentlich will ich ja umziehen, weil ihr mir empfohlen habt, anstelle von SQLite lieber PostgreSQL benutzen soll - die Anleitung habe ich gefunden, einen Umzug traue ich mir aber noch nicht zu.
6. Und noch eins: Mein Rechentrainer hat ja schon Nutzer auf pythonanywhere, die muss ich umziehen. Ich habe aber schon das eine und andere zwischenzeitlich geändert und möchte nur die enstprechenden Tabellen umziehen. Ich kenne die Befehle "dumpdata" und "loaddata" - damit "loaddata" aber funktioniert, musste ich die Dateien aber immer mit UTF 8 neu kodieren - dann sind aber meine Umlaute und das ß weg. Mache ich da auch wieder was falsch?
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Update:
Punkt 1 habe ich gelöst (na ja, noch nicht perfekt, aber fast). Die Einstellung in settings.py habe ich geändertindem ich BASE_DIR gelöscht habe: STATIC_ROOT = /"staticfiles"
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Pitwheazle hat geschrieben: Samstag 4. März 2023, 13:47 3. Ich habe bei uberspace meinen ganzen Rechentrainer Ordner hochgeladen, wahrscheinlich brauche ich das aber gar nicht alles. git und gitignore habe ich schon wieder gelöscht. Ich habe aber noch keine Anleitung gefunden, was wirklich benötigt wird. Was kann ich denn da noch löschen - oder beim nächsten Mal nicht hochladen:
Bild
Alle Ordner auf den Screenshot, die mit einem Punkt beginnen, können für das Deployment gelöscht werden; das sind Überbleibsel von IDEs, mit denen das Projekt mal geöffnet wurde. Theoretisch kann man auch die __pycache__ Ordner löschen, sie kommen aber automatisch wieder, wenn du den Code regulär ausführst; von der Versionsverwaltung sollten sie dennoch ausgenommen werden. Ich verstehe nicht ganz, warum es 'static' und 'staticfiles'. Ggf. in der Config schauen, was da gesetzt ist und das andere entfernen. Falls das Venv das von deinem lokalen Rechner ist, kann das ebenfalls weg. Falls das für die Ausführung auf Uberspace gedacht ist, würde ich es auf eine höhere Verzeichnisebene schieben. Bei den restlichen Dateien musst du selbst mal schauen: Django erzeugt beim Anlegen neuer Projekte und Apps mit startapp/startproject eine Reihe von Dateien, von denen man nicht unbedingt alle braucht und die man dann theoretisch löschen kann; ich lasse sie oft aber trotzdem da. Hier musst du allerdings selbst entscheiden, was gelöscht werden kann und was nicht, da wir ja nicht wissen, was du verwendest.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Vielen Dank, sehr hilfreich. Das mit den "static" und "staticfiles" Ordner ist so entstanden: Mein Tutorium hatte empfohlen, die grundlegenden Templates und deren Styles in den Rootordner zu legen (so erinnere ich mich) das Template "layout", das ich überall (fast) einbinde ist dann im Ordner "templates" und die zugehörigen CSS Files im parallelen Ordner "static" - also musste ich für "collectstatic" einen neuen Ordner "staticfiles" anlegen (nach meinem Tutorium). Das ist etwas verwirrend - sollte ich das ändern?
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Wenn /statucfiles das Ziel von collectstatic ist, dann gehört es nicht in die Versionsverwaltun sondern wird auf dem Server durch collectstatuc gefüllt.
Es ist normal und auch gewollt, dass die settings.py auf dem Produktivsystem anders ist als auf dem Entwicklungskosten und Werte darin abweichen oder dynamisch gesetzt werden. Und dann kann das Verzeichnis STATIC_ROOT irgendwo ganz anders liegen.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

was man auch machen kann - den Tipp haben ich hier aus dem Forum: man nutzt whitenoise als Django-Erweiterung, dann kümmert sich Django bzw. Whitenoise auch auf dem Produktivsystem um das Ausliefern von statischen Inhalten. Hat damals für mich das Deployment vereinfacht.

Gruß, noisefloor
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

sparrow hat geschrieben: Sonntag 5. März 2023, 06:49 Wenn /statucfiles das Ziel von collectstatic ist, dann gehört es nicht in die Versionsverwaltun sondern wird auf dem Server durch collectstatuc gefüllt.
Es ist normal und auch gewollt, dass die settings.py auf dem Produktivsystem anders ist als auf dem Entwicklungskosten und Werte darin abweichen oder dynamisch gesetzt werden. Und dann kann das Verzeichnis STATIC_ROOT irgendwo ganz anders liegen.
Hat das auch irgendwelche Vorteile oder macht man das einfach so? Das würde heißen, ich speichere "staticfiles" nicht im Ordenr "Rechentrainer" sondern lege dafür einen anderen Ordner außerhalb an?
noisefloor hat geschrieben: Sonntag 5. März 2023, 10:20 was man auch machen kann - den Tipp haben ich hier aus dem Forum: man nutzt whitenoise als Django-Erweiterung, dann kümmert sich Django bzw. Whitenoise auch auf dem Produktivsystem um das Ausliefern von statischen Inhalten. Hat damals für mich das Deployment vereinfacht.
Der Begriff "whitenoise" ist mir schon begegnet, den muss ich mal nachlesen. Bisher sind mir da aber noch keine Probleme, außer dem Zuordnen von "staticfiles" noch keine Probleme begegnet - oder habe ich da was übersehen?
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Oh man! ich bekomme es nicht hin. Ich habe den Kolleginnen und Kollegen gesagt, ich würde heute das update hochladen - ich schaffe es mal wieder nicht und bräuchte nochmal Hilfe:
Die Änderungen waren vielfältig und betreffen vor allem die Datenbank. In pythonanywhere hat es nicht geklappt, ich habe die dateien einzeln hochgeladen, das funktioniert nicht und ich habe so gar geschafft, mein repository von github zu clonen, das will aber auch nicht, ich habe jetzt zwei Ordenr statt einem. Keine Ahnung, wie ich das handeln soll.
Aber eigentlich wollte ich ja auf uberspace wechseln und da fliegt mir wieder das mit den staticfiles um die Ohren. Das Projekt läuft, findet aber keinerlei CSS. Meine allgemeinen CSS Dateien liegen, wie beschrieben im Rootverzeichnis in "static" und die zu verschieben müsste ich einige Links in den Templates ändern. Also habe ich das erstmal gelassen und "collectstatic" in "staticfiles" ausgeführt (besser kann ich es halt noch nicht).
Ich habe in der Konsole "collectstatic" ausgeführt und sicherheithalber auch nochmals "uberspace web backend set --apache /staticfiles" ausgeführt (muss ich das jedes mal machen?).
Meine Einstellungen in sttings.py:

Code: Alles auswählen

STATIC_ROOT = "staticfiles"
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR /"static"] 
Die Konsole zeigt das:
Bild
... ob ich das jemals lerne?
Und in Filezilla werden die entsprechenden Dateien auch angezeigt.
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Die Frage ist, was passiert, wenn du da yes eingibst?
Dann steht da, ob Dateien kopiert wurden.

Aber er sagt ja schon, dass ein Verzeichnis nicht gefunden werden kann, das in STATICFILES_DIRS hinterlegt wurde.

STATICFILES_DIRS ist das Verzeichnis, in dem deine statischen Dateien liegen, die mit collectstatic nach STATIC_ROOT kopiert werden. Und zum Ausliefern an den Webbrowser wird aus STATICFILES_DIRS gelesen.

Es gibt also

Code: Alles auswählen

BASE_DIR /"static"
nicht.
Wie ist denn der Wert von BASE_DIR?
Antworten