我在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 ......
提前谢谢大家!
答案 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>