2013-04-09 11 views
5

Attualmente ho un server Web Windows 2008 con iis 7.5. Ho creato con successo PyISAPIe 1.1.0 per Python 2.7.4. Django è schierato e funziona, veloce. Ma so che PyISAPIe è in qualche modo vecchio stile, ultima versione rilasciata nel 2010. Scopro che ci sono Helicon Zoo (WebPI pacchetto in esecuzione WSGI bridge) e DjangoWindowsTools (distribuzione automatizzata con Fascgi). Quindi vorrei chiedere la tua raccomandazione: quale soluzione è la migliore per Django/Python su IIS?Django su IIS: PyISAPIe o FastCGI o WSGI o Helicon Zoo o DjangoWindowsTools

risposta

4

Vedo che hai trovato una soluzione. Ti piacerebbe sapere che Helicon Zoo supporta anche il protocollo FastCGI per il funzionamento (non relativo al modulo FCGI di Microsoft). Supporta inoltre il protocollo TCP (come Nginx su Linux), utile per comet e supporto per polling lungo. Inoltre offre molte funzionalità aggiuntive che il modulo Microsoft FCGI non ha, come il bilanciamento automatico del carico e il ridimensionamento delle applicazioni, la protezione da attacchi POST lenti e molti altri. Con Web Platform Installer e Helicon Zoo potrei ridurre il tuo file bat iniziale. Si prega di leggere:

rem Default settings 
SET SITE_NAME=Django Site 
SET SITE_PHYSIC_PATH=C:\intepub\%SITE_NAME% 
SET SITE_URL=* 
SET SITE_PORT=8000 
SET SITE_PROTOCOL=http 

SET SITE_NAME="Enter site name (%SITE_NAME%):" %=% 
SET /p SITE_PHYSIC_PATH="Enter project directory, which contain manage.py (%SITE_PHYSIC_PATH%): " %=% 
SET /p SITE_PROTOCOL="Enter http|https for protocol (%SITE_PROTOCOL%): " %=% 

SET /p SITE_URL="Enter site url (%SITE_URL%):" %=% 
IF "%SITE_URL%"=="localhost" (
    SET SITE_URL="*" 
) 


ECHO. 
ECHO Install IIS, Python, Helicon Zoo and other requirements if needed 
WebpiCmd.exe /Install /Products:PythonModules /feeds:http://www.helicontech.com/zoo/feed/ /AcceptEula 

ECHO. 
ECHO Create IIS Site: %SITE_NAME% 
md %SITE_PHYSIC_PATH% 
%windir%\system32\inetsrv\appcmd add site /name:"%SITE_NAME%" /physicalPath:"%SITE_PHYSIC_PATH%" /bindings:%SITE_PROTOCOL%://%SITE_URL%:%SITE_PORT% 
%windir%\system32\inetsrv\appcmd start site /site.name:"%SITE_NAME%" 


ECHO. 
ECHO Create Django application 
echo ApplicationPath[@]%SITE_NAME%/>DjangoProject.app 
WebpiCmd.exe /Install /Application:[email protected] /feeds:http://www.helicontech.com/zoo/feed/ /AcceptEula 

Questo codice può anche installare IIS, Python, Zoo Helicon e tutti gli altri requisiti su un sistema pulito completo, se necessario. È necessario solo il programma di installazione della piattaforma Web, che è possibile copiare da un altro sistema su cui è installato solitamente in C: \ Programmi \ Microsoft \ Web Platform Installer Nessuna installazione richiesta.

+0

Grazie per aver condiviso –

3

Bene, dopo un'altra ricerca ho scoperto che il server Windows Azure utilizza FastCGI e l'installazione è piuttosto semplice. Non più download, build ... Potete vedere qui http://www.windowsazure.com/en-us/develop/python/tutorials/web-app-with-django/

Ho creato un programma di installazione automatica. Funziona su Windows seerver 2008 r2 con iOS 7.5. Basta Grap wfastcgi.py da qui http://pytools.codeplex.com/releases

@ECHO OFF 
rem Check for IIS setup 
IF NOT EXIST %windir%\system32\inetsrv\appcmd.exe (
    ECHO Please have IIS 7.5 install first 
    GOTO END 
) 

