Jak używać Pythona jako języka serwera z perspektywy PHP

11

Wiem tylko programowanie po stronie serwera za pomocą PHP. Do mnie piszę coś, index.phpdzwonię http://localhost/index.phpi widzę wyniki skryptu PHP. Korzystam z CakePHP i rozumiem, że jest coś, co można zrobić z przepisywaniem adresów URL, ale moim zdaniem istnieje relacja jeden do jednego między adresami URL i plikami PHP na serwerze.

Teraz dużo robię z Pythonem, ale wykorzystuje tylko wiersz poleceń. Chciałbym użyć Pythona zamiast PHP do mojego następnego projektu. Do tej pory powiedziano mi mod_python, że muszę użyć frameworka, takiego jak Pylons lub Twisted, a nawet Django, aby uzyskać jakiekolwiek wyjście. Inni powiedzieli, że muszę tylko print()napisać nagłówek HTTP, a następnie skrypt wyświetli się tak, jakbym był używany z PHP.

Chciałbym napisać coś, co w zasadzie zajmuje tylko listę katalogów i czyni ją ładną, dzięki czemu mogę uzyskać dostęp do wielu plików PDF z przeglądarki mobilnej. Wiem, jak to zrobić w PHP, wiem, jak utworzyć skrypt w języku Python, który generowałby HTML. Po prostu nie wiem, jak wykonać ten skrypt, kiedy go otwieram http://localhost/pdfcentral/.

Jak musiałbym skonfigurować mój serwer? Działa na Ubuntu 10.04.

Martin Ueding
źródło
Istnieje wiele odmian, które możesz wziąć, ale najprostszym sposobem byłoby umieszczenie skryptu Python w cgi-binkatalogu, aby serwer wiedział, że go wykonać, i opcjonalnie dokonanie przekierowania do niego pliku PHP, jeśli chcesz użyć innej ścieżki. Jeśli chodzi o sam skrypt Python, możesz wykonać następującą procedurę: forrestbao.blogspot.com/2009/08/…
ionFish

Odpowiedzi:

9

mod_pythonnie jest już aktywnie rozwijany. Chociaż Apache twierdzi, że to nie znaczy, że projekt jest martwy -

Obecnie mod_python nie jest w fazie rozwoju. Nie oznacza to, że jest „martwy”, jak twierdzą niektórzy ludzie. Oznacza to, że kod i projekt są wystarczająco dojrzałe, gdy do ich utrzymania potrzeba bardzo niewiele.

Ale sugeruje się , aby zamiast tego używać mod_wsgi . To znaczy, jeśli chcesz zbudować wszystko od zera. Sugeruję, że nie powinieneś, chyba że używasz tego jako ćwiczenia edukacyjnego.

Lepiej byłoby użyć frameworka do ciężkiego podnoszenia - obsługi routingu, żądań i tym podobnych

Pełna lista frameworków internetowych Pythona jest dostępna tutaj , ale niektóre z nich są popularne -

  • Django - jest uważany za odpowiednik Ruby on Rails w Pythonie i jest dość ciężki, więc nie byłby odpowiedni do tego, czego potrzebujesz.
  • Flask - Jest to mikrosprawka. Oznacza to, że jest mały, nie przeszkadza i jest idealny do mniejszych projektów, które nie wymagają dużej ilości baterii.
  • Piramida - jest zbudowana przez tę samą grupę ludzi, którzy zbudowali Pylony, co nie jest zepsute. Jest gdzieś pomiędzy Flask i Django - może być użyty jako zamiennik dla obu.
  • Butelka - jest to kolejna mikroukład i jest jeszcze bardziej minimalna niż Flask. Jest tylko jednym plikiem i nie ma żadnych zależności (jeśli używasz wbudowanego silnika szablonów) innych niż standardowa biblioteka, więc byłoby dobrze pasować do tego, co chcesz.
  • Web.py - niegdyś zasilany Reddit (który został przepisany nowymi narzędziami po przejęciu).
  • webapp2 - Jest to standardowa platforma dla Google App Engine (chociaż można tam użyć innych platform).

Spośród nich polecam Flask, ponieważ go użyłem i nie mam żadnych skarg. Ma również wiele rozszerzeń, które znacznie ułatwiłyby życie, jeśli chcesz mieć więcej funkcji na swojej stronie.

Potrzebny byłby również silnik szablonów - do złożenia html. Jinja2 , zbudowana przez tych samych facetów, którzy tworzą Flask, i jest dość szeroko stosowana. Jednak przy phptworzeniu stron internetowych korzystanie z Mako może być bardziej naturalne, co jest również dość popularne.

Oto bardziej wyczerpujące FAQ na temat programowania w języku Python - Python FAQ: Webdev .

Elssar
źródło
1
Mam teraz mały projekt Flask działający z FastCGI i lighttpd na maszynie testowej, powinien on również działać na serwerze. Dziękuję Ci bardzo!
Martin Ueding
1

Pytanie to było trochę mylące i jeśli mam rację, zakładam, że Twoim głównym celem jest dostarczanie plików do telefonu komórkowego przy użyciu ładnej stylizacji?

Jeśli to prawda, nie powinieneś iść przez tak wiele pętli, aby coś skonfigurować.

Apache2 pozwala edytować główny katalog z listą plików, dzięki czemu możesz dowolnie go stylizować.

Istnieje również wiele dostępnych gotowych głównych motywów online, wystarczy wyszukać w Google Theme for Listing katalogu Apache2, dzięki czemu reagowanie nie będzie trudne.

Oto kilka informacji, jak zmienić domyślny wygląd Apache

Oto kilka gotowych szablonów do sprawdzenia, jest o wiele więcej ....

Styl Repos

Recurser

Wskaźniki

Simon Hayter
źródło
Wydaje się, że dość dobrze rozwiązuje to początkowy problem. Pomyślałem, że mogę to wykorzystać jako pierwszy projekt do przejścia z PHP do Pythona. Jeśli projekt Python się zatrzyma, przyjrzę się temu. Dzięki!
Martin Ueding
Nie ma za co;)
Simon Hayter