我有一些我想要执行的python脚本以及以下配置: 安装了Ubuntu 10.04,Apache2,Python 2.6,mod_python和mod_wsgi。
我已按照以下网站上的说明操作:
http://bytes.com/topic/python/answers/474462-apache-python-ubuntu
http://apache.active-venture.com/cgi-configure.html
http://modpython.org/live/current/doc-html/inst-testing.html
http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide
http://wiki.apache.org/httpd/DistrosDefaultLayout
sites-available中的默认文件:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AddHandler mod_python .py
AddHandler cgi-script .cgi py
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
我收到500内部服务器错误。 我还将文件的权限更改为755
py文件只是打印一些应该出现在页面上的文本。 我该怎么办? 感谢
[edit]:更新,它与py文件中的错误有关 错误日志如下所示。
Traceback (most recent call last):
File "/usr/lib/cgi-bin/amissa2.py", line 80, in <module>
zoom_factor = int(parms.getfirst('zoom')) * int(parms.getfirst('zsize'))
TypeError: int() argument must be a string or a number, not 'NoneType'
将None从int转换为int似乎是一个错误:
zoom_factor = int(parms.getfirst('zoom')) * int(parms.getfirst('zsize'))
有关如何进行此类转换的任何提示?
答案 0 :(得分:1)
您没有加载wsgi模块。
LoadModule wsgi_module modules/mod_wsgi.so
此外,您只需要安装mod_wsgi或mod_python。除非您有特殊需要,否则不要两者都这样做。
答案 1 :(得分:1)
如果parms.getfirst('zoom')或parms.getfirst('zsize')返回None,你可能不会在你的URL中提供这些(?dunno这些parms是什么,只是猜测)。定义缺少这些行为时所需的行为(它是否意味着“0”缩放,或者因为你是乘法,“1”更有意义吗?)。
然后创建自己的转换函数,该函数知道如何将None转换为int(取决于您定义的行为)并调用它而不是int()。
def convert(value):
if value is None:
return 0 # or 1, or whatever
else:
return int(value)