2011-07-25 9 views
47

Mam doświadczenie w PHP, dotNet i jestem oczarowany przez Pythona. Chcę przenieść funkcje z PHP do Pythona krok po kroku, uruchamiając bity obok siebie. Podczas tej zmiany, która może zająć 2 lata, odkąd aplikacja jest ogromna, jestem zobowiązany do IIS. Mam 15-letnie doświadczenie w programowaniu stron internetowych, w tym niektóre prace C w module ISAPI na IIS, co jest pracą, której nie chcę już zanurzać.Python na IIS: jak?

Wygląda na to, że Python po prostu nie działa dobrze na IIS. Walczyłem z FastCGI (nie obsługiwane, tylko dla PHP) i PyIsapie (źle udokumentowane, nie mogłem go uruchomić i działało). W końcu mam go uruchomiony z biblioteką HeliconZoo, ALE:

Mój następny problem to: jak debugować/rozwijać witrynę? W PHP instalujesz debugger i kiedy masz problem w swojej witrynie, po prostu debugujesz go, ustawiasz punkt przerwania, przechodzisz przez kod, kontrolujesz zegarki i tym podobne. Wydaje mi się, że jest to najbardziej elementarny rodzaj pracy dla programisty lub narzędzia do rozwiązywania problemów. Kupiłem Wingide'a, który jest doskonałym narzędziem i debuggerem, ale nie można go podłączyć do instancji Pythona w procesie IIS z jakiegoś powodu, bez debugowania. Zauważyłem, że Helicon uruchamia Pythona z -O, więc nawet skompilowałem Pythona, aby całkowicie zignorować tę flagę, ale mój debugger (WingIDE) po prostu nie pojawi się.

Mogę skonfigurować witrynę PHP "Witam świecie" na IIS w pół godziny, w tym czas pobierania. Wydaje mi się, że spędziłem około 120 godzin lub dłużej, żeby to działało dla Pythona bezskutecznie. Kupiłem Programowanie Python i Learning Python który ma około 3000 stron. I szukałem go, dopóki nie upuściłem.

Myślę, że Python jest świetnym językiem, ale jestem bliski przerwania moich prób. Czy jest ktoś, kto może dać mi instrukcję krok po kroku, jak ustawić to na IIS7?

+2

Czy zauważony ISAPI-WSGI? http://code.google.com/p/isapi-wsgi/ (WSGI to nowoczesny sposób uruchamiania Pythona na serwerze internetowym) –

+1

PyISAPIe obsługuje również WSGI. Ma okropną dokumentację, ale w rzeczywistości jest prostsza w konfiguracji niż ISAPI-WSGI. – sayap

Odpowiedz

1

Podczas tworzenia aplikacji internetowej z Pythonem nie używa się IIS/Apache/etc. Te serwery internetowe są przeznaczone tylko do wdrożenia. Ramy takie jak Pyramid/Pylons/Django są dostarczane z wbudowanymi serwerami sieciowymi. W szczególności piramida ma doskonałą dokumentację, która powinna pomóc w rozpoczęciu pracy: http://docs.pylonsproject.org/docs/pyramid.html

Gdy dojdziesz do punktu wdrożenia, Linux + Apache byłby znacznie bezpieczniejszym wyborem niż Windows + IIS. Jeśli absolutnie musisz używać systemu Windows + IIS, nie używaj isapi-wsgi, ponieważ ma on problem z wydajnością fantomową: http://groups.google.com/group/isapi_wsgi-dev/browse_thread/thread/9fade6efca6c5b89

PyISAPIe działało na mnie wystarczająco dobrze, ale musiałem skompilować swój własny PyISAPIe.dll dla Pythona 2.7 .

+1

Dzięki. Myślę, że kompilowanie PyISAPe.dll dla Pythona 2.7 to mój kolejny krok (może powinien być gdzieś hostowany do pobrania). Moja aplikacja jest na tyle złożona, że ​​musi interweniować na serwerze na żywo, ponieważ odtworzenie problemu jest prawie niemożliwe (500 gb danych, użytkownicy uruchamiają ścieżki programu, które są prawie ustalane indywidualnie). Widziałem wiele przypadków, w których ludzie rozwijają się na swoich bezpiecznych laptopach, wdrażają, a następnie rzeczy robią nieoczekiwane rzeczy. – Robert

+6

Pytanie, jakie alternatywy zastosować, to używać IIS – Mastro

114

Po prostu zrobiłem to w 5 minut.

  1. Ubezpiecz się, że masz IIS. uruchom: %windir%\system32\OptionalFeatures.exe. Lub za pomocą spiczastego kliknięcia: Start ... Panel sterowania ... Programy i funkcje ... (a następnie po lewej stronie) Włączanie i wyłączanie funkcji systemu Windows. Upewnij się, że CGI jest zainstalowany, pod węzłem IIS.

    enter image description here

  2. Download Python for Windows z python.org. Złapałem Python2.7. Upewnij się, że otrzymałeś wersję x64, jeśli masz system Windows w wersji x64.

  3. Rozpakuj i zainstaluj ten python MSI. Wybierz wartość domyślną, która umieszcza pytona w c:\Python27

  4. Utwórz katalog, w którym będą przechowywane skrypty python "programistyczne".Np., c:\dev\python

  5. Ustawia uprawnienia do plików w katalogu c:\dev\python, aby umożliwić IIS odczyt i wykonanie. Czy to poprzez uruchomienie tych dwóch icacls.exe polecenia z linii komend:

    cd \dev\python 
    icacls . /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)" 
    icacls . /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)" 
    
  6. Otwórz Menedżera IIS. Uruchom %windir%\system32\inetsrv\iis.msc lub zrób to za pośrednictwem panelu sterowania: Start ... Panel sterowania ... Narzędzia administracyjne ... Menedżer internetowych usług informacyjnych (IIS). Stwórz nową aplikację. Określ ścieżkę wirtualną jako /py i ścieżkę fizyczną jako c:\dev\python.

    enter image description here

    enter image description here

  7. ramach tej aplikacji IIS, dodać mapę skryptu dla *.py i mapować go c:\python27\python.exe %s %s

    enter image description here

    enter image description here

    enter image description here

  8. stworzyć "HelloWorld.py" plik c:\dev\python z tego, ponieważ treść:

    print('Content-Type: text/plain') 
    print('') 
    print('Hello, world!') 
    
  9. powołać http://localhost/py/helloworld.py

+4

Zrobiłeś to wszystko w 5 minut? –

+15

To nie potrwa długo. Sztuką jest wiedzieć, co robić. – Cheeso

+0

to naprawdę 5 minut, dziękuję! – niltoid

1

tylko upewnić się, że ścieżka do katalogu, trzymając CGI Skrypty nie mają spacji ani &.

próbowałem wiele rzeczy przez wiele dni i nic nie działało potem zmieniłem ścieżkę i to działało

+1

Czy jesteś pewien, że Twoim problemem były nie tylko prawa dostępu? –

+0

Tak, był to problem z postaciami specjalnymi w katalogu lub może całkowita długość ścieżki, ale nie prawa dostępu, ponieważ wypróbowałem wszystkie oczywiste rozwiązania – YEH

Powiązane problemy