2013-04-09 67 views
5

我目前有一个运行iis 7.5的windows 2008 webserver。我已经成功为Python 2.7.4构建了PyISAPIe 1.1.0。 Django已经部署并且工作迅速。但是,据我所知,PyISAPIe在2010年发布的是最新版本。我发现有Helicon Zoo(WebPI打包的运行WSGI桥)和DjangoWindowsTools(使用Fascgi的自动部署)。所以我想问你的建议:哪个解决方案最适合IIS上的django/python?IIS上的Django:PyISAPIe或FastCGI或WSGI或Helicon Zoo或DjangoWindowsTools

回答

4

虎视眈眈wfastcgi.py我可以看到你已经找到了一个解决方案。您可能想知道Helicon Zoo还支持FastCGI协议进行操作(与Microsoft FCGI模块无关)。此外,它支持TCP协议(如Linux上的Nginx),对彗星和长轮询支持非常有用。此外,它还提供了Microsoft FCGI模块没有的许多其他功能,例如自动负载平衡和应用程序扩展,缓慢的POST攻击保护等等。使用Web平台安装程序和Helicon Zoo我可以缩小您的初始bat文件。请查看:

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 

此代码还可以完全干净的系统上,如果需要安装IIS,Python和赫利动物园和其他所有要求。您只需要Web平台安装程序,您可以从安装它的其他系统中复制它,通常位于C:\ Program Files \ Microsoft \ Web平台安装程序无需安装。

+0

感谢分享 – 2013-04-15 12:47:19

3

那么,经过另一项研究,我发现Windows Azure服务器使用FastCGI,设置非常简单。没有更多的下载,建立...你可以看到这里http://www.windowsazure.com/en-us/develop/python/tutorials/web-app-with-django/

我已经创建了一个自动安装程序。它在使用iis 7.5的Windows seerver 2008 r2上工作。 就从这里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