Apache Einstellungen für cgi und Python

Status
Für weitere Antworten geschlossen.

comco5

Benutzer
Mitglied seit
25. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
hallo,
ich nutze Synolgy DS 112 und 412+,
mein Apache Server läuft, *.html Dateien werden angezeigt. Paket: Python 2.7 habe ich installiert und Pythone Programme kann ich über Terminal ausführen.


Aber wenn ich im Browser eine index3.cgi Datei aufrufe, bekomme ich die Meldung: 'Es tut uns Leid, die von Ihnen gesuchte Seite konnte nicht gefunden werden.'
Meine index3.cgi Datei ist so aufgebaut:

#! /usr/bin/python

print 'Content-type: text/html'

# kommentar
print '<html>'
print '<body>'
print '<h1>Hallo Freitag *)</h1>'
print '</body>'
print '</html>'

Ich glaube, dass ich in den Einstellungen auf dem Apache Server etwas ändern muss, hat vieleicht jemand eine Idee ? :eek:
Vielen Dank.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
du wirst dem Apache noch beibringen müssen wie er py Files zu handeln hat z.B. so was in der Art in der Conf des Apache
Code:
<Directory /path/to/sample.py />   
  Options +ExecCGI   
  AddHandler cgi-script .py   
  Order allow,deny   
  Allow from all 
</Directory>
 

comco5

Benutzer
Mitglied seit
25. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
hi,
danke für die schnelle antwort, kann damit aber leider nicht viel anfangen.
kannst du mir das bitte ausführlicher erklären, bin eine anfängerin. :rolleyes:

in der 1. zeile der *.cgi datei:
'#! /usr/bin/python'
sage ich schon womit die Datei ausgeführt werden soll.
 

yours-truly

Benutzer
Mitglied seit
10. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Er meint sicherlich, dass in der Konfiguration des Apache erst mitgeteilt werden muss, was erlaubt sein soll.

Die config Dateien finden sich hier
/usr/syno/apache/conf/httpd.conf-sys
/usr/syno/apache/conf/httpd.conf-user

Ich vermute man soll die httpd.conf-user nutzen.

Ich versuche gerade etwas ganz aehnliches, habe aber auch Probleme dem Apache etwas neues beizubringen.
Ich kann zwar nach einem restart des Apaches /usr/syno/etc/rc.d/S97apache-sys.sh restart
Fehlermeldungen provozieren, schaff es aber nicht auch nur eine Einstellung sinnvoll zu veraendern.

Prinzipiell alles schon zig mal gemacht, aber auf der Diskstation bringt mich das grad echt zur Verzweifelung :D
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Er meint sicherlich, dass in der Konfiguration des Apache erst mitgeteilt werden muss, was erlaubt sein soll.
genau :) Es wäre nicht gut wenn man einfach Scripte auf einen Webserver schieben könnte und die dann ohne Konfiguration des Servers ausgeführt werden würden. Da muss immer erst auch die Serverkonfiguration angepasst werden
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Er meint sicherlich, dass in der Konfiguration des Apache erst mitgeteilt werden muss, was erlaubt sein soll.

Die config Dateien finden sich hier
/usr/syno/apache/conf/httpd.conf-sys
/usr/syno/apache/conf/httpd.conf-user

Ich vermute man soll die httpd.conf-user nutzen.

Bevor dieser Post nur Verwirrung stiftet.

Auf der DS gibt es zwei Apache den sys- und den user-Apache.

1.) Der sys ist für die Oberfläche zur Verwaltung der DS sprich dem DSM. Hier würde ich nicht unbedingt rumbasteln. Das Startscript ist /usr/syno/etc/rc.d/S97apache-sys.sh und das config-file = /usr/syno/apache/conf/httpd.conf-sys

2.) Der user ist für die Webstation/Photostation/SS zuständig. Das Startscript ist /usr/syno/etc/rc.d/S97apache-user.sh und das config-file = /usr/syno/apache/conf/httpd.conf-user. Das wäre wohl der richtige Ort um Anpassungen vorzunehmen.

Ich versuche gerade etwas ganz aehnliches, habe aber auch Probleme dem Apache etwas neues beizubringen.
Ich kann zwar nach einem restart des Apaches /usr/syno/etc/rc.d/S97apache-sys.sh restart
Fehlermeldungen provozieren, schaff es aber nicht auch nur eine Einstellung sinnvoll zu veraendern.

Prinzipiell alles schon zig mal gemacht, aber auf der Diskstation bringt mich das grad echt zur Verzweifelung :D

Und das ist ein Muster ohne Wert. Du sagst weder was Du versuchst noch welche Fehlermeldungen Du erhältst. Wie soll Dir so jemand helfen?

Gruß Frank
 

yours-truly

Benutzer
Mitglied seit
10. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
/usr/syno/etc/rc.d/S97apache-user.sh *kopftisch*

Da kann ich ja lange an den config Dateien herumbasteln.
Wenn ich die ganze Zeit den falschen Prozess neue lade.

Ich hab es andauernd mit
/usr/syno/etc/rc.d/S97apache-sys.sh
probiert.


Danke schön. Genau das hat mich die gesamte Zeit beschäftigt.
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hatte ich irgendwie schon vermutet. ;)

Gruß Frank
 

comco5

