2012-04-12 13 views
11

Próbuję zacząć od Pythona, ale nie mogę poprawnie skonfigurować mojego serwera dla localhost (używając Ampps). Python działa poprawnie przez IDLE i wiersz poleceń, jednak kiedy otworzę plik w przeglądarce, kod jest wyświetlany i nie jest uruchamiany.. Plik z kodem w przeglądarce zamiast z uruchomieniem

Podążyłem za tutorialem http://www.imladris.com/Scripts/PythonForWindows.html, aby uzyskać konfigurację cgi, ale to nie działa.

Oto kod dla mojego programu "cześć świat", jeśli to robi jakąkolwiek różnicę.

#!/usr/bin/env python 
# -*#!/usr/bin/python 

print "Content-type:text/html\r\n\r\n" 
print '<html>' 
print '<head>' 
print '<title>Hello Word - First CGI Program</title>' 
print '</head>' 
print '<body>' 
print '<h2>Hello Word! This is my first CGI program</h2>' 
print '</body>' 
print '</html>' 

Wszelkie sugestie?

+0

Czy wykonany plik wykonywalny? Czy na serwerze włączono skrypty cgi? –

+2

Po uruchomieniu tego działania - sprawdź składnię Pythona dla łańcuchów wielowierszowych za pomocą potrójnych cudzysłowów, takich jak "" "" coś "" "" – jsbueno

+0

@JoachimPileborg Wierzę, że włączyłem skrypty cgi na serwerze, ale nie jestem pewien co do robienia plik wykonywalny. Kiedy przeglądam plik (ikona samego pliku, a nie kodu), ma on logo Pythona, więc nie jestem pewien, czy to znaczy, że jest to plik wykonywalny. – user1104854

Odpowiedz

6

Twój serwer internetowy traktuje twój kod Pythona jako plik statyczny, a nie plik wykonywalny. Chodzi o to, że chcesz, aby Apache uruchamiał pythona i wysyłał stdout do przeglądarki użytkownika.

Nie jestem zaznajomiony z Ampps, ale podstawowy przepływ Apache do uzyskania tej konfiguracji jest podobny do tego.

  1. Edit linia Opcje z httpd.conf zawierać ExecCGI
  2. Zarejestruj plik Pythona w httpd.conf jako przewodnika cgi dodając następujący wiersz:
    AddHandler .py
  3. Restart Apache
  4. Upewnij się, że twoja linia shebang (bit pytka #!/Usr/bin/env na górze) faktycznie wskazuje ścieżkę do pliku wykonywalnego Pythona. Na python2.6 żyjącego na C :, to może przeczytać:
    #!\Python26\python
  5. Jeśli skrypty muszą być przenośne, zamiast modyfikowania linii shebang dodać linię ScriptInterpreterSource registry do httpd.conf i upewnij się, że okna otwiera * Domyślnie .py pliki z Python.exe. Można to sprawdzić, klikając dwukrotnie skrypt. Jeśli się nie uruchomi, kliknij go prawym przyciskiem myszy, wybierz opcję open-with, a następnie inną, a następnie przejdź do pliku python.exe. Pamiętaj, aby zaznaczyć pole "zawsze używaj tego programu do otwierania plików tego typu". Istnieje artykuł bazy wiedzy Microsoft Knowledge Base na temat tego here.

Wreszcie, mod_wsgi lub FastCGI jest preferowaną metodą uzyskiwania Apache'a do uruchamiania Pythona, z wcześniejszą preferencją wstrzymywania ruchu (dziesiątki tysięcy żądań dziennie). Radziłbym także zajrzeć do struktur internetowych, takich jak web.py (bardzo lekki) lub django (większa waga, ale oszczędza mnóstwo czasu, jeśli zbierasz dane użytkownika lub kontaktujesz się z bazą danych).

+0

Ampps był pierwszym pakietem, jaki widziałem z wbudowanym pytonem, więc wybrałem go. Czy są jakieś inne, które polecasz? Używam xampp kiedy programuję z PHP, nie jestem pewien czy to obsługuje. – user1104854

+0

Nie zdawałem sobie sprawy, że "Ampps" było smakiem okien Apache - w większości jestem facetem z Linuksa i używam głównie Lighttpd. Zobacz edytowaną odpowiedź, proszę. –

+1

Co więcej, lepiej użyć mod-wsgi niż cgi. Będę edytować odpowiedź jeszcze raz, aby to odzwierciedlić i dodać linki. –