Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Instalacja Pythona do Apache na własnym komputerze
Forum PHP.pl > Forum > Serwery WWW > Apache
Elektryk
Witam bo jestem nowy ale chętnie tu posiedzę dłużej...

Chciałbym się zacząć uczyć pisać strony pod Pythonem gdyż PHP zaczyna mnie nudzić. Mam Apacha 2.0.55 i Pythona 2,5. Zainstalowałem plik mod_python-3.3.1.win32-py2.5-Apache2.2.exe i serwer po restarcie nie chciał się uruchomić. Zauważyłem swój błąd i zainstalowałem mod_python-3.3.1.win32-py2.5-Apache2.0.exe i serwer wstał. Ponadto dopisałem do pliku konfiguracyjnego
Kod
LoadModule python_module modules/mod_python.so

oraz
Kod
AddHandler python-program .py
PythonHandler index

Stworzył w głównym folderze serwera plik python.py o treści
Kod
print "Mamusiu, jak tu pięknie!"

Niestety po uruchomieniu adresu http://localhost/python.py zostaję pochwalony komunikatem:
Cytat
Internal Server Error

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

Please contact the server administrator, elektryk91@xxx.com 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.

Apache/2.0.55 (Win32) mod_python/3.3.1 Python/2.5.4 PHP/5.1.4 Server at localhost Port 80


Moje pytanie brzmi: DLACZEGO KURWwww..., tzn...Czy ktoś wie gdzie leży wina i jak to naprawić? Z góry dziękuję za pomoc i pozdrawiam.
ucho
Cytat
More information about this error may be available in the server error log.
Wróżka jest na urlopie, czekamy na log apacha
Elektryk
Fakt, sorry. Wyczyściłęm logi, odświeżyłem strony i pokazało się takie coś:

Cytat
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] mod_python (pid=4016, interpreter='www.xxx.pl', phase='PythonHandler', handler='index'): Application error
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] ServerName: 'www.xxx.pl'
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] DocumentRoot: 'E:/'
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] URI: '/python.py'
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] Location: None
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] Directory: None
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] Filename: 'E:/python.py'
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] PathInfo: ''
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] Traceback (most recent call last):
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] File "C:\\Python25\\Lib\\site-packages\\mod_python\\importer.py", line 1537, in HandlerDispatch\n default=default_handler, arg=req, silent=hlist.silent)
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] File "C:\\Python25\\Lib\\site-packages\\mod_python\\importer.py", line 1202, in _process_target\n module = import_module(module_name, path=path)
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] File "C:\\Python25\\Lib\\site-packages\\mod_python\\importer.py", line 304, in import_module\n return __import__(module_name, {}, {}, ['*'])
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] ImportError: No module named index
[Fri Jul 24 13:26:11 2009] [error] [client 127.0.0.1] File does not exist: E:/favicon.ico


Obstawiam że wina leży w tych dwóch dopisanych do configa linijkach ale nie znam się na tym sad.gif


Refresh:

Dokopałem się w dokumentacji do notki, że zamiast linii:

Kod
AddHandler python-program .py
PythonHandler index


mam dać:

Kod
<Directory E:\>
AddHandler mod_python .py
PythonHandler python
PythonDebug On
</Directory>


Super! Działa! Kod w pliku python.py:

Kod
from mod_python import apache

def handler(req):
    req.content_type = 'text/plain'
    req.write("Hello aWorld!")
    return apache.OK


Jest pięknie wykonywany. Problem w tym, że ten kod jest także wykonywany gdy uruchamiam inny plik .py. W dokumentacji piszę, że tak będzie ale dalej pisze jak to rozwiać. Jest tam napisane o uchwytach wyższego poziomu ale dla mnie to czarna magia. Czy ktoś mógłby mi to objaśnić co zrobić by móc mieć wiele skryptów w pythonie na dysku?

Dokumentacja: http://www.modpython.org/live/current/doc-...st-testing.html
=> patrz pkt. 7
ziqzaq
Witam.
Próbowałeś zamiast tego:
Kod
<Directory E:\>
AddHandler mod_python .py
PythonHandler python #ta linijka dodaje tylko moduł python.py
PythonDebug On
</Directory>

dać:
Kod
<Directory E:\>
AddHandler mod_python .py
PythonHandler mod_python.publisher #ta powinna obsługiwać dynamiczne moduły wywoływane przez URL
PythonDebug On
</Directory>

Oczywiście wszystko z dokumentacji, więc możliwe że próbowałeś.
Elektryk
Niestety po tej operacji wszystkie pliki .py zwracają mi błąd 404 - Not found
Może winą jest to, że mam myślenie PHPowe? Tzn tworzę plik z kodem i uruchamiam w przeglądarce podając adres a może w Pythonie robi się to inaczej?
ziqzaq
Z ciekawości odpaliłem winde i...
1) Zwykła instalacja apache_2.2.11-win32-x86-openssl-0.9.8i.msi
2) Instalacja pythona. Tutaj użyłem ActivePython z wersją pythona 2.5.4.4
3) Instalacja mod_python w wersji 3.3.1.win32-py2.5-Apache2.2.exe (wykrył pythona, i tylko trzeba było pokazać ścieżkę do apache)
Wszystko poszło ok, więc zabrałem się za konfig apache (podaje tylko konfigurację pythona, nic więcej).
Kod
# ...
LoadModule    python_module modules/mod_python.so
# ...
<Directory "D:/sciezka_do_mojego_documentroot">
  AddHandler    python-program .py
  SetHandler    python-program
  PythonHandler    mod_python.publisher
  PythonDebug    on
  #reszta ustawien
</Directory>

Teraz test pythona (ten sam kod, pliki: index.py, say.py):
Kod
# -*- coding: utf8 -*-
thisFile = __file__
def index(req):
  return "Plik %s. To jest metoda index!" % thisFile
def say(req, txt="Aaaaa nie wazne..."):
  return u"Plik %s. To jest metoda say, która mówi: %s" % (thisFile, txt)

I teraz ulubiona przeglądarka i testy winksmiley.jpg
[index.py index()] http://localhost/
[index.py say()] http://localhost/say
[index.py say(txt="nasz tekst")] http://localhost/index.py/say?txt=dziala
[say.py index()] http://localhost/say.py
itd.
PS. Testowałem na winxp i wszystko powinno być ok, ale piszę z linucha, więc mogłem waląć jakąś literówkę. winksmiley.jpg
Pozdrawiam.
Elektryk
Nie wiem dlaczego...ale DZIAŁA!
Po zmianie pliku conf Apache wszystko chodzi jak w zegarku. Dzięki stary winksmiley.jpg
Mogę zacząć uczyć się Pythona...
Riklaunim
stosowanie czystego mod_pythona mija się z celem przy stronach WWW. Od tego jest Django i Pylons - dwa najlepsze i najpopularniejsze (głównie Django) frameworki webowe dla Pythona. Dodatkowa ich zaleta to wbudowane serwery deweloperskie przez co nie trzeba bawić się w konfiguracje Apache czy innych serwerów.
A sam Python to nie tylko aplikacje www winksmiley.jpg Jest to język ogólnego przeznaczenia, można w nim także pisać aplikacje desktopowe (np. w PyQt4), gry i podobne aplikacje (PyGame, Pyglet, PyIrr itd.) jak i różne skrypty i aplikacje systemowe, sieciowe winksmiley.jpg
Elektryk
Wiem, że Python to nie tylko aplikacje serwerowe ale tym lubię się zajmować. A te Django to coś jak jQuery do Pythona? Jeszcze nie zdecydowałem się z czego będę się uczyć więc możesz zaproponować jakieś ciekawe linki winksmiley.jpg
Riklaunim
Django to obecnie podstawowy dla Pythona i jeden z lepszych frameworków do aplikacji webowych. Strona projektu to www.djangoproject.com a po polsku np. w mojej Bibliotece www.python.rk.edu.pl
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.