Benutzer
Mitglied seit
25. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
hallo frank,
danke für deine erklärung, ich wusste nicht genau, ob httpd.conf-user die richtige datei ist.
ich habe mir das paket media-wiki installiert und in 'file station' wurde automatisch ein ordner 'web' angelegt.
hier werden alle meine *.html und *.py dateien gespeichert.
meine veränderung in ..conf-user:
<Directory /volume1/web/sample.py />
Options +ExecCGI
AddHandler cgi-script .py
Order allow,deny
Allow from all
</Directory>
beim restart von ..S97apache-user.sh bekomme ich folgende meldung:
'Multiple <Directory> arguments not (yet) supported.'
weisst du vielleicht was ich falsch mache ?
gruss :)
mira.
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Ich kenne das paket media-wiki leider nicht. Dem entsprechend kenne ich auch die Pfade nicht. Auf jeden Fall kannst Du in der <Directory> Directive den Pfad angeben wo sich deine Files befinden und ausgeführt werden sollen. So wie deine Angabe aussieht gibst Du hier als Ziel "/volume1/web/sample.py" an. Das war von jahlives nur als Hinweis gedacht für den Pfad zu deinen *.py Files. Zusätzlich hat sich leider noch ein Slash versehentlich eingeschlichen ;)

Also sollten deine Files in /volume1/web liegen so wäre die erste Zeile folgend korrekt:

Rich (BBCode):
<Directory /volume1/web>

Gruß Frank
 

comco5

Benutzer
Mitglied seit
25. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
hi,
danke, restart hat jetzt funktioniert, aber im browser wird immer noch eine *.py datei als textdatei interpretiert.
muss vielleicht doch die httpd.conf-sys verändert werden, weil 'filestation' zum root apache (port 5000) gehört?
gruss
mira
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo,
ehrlich gesagt kann ich Dir im Augenblick nicht ganz folgen was jetzt die FileStation damit zu tun hat. Eigentlich sollte es, sofern beispielsweise eine "test.py" im Verzeichnis "/volume1/web" vorhanden ist, durch den Aufruf im Browser von

http://IP_oder_Name_deiner_DS/test.py

funktionieren.

Gruß Frank
 

comco5

Benutzer
Mitglied seit
25. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
hallo,
'http://IP/sample.py'
soll funktionieren, aber funktioniert nicht. es wird programmcode angezeigt. das mit der filestation war nur eine idee, weil sonst habe ich überhaupt keine ideen mehr was ich noch versuchen könnte ?! :mad:
gruss
mira.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
in deinem Eingangspost ist mir aufgefallen dass du ein Leerzeichen zwischen #! und dem Pfad zum Interpreter hast. Das sollte nicht sein. zudem bist du sicher dass der Interpreter unter dem Pfad auch wirklich liegt? Hast du das geprüft?
 

comco5

Benutzer
Mitglied seit
25. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
ja,
habe auch ohne leerzeichen ausprobiert.
im puttytel beim befehl:
SERVERNAME> ls -al /usr/bin/python*
antwort:
lrwxrwxrwx 1 root root /usr/bin/python -> /usr/local/bin/python2.7
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Vieleicht hilft Dir das weiter.

Rich (BBCode):
ScriptAlias / /volume1/web/

<Directory /volume1/web>
	Options +ExecCGI   
	AddHandler cgi-script .py   
	Order allow,deny   
	Allow from all 
</Directory>

cgi-Scripte werden dann in /volume1/web ausgeführt. Auch auf das setzen des Execute-Flag achten (chmod).

Gruß Frank
 

comco5

Benutzer
Mitglied seit
25. Feb 2013
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
guten morgen,

danke für die infos. :)
nach der veränderung mit: 'ScriptAlias ..'
1.
kommt nach der eingabe im browser: 'http://IP/sample.py' folgendes:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.2.22 (Unix) PHP/5.3.15 Server at 192.168.10.20 Port 80


2.
nach eingabe im browser: 'http://IP'

Forbidden

You don't have permission to access / on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.2.22 (Unix) PHP/5.3.15 Server at 192.168.10.20 Port 80


hier wurde vorher automatisch 'index.html' angezeigt
gruss,
mira.
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo Mira,

ja war ein bischen brutal das DocumentRoot zum cgi-Verzeichnis zu machen. Das cgi-Verzeichnis liegt normalerweise ausserhalb des DocumentRoot. Versuchs damit:

Rich (BBCode):
ScriptAlias /cgi-bin/ /volume1/web/

<Directory /volume1/web>
	Options +ExecCGI   
	AddHandler cgi-script .py   
	Order allow,deny   
	Allow from all 
</Directory>

Aufruf der cgi's dann mit http://ip_oder_name/cgi-bin/test.py


Gruß Frank
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hi Mira,
sorry lag an mir. Ich war nebenbei noch an einer anderen Sache dran und dann hunzt man manchmal die Sachen so hin. Du wolltest das ja gar nicht in einem separaten cgi-Verzeichnis. Also dann nochmal.

Zuerst in der Definition für das mime_modul folgende Zeilen suchen und ersetzen

Rich (BBCode):
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    AddHandler cgi-script .cgi .py

Und hier die Directive für das Verzeichnis

Rich (BBCode):
<Directory /volume1/web>
 	Options ExecCGI
 	AllowOverride None
 	Order allow,deny
 	Allow from all
 	AddHandler cgi-script .py
</Directory>

ScriptAlias brauchst Du dann gar nicht. Und alle Angaben wie immer ohne Gewähr ;)

Gruß Frank
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat