firefox auf Server öffnen

Django, Flask, Bottle, WSGI, CGI…
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo zusammen,

Ich würde gerne in meiner Wohnung einen Server betreiben und mit diesem Fernsehsendungen streamen was auch schon funktioniert. Nun würde ich aber gerne mit djano den firefox auf dem server starten und mit Hilfe eines Beamers den Film an die wand provozieren.
Sprich ich drück einen Button auf meiner Website (client) und auf dem server öffnet sich der Firefox. Ist sowas möglich? Vielen Dank im voraus
BlackJack

@erdmulch: Ja das ist möglich.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Und wie?
BlackJack

@erdmulch: Grundsätzlich mit dem `subprocess`-Modul. Dann ist nur noch die Frage wie Django ausgeführt wird, also ob der Prozess aus dem man das startet dauerhaft läuft, oder nicht. Wenn nicht, oder wenn man sich auf das aktuelle Setup nicht verlassen kann oder will, müsste man wohl einen extra Server schreiben der auf Anweisung von der Webanwendung wartet und dann Firefox startet.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo nochmals,

ich habe nun versucht den Firefox auf dem Server auszuführen
siehe Code

Code: Alles auswählen

def firefox_streaming(request):
    subprocess.call(["firefox"])
    return render(request,'firefox_streaming/index.html')
auf der Konsole erscheint nun die Fehlermeldung:
Error: no display specified

Ich hab da auch schon gegoogelt, ich will nur, dass auf dem Server der Firefox geöffnet wird.
Ich will keinen Xserver oder ähnliches einrichten.

Kann mir jemand sagen was ich machen muss?

vielen Dank
BlackJack

@erdmulch: Wie soll denn der Firefox ohne X funktionieren? Firefox ist ein GUI-Programm, das braucht halt eine grafische Umgebung.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

ja, aber auf dem Server läuft ja bereits eine GUI. Da läuft Ubuntu 12.04
BlackJack

@erdmulch: Falls X tatsächlich läuft, dann fehlt wahrscheinlich die DISPLAY-Umgebungsvariable bei dem Prozess in dem die Webanwendung läuft.
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

@erdmulch:
Da du schriebst dass das Streaming breits funktioniert hast du mit Sicherheit schon ein X installiert, sonst würdest du nur bis zur Login prompt in der Shell kommen.
Das ganze sollte sich mit einem
export DISPLAY=:0 beheben lassen
versuch mal den subprocess.call anzupassen

Code: Alles auswählen

subprocess.call(["export DISPLAY=:0 ; firefox &"])
der ; ist dafür zuständig das firefox startet selbst wenn der export fehlschlägt. (was er allerdings nie tun dürfte)
das & am Ende sorgt dafür das firefox als eigenständiger Process startet und nicht stirbt wenn django beendet wird

Ist allerdings nicht zwingend erforderlich.
ggf brauchst du dann noch ein "killall firefox" button um firefox dann wieder los zu werden

Das ist allerdings auch eher quick & dirty - ggf sollte man das ganze noch etwas schön machen wenn es so funktioniert.
BlackJack

Um Umgebungsvariablen zu setzen für den Prozess den man da startet gibt es ein Schlüsselwortargument bei `Popen`.
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

Da sagst du was, in die docs gucken hilft ;)
https://docs.python.org/2/library/subpr ... cess.Popen

und wieder was gelernt, habs zwar noch nie gebraucht weil sich dafür bash meist eher anbietet, aber irgendwann brauch ich es vielleicht doch mal.
Antworten