首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS上的Python FastCGI [错误500]

IIS上的Python FastCGI [错误500]
EN

Stack Overflow用户
提问于 2013-11-13 17:16:30
回答 1查看 2.6K关注 0票数 1

在现有的ASP.NET站点设置中,我很难让FastCGI在IIS7 for Python脚本上工作。我已经成功地设置了CGI并将其与Python脚本一起使用,但我不想为每个请求招致它的开销。我也尝试过HeliconZoo并让WSGI正常工作,但它将自己映射到站点的一个子目录(作为应用程序入口点),而我希望能够在web树中的任何地方与ASP.NET文件一起拥有python脚本。

我试着修改了this post中的指令

在IIS中将CGI作为角色服务启用

安装Python 2.7

安装WFastCGI 2.0.msi

创建新的处理程序映射(模块映射):image here

注意:我已经尝试了上面的wfastcgi参数和没有wfastcgi参数。

单击确定后,系统会询问我是否要将其添加到FastCGI应用程序设置中,因此我接受了。

最后,我授予IIS_IUSRS读取/执行C:\Python27下的文件并在wwwroot中创建test.py文件的权限:

代码语言:javascript
复制
print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

当我导航到localhost/test.py时,我得到了一个错误500,但它不是IIS500错误页面,它只是白色的,没有任何信息。当我检查IIS事件日志时,我看不到任何打印内容。

如有任何建议,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-10-22 11:44:25

我已经创建了一个使用wfastcgi设置django站点的自动化程序。希望它能帮上忙

代码语言:javascript
复制
@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 CWD=%~dp0
SET PYTHON_EXE=%CWD%env\Scripts\python.exe
SET PROJECT_NAME=myproject
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 spyjamesbond0072003@gmail.com
ECHO ===========================================
ECHO.

IF NOT EXIST %PYTHON_EXE% (
    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 PYHANDLE=PyFastCGI_%SITE_NAME%

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='%PYHANDLE%',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='%DJANGO_SETTING%']" /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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19949788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档