Pytanie Jak skonfigurować skrypty w języku Python do pracy w Apache 2.0?


Próbowałem wykonać kilka samouczków googled dotyczących konfigurowania mod_python, ale nie udało się za każdym razem. Czy masz dobre, krok po kroku, solidne howto?

Moim dev boxem jest OS X, produkcja - Centos.


18
2017-08-07 18:24


pochodzenie




Odpowiedzi:


Istnieją dwa główne sposoby uruchamiania Pythona na Apache. Najprostszym byłoby użycie CGI i napisanie zwykłych skryptów Pythona, podczas gdy drugi używa struktury internetowej, takiej jak Django lub Pylons.

Korzystanie z CGI jest proste. Upewnij się, że plik konfiguracyjny Apache ma konfigurację cgi-bin. Jeśli nie, postępuj zgodnie z ich dokumentacją (http://httpd.apache.org/docs/2.0/howto/cgi.html). W tym momencie wystarczy umieścić skrypty w języku Python w katalogu cgi-bin, a standardowe wyjście stanie się odpowiedzią HTTP. Więcej informacji znajdziesz w dokumentacji Pythona (https://docs.python.org/library/cgi.html).

Jeśli chcesz korzystać z frameworka WWW, musisz skonfigurować mod_python lub FastCGI. Te kroki zależą od tego, z której struktury chcesz korzystać. Django zapewnia jasne instrukcje, jak skonfigurować mod_python i Django z Apache (http://www.djangoproject.com/documentation/modpython/)


12
2017-08-07 18:40



Informacje na temat mod_python zostały usunięte z witryny projektu Django, ponieważ teraz zalecają użycie mod_wsgi zamiast - docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi - Will Abson


Tak, mod_python jest dość kłopotliwy w konfiguracji. Oto jak to zrobiłem.

W pliku httpd.conf:

LoadModule python_module modules/mod_python.so

<Directory "/serverbase/htdocs/myapp">
  AddHandler mod_python .py
  PythonHandler myapp
  PythonDebug On

oraz w katalogu aplikacji:

$ /serverbase/htdocs/myapp$ ls -l
total 16
-r-xr-xr-x 1 root sys        6484 May 21 15:54 myapp.py

Powtórz konfigurację dla każdego programu Pythona, który chcesz uruchomić pod mod_python.


8
2017-08-07 19:02





Czy używasz Pythona w systemie UNIX lub Windows?

Alternatywą dla mod_python i FastCGI jest mod_wsgi. Możesz dowiedzieć się więcej na stronie modwsgi

Zbudowałem i zainstalowałem to na Solarisie bez problemów. Wcześniej próbowałem mod_python, ale wystąpiły problemy z bibliotekami współdzielonymi w ramach kompilacji. Tam są dobra dokumentacja instalacji dostępny.


5
2017-08-07 19:05





Problem dla mnie nie był w Apache skonfigurowany, ale w zrozumieniu, w jaki sposób mod_apache faktycznie używa plików .py. Wyrażenia na poziomie modułu (w tym te w języku if __name__=='__main__' sekcja) nie wykonywany - założyłem, że wyjście standardowe z uruchamiania skryptu w linii poleceń będzie tym, co serwer wyświetli, ale tak nie działa.

Zamiast tego napisałem funkcję o nazwie moduł na poziomie index(), i zwrócił jako ciąg HTML strony. Możliwe jest również posiadanie innych funkcji na poziomie modułu (np. otherFunction()), do których można uzyskać dostęp jako kolejne segmenty w URI (np. testScript/otherFunction dla pliku testScript.py.)

Oczywiście ma to więcej sensu niż moja oryginalna koncepcja stdout. Lepsza zdolność do używania języka Python jako języka skryptowego, a nie do wielkodusznego języka znaczników.


0
2018-02-09 20:05