Изпълняване на Python скриптове с apache сървър
Published on 02.11.2010
На тестовата (developer ската) машина си имам инсталиран apache,php,mysql от пакета на Zend - Zend Server. По новият проект по който работя използвам и Python, идеята тук е да "пускам" python скриптовете през apache а не примерно през
shell_exec('command'). Идеята е да се подкара без външни модули. За целта намираме httpd.conf файла (обикновено в "C:\Program Files\Zend\Apache2\conf" директорията), правим му резервно копие за всеки случай, отваряме го с някой текстови редактор пр. notepad. В последния ред на файла добавяме
ScriptInterpreterSource Registry
. А в
< Directory "C:\Program Files\Zend\Apache2/htdocs" >
намираме Options Indexes
и му добавяме +ExecCGI
като трябва да стане
Options Indexes +ExecCGI
и на нов ред добавяме AddHandler cgi-script .cgi .py
при мен директивата изглежда по следния начин
< Directory "C:\Program Files (x86)\Zend\Apache2/htdocs" > # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks +ExecCGI # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride All # # Controls who can get stuff from this server. # Order allow,deny Allow from all AddHandler cgi-script .cgi .py < / Directory >Важно е да спомена че това е един от начините за подкарване на python в уеб под Windows. Тествано е на Windows Server 2003 и Windows 7. Записваме промените по файла и рестартираме Apache сървъра. Ако има проблеми при стартирането четем лога за грешки и действаме :) За тестване дали всичко е ок след рестартирането на Apache може да използвате следния код
#!c:/Python27 python # -*- coding: UTF-8 -*- # enable debugging import cgitb cgitb.enable() print "Content-Type: text/plain;charset=utf-8" print print "Hello World!"като реда
#!c:/Python27 python
указва къде е инсталиран python :)