如何让apache运行pyc文件(python编译文件)

时间:2011-04-09 08:42:57

标签: python apache

我在linux上使用apache2和python2.6。

我知道如何让apache运行* .py文件,只需将“AddHandler cgi-script .cgi .py”添加到httpd.conf文件中。但是如何让apache2运行一个* .pyc文件?

添加“AddHandler cgi-script .cgi .pyc”无效。

我听说mod_python可以在apache上运行* .pyc和* .pyo。有人能告诉我mod_python是如何制作它的吗?

顺便说一句,我不想​​学习mod_python或WSGI ......

提前谢谢大家!

3 个答案:

答案 0 :(得分:2)

问题是httpd不知道如何运行.pyc文件,因为与.py文件(带有shebang行)不同,.pyc文件不包含有关如何运行它的信息。您将需要使用binfmt_misc来指示Linux如何运行.pyc文件。并且不要忘记使文件本身也可执行。

答案 1 :(得分:1)

它应该工作。如果没有,请尝试从命令行运行有问题的.pyc文件。如果这也不起作用,this superuser question可能会有所帮助。

除此之外,我想知道不使用python源文件的原因是什么?

答案 2 :(得分:0)

在apache配置文件中,您可以在virtualhost:

部分添加行
ScriptAlias /cgi-bin/ /usr/bin/
Action cgi-handler /cgi-bin/python3
AddHandler cgi-handler .py .pyc .pyo

<Directory /usr/bin>
  Require all granted
  Options FollowSymLinks
</Directory>

配置文件的完整示例到www.domain.com.br.conf(在/ etc / apache2 / sites-enabled /中)

DocumentRoot /home/domain.com.br/www/
ServerName domain.com.br
ServerAlias www.domain.com.br

<Directory /home/domain.com.br/www/>
    Options FollowSymLinks MultiViews Includes
    AllowOverride None
    Order allow,deny
    allow from all
    Require all granted
</Directory>

ScriptAlias /cgi-bin/ /usr/bin/
Action cgi-handler /cgi-bin/python3
AddHandler cgi-handler .py .pyc .pyo

<Directory /usr/bin>
  Require all granted
  Options FollowSymLinks
</Directory>