Booki Objavi安装出错:SyntaxError和with语句有关

环境为Centos5.5, 其内置Python版本为2.4。

Booki系统需要Python2.6以上。故安装python2.7.3在/usr/local/bin/python下面。

安装Booki系统,含booktype(电子书管理平台), objavi(发布引擎), espri(导入引擎)

objavi的应用服务器配置为apache(推荐), django的应用服务器配置为nginx。

在nginx的配置中设置proxy, 把objavi的请求路由给apache.(8080端口),访问域名为objavi.yourdomain.org

上面的事情做完后,通过objavi.yourdomain.org访问服务,页面返回Internal error,

查看apache(httpd)错误日志(/var/log/httpd/objavi-error.log),错误如下:

[Tue Oct 23 20:29:48 2012] [error] [client 127.0.0.1] Premature end of script headers: objavi.cgi

[Tue Oct 23 20:30:13 2012] [error] [client 127.0.0.1]   File "/home/www/pysite/objavi2/htdocs/objavi.cgi", line 327
[Tue Oct 23 20:30:13 2012] [error] [client 127.0.0.1]     with Book(context.bookid, context.server, context.bookname,
[Tue Oct 23 20:30:13 2012] [error] [client 127.0.0.1]             ^

[Tue Oct 23 20:30:13 2012] [error] [client 127.0.0.1] SyntaxError: invalid syntax


看起来是with语法错误,但手动运行python objavi.cgi,没有错误,成功返回html页面数据。

打开objavi.cgi文件后,可看到问题出在第一行启动python的shell命令上:

#!/usr/bin/python
#
# Part of Objavi2, which turns html manuals into books
#

该脚本默认用了CentOS的内置python,而这里是2.4版本,不能识别with语句。(with语句是python2.5新引入的)

把上述/usr/bin/python修改为/usr/local/bin/python即可解决问题。


BTW,下面有一个objavi服务本地安装注意点的链接:

http://booki.flossmanuals.net/managing-a-floss-manuals-website/installing-objavi/


iefreer


你可能感兴趣的:(Booki Objavi安装出错:SyntaxError和with语句有关)