rem Default settings 
SET PYTHON_EXE="C:\Python27\python.exe" 
SET PROJECT_NAME="DjangoProject" 
SET SITE_NAME="%PROJECT_NAME%" 
SET SITE_PHYSIC_PATH=%~dp0 
SET SITE_URL="*" 
SET SITE_PORT="8000" 
SET SITE_PROTOCOL="http" 
SET DJANGO_SETTING="%PROJECT_NAME%.settings" 

rem Gathering information 
ECHO IIS 7.5 Django Setup 
ECHO Author: James [email protected] 
ECHO =========================================== 
ECHO. 

SET /p PYTHON_EXE="Enter python.exe path (%PYTHON_EXE%):" %=% 
SET /p PROJECT_NAME="Enter project name (%PROJECT_NAME%):" %=% 
SET SITE_NAME="%PROJECT_NAME%" 
SET DJANGO_SETTING="%PROJECT_NAME%.settings" 
SET /p SITE_PHYSIC_PATH="Enter project directory, which contain manage.py (%SITE_PHYSIC_PATH%): " %=% 
SET /p DJANGO_SETTING="Django settings module (%DJANGO_SETTING%):" %=% 
SET /p SITE_NAME="Enter IIS site name (%PROJECT_NAME%):" %=% 
SET /p SITE_PROTOCOL="Enter http|https for protocol (%SITE_PROTOCOL%): " %=% 

SET /p SITE_URL="Enter site url (%SITE_URL%):" %=% 
IF "%SITE_URL%"=="localhost" (
    SET SITE_URL="*" 
) 


SET /p SITE_PORT="Enter port (%SITE_PORT%):" %=% 

SET WFCGI_FILE="%SITE_PHYSIC_PATH%\wfastcgi.py" 
IF NOT EXIST %WFCGI_FILE% (
    SET /p WFCGI_FILE="Please enter full path for wfastcgi.py: " %=% 
) 

ECHO ===================================== 
ECHO Installing 
ECHO Install FASTCGI for IIS. Please wait. 
start /wait %windir%\System32\PkgMgr.exe /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;IIS-ManagementConsole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI;IIS-CGI 

ECHO. 
ECHO Create IIS Site: %SITE_NAME% 
%windir%\system32\inetsrv\appcmd add site /name:%SITE_NAME% /physicalPath:%SITE_PHYSIC_PATH% /bindings:%SITE_PROTOCOL%/%SITE_URL%:%SITE_PORT%: 
%windir%\system32\inetsrv\appcmd start site /site.name:%SITE_NAME% 

ECHO. 
ECHO Setup Python FastCGI Handler 
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI "/+[fullPath='%PYTHON_EXE%', arguments='%WFCGI_FILE%']" 

ECHO. 
ECHO Register the handler for this site 
%windir%\system32\inetsrv\appcmd set config "%SITE_NAME%" /section:system.webServer/handlers "/+[name='Python_via_FastCGI',path='*',verb='*',modules='FastCgiModule',scriptProcessor='%PYTHON_EXE%|%WFCGI_FILE%',resourceType='Unspecified']" /commit:site 

ECHO. 
ECHO Configure the handler to run your Django application 
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PYTHON_EXE%', arguments='%WFCGI_FILE%'].environmentVariables.[name='DJANGO_SETTINGS_MODULE',value='k6ecommerce.settings']" /commit:apphost 

ECHO. 
ECHO Configure PYTHONPATH so your Django app can be found by the Python interpreter 
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PYTHON_EXE%', arguments='%WFCGI_FILE%'].environmentVariables.[name='PYTHONPATH',value='%SITE_PHYSIC_PATH%']" /commit:apphost 

ECHO. 
ECHO Tell the FastCGI to WSGI gateway which WSGI handler to use: 
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PYTHON_EXE%', arguments='%WFCGI_FILE%'].environmentVariables.[name='WSGI_HANDLER',value='django.core.handlers.wsgi.WSGIHandler()']" /commit:apphost 

ECHO. 
ECHO Restart IIS 
iisreset 
ECHO Done... 
:END