在FreeBSD上搭建3.1环境的几个问题

24 views
Skip to first unread message

老光

unread,
Jul 6, 2011, 4:06:35 AM7/6/11
to eurasi...@googlegroups.com
终于申请了一台新PC,准备搭建一个开发环境.考虑到稳定性,最终选了FreeBSD. 不料手头的7.2版本在联想商务机上安装时,网卡驱动出问题,后来换8.2(网站最近版克隆光盘),还是不行.网上查,果真好象FB与msk网卡不和谐,最后还是另插了张530TX网卡解决.
 
ports确实够强大,安装软件方便多了,这也是我不再安装RH的原因.理论上我要安装的软件比较多,在python版本选择上我也尝试了向python 3000看齐,但最后落实在2.6.6上, 因为很多包只在这一版本有支持.
 
清单如下,已经正常安装:
python 2.6.6,以及:
MySQLdb for 2.6.6
psycopg2 for 2.6.6
pymssql
pysqlite3
vim
rcs套件(ci,co,csdiff.., 默认已安装)
SQLAlchemy-0.6.5-py2.6
chardet-2.0.1-py2.6
eurasia greenlet pyev
pypdf
settools
easyinstall
xlrd
 
系统命令行工具:
catdoc
pdftotext(xpdf工具之一)
 
安装编译linux版的nbtstat.c(在FB下需要重新make)
 
inetd.conf中打开telnet & ftp (好象现在都流行xinet啊,说这个更安全一点?)
vi指向vim,.vimrc中设置中文显示,自动语法高亮,代码折叠.
 
因为方便和好奇的缘故,我还顺利安装了erlang和yaws,这后面这东东据说是好东东,我却开不起来,也不知怎么用...
 
现在测试eurasia 应用, 我原来的3.0b程序拷贝过来不能直接启动,看文档和web.py,好象改动了WSGIServer的接口.简单地按文档重新包装后,还是跑不起来.
于是直接将3.1文档里的几个例子拿来测试,发现以下几个问题:
1.不知是否因为FB自带防火墙的问题,即使我从本机访问,DOC里标准WEB服务器那段程序,也要20多秒后才启得来,之前用wget访问会提示被拒绝.
2.重新包装wsgi的,始终没有启得动.我原来的程序象这样:
def my_app(env, start_response):
    ..
 
if __name__ == '__main__':
        server = WSGIServer(my_app, bindAddress=('0.0.0.0',8081))
        server.run()
 
现在改成这样:
def my_app(env, start_response):
    ...
 
if __name__ == '__main__':^M
        from eurasia.web import WSGIServer, mainloop
        server = WSGIServer(':8081',my_app)^M
        #server = WSGIServer(my_app, bindAddress=('0.0.0.0',8081))^M
        server.start()^M
        mainloop()
^M
而且在原来的linux下面, python flying.py后,我可以按CTRL+C中断运行回到命令行, 现在FB下面,中断不了,只能CTRL+Z转到后台,再kill -KILL杀之...
 
mainloop这东东好象消失了一阵子的,怎么又钻出来了?
 
 

沈崴

unread,
Jul 6, 2011, 8:44:40 AM7/6/11
to eurasia-users
eurasia 标准服务器需要 20 秒启动,这个比较难判断,程序带数据库访问吗?

如果不是使用 eurasia 集成安装包中自动安装的 pyev,而是单独安装的 pyev
确实会出现不能通过 ctrl + c 终止程序的问题,我会在这两天更新一下,
以解决这个问题。

On Jul 6, 4:06 pm, 老光 <yaoguangm...@cq.chinatelecom.com.cn> wrote:
> 终于申请了一台新PC,准备搭建一个开发环境.考虑到稳定性,最终选了FreeBSD. 不料手头的7.2版本在联想商务机上安装时,网卡驱动出问题,后来换8.2(网站最近版克隆光盘),还是不行.网上查,果真好象FB与msk网卡不和谐,最后还 是另插了张530TX网卡解决.

沈崴

unread,
Jul 7, 2011, 2:47:24 AM7/7/11
to eurasia-users
现已更新到 pyev-0.8.0-4.04 ,同时解决了无法使用 ctrl + c 终止程序的问题。

http://eurasia.googlecode.com/files/eurasia-3.1-snapshot.tar.bz2

老光

unread,
Jul 18, 2011, 4:59:49 AM7/18/11
to eurasi...@googlegroups.com
这个20秒能不能想办法解决?调试时太让人抓狂了...
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“eurasia-users”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 eurasi...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 eurasia-user...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/eurasia-users?hl=zh-CN 访问此网上论坛。
>
>

老光

unread,
Jul 18, 2011, 5:21:43 AM7/18/11
to eurasi...@googlegroups.com
刚才估算了一下,在我的FreeBSD上面,大概要45秒后服务才启起来了...

----- Original Message -----
From: "沈崴" <wile...@gmail.com>
To: "eurasia-users" <eurasi...@googlegroups.com>
Sent: Wednesday, July 06, 2011 8:44 PM
Subject: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题


Wilhelm Shen

unread,
Jul 18, 2011, 10:52:46 AM7/18/11
to eurasi...@googlegroups.com
如果有比较详细的测试数据,就可以知道卡在哪个位置了。
这种情况目前很难判断,我还没有遇到过,很有可能是 eurasia 之外的系统问题导致的。

Wilhelm Shen

unread,
Jul 18, 2011, 10:57:55 AM7/18/11
to eurasi...@googlegroups.com
需要通过下面的方法打开测试输出:

from eurasia import core
core.excepthook = traceback.print_exc

老光

unread,
Jul 18, 2011, 8:49:05 PM7/18/11
to eurasi...@googlegroups.com
另外一个不解:简单的测试服务器输出,在用IE查看源文件时,里面只有一行:hello world,但在命令行用wget获取并保存为index.html时,显示内容为4行:
------
b
hello world
0

--------
不知是什么原因?

从启动耗时来看,初步圈定是在这一句:
httpd = wsgiserver(':8081', myapp),费时59秒!

老光

unread,
Jul 18, 2011, 9:18:56 PM7/18/11
to eurasi...@googlegroups.com
现在锁定在getfqdn这个函数上.
不过追踪了阵,他消失了!!
在server.py中是这样导入的:
from socket2 import getfqdn
但在socket2.py中死也找不到这个单词.我并对有怀疑的from .. import *, globals, exec等地方进行了初步展开,没有找到来源!!
看大大能记住不,确认一下这个函数来源,是否他费时太多.
应该与服务器DNS等设置无关吧?不会eurasia启动时试图连接外网吧?

----- Original Message -----
From: "Wilhelm Shen" <wile...@gmail.com>
To: <eurasi...@googlegroups.com>
Sent: Monday, July 18, 2011 10:57 PM
Subject: Re: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题


老光

unread,
Jul 18, 2011, 9:21:24 PM7/18/11
to eurasi...@googlegroups.com
嗯,大大,另一个问题能否抽空改进:手册可以有一个单文件打包下载?以HTML或DOC或纯文本格式都可以.
在IE6中,教程中的源代码都会显示在一行中...
看网页时另存的话,只存得一个0KB的文件,用IE打开会尝试外网链接...


----- Original Message -----
From: "Wilhelm Shen" <wile...@gmail.com>
To: <eurasi...@googlegroups.com>
Sent: Monday, July 18, 2011 10:57 PM
Subject: Re: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题


老光

unread,
Jul 18, 2011, 9:50:23 PM7/18/11
to eurasi...@googlegroups.com
各位,我现在掉入一个两难的情况了...

我希望在新的环境中使用FreeBSD,这影响了对eurasia的版本选择.
如果选择3.1(3.1相对3.0b1还是很有好处的,特别是传说中的异步文件IO和数据库访问),安装python时自动安装了python 2.6.6,不知3.1与2.6.6的兼容性好不好.且目前发现的启动50秒问题,还在解决中.

如想还原到3.0b1,嘿,我找了一转没有找到在FB上安装stackless python的方法,ports中没有,sp的download里也没有,其他方式我都有点嫌麻烦了...

顺便问一下,要想进入FB的ports, eurasia需要达到什么境界或通过什么方法?

----- Original Message -----
From: "Wilhelm Shen" <wile...@gmail.com>
To: <eurasi...@googlegroups.com>
Sent: Monday, July 18, 2011 10:57 PM
Subject: Re: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题


Wilhelm Shen

unread,
Jul 19, 2011, 1:47:13 AM7/19/11
to eurasi...@googlegroups.com
stackless python 可以在 freebsd 中自己编译,需要 gcc 和相关的头文件。

推荐使用 eurasia 3.1。

socket2 的 getfqdn 是从 socket 模块中导入的。

可以试下 chrome 、firefox 来阅读文档,在 google code 上效果应该会比 ie 好。

老光

unread,
Jul 19, 2011, 5:13:57 AM7/19/11
to eurasi...@googlegroups.com
找到原因了! 跟我原来的想象有点关系,我原来一直怀疑这几十秒是跟DNS搜寻有关系的东东.

安装完后必须手工修改/etc/hosts文件,使127.0.0.1也具有某主机名,即hostname,该值与安装将结束时输入的主机名一致,即登录时提示信息里的主机名,也即登录后环境变量HOSTNAME.

我是通过在观察getfqdn的结果为hostname想到这一点的,现在我的eurasia是秒启动了.

Zoom.Quiet

unread,
Jul 19, 2011, 5:22:03 AM7/19/11
to eurasi...@googlegroups.com
在 2011年7月19日 下午5:13,老光 <yaogua...@cq.chinatelecom.com.cn> 写道:
> 找到原因了! 跟我原来的想象有点关系,我原来一直怀疑这几十秒是跟DNS搜寻有关系的东东.
>
> 安装完后必须手工修改/etc/hosts文件,使127.0.0.1也具有某主机名,即hostname,该值与安装将结束时输入的主机名一致,即登录时提示信息里的主机名,也即登录后环境变量HOSTNAME.
>
> 我是通过在观察getfqdn的结果为hostname想到这一点的,现在我的eurasia是秒启动了.
>
BSD 的网络配置的确比较严格..

--
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
俺: http://about.me/zoom.quiet
哲: http://www.zeuux.org/home/zoomquiet
豆: http://www.douban.com/group/zoomquiet
书: http://code.google.com/p/openbookproject
营: http://code.google.com/p/kcpycamp/wiki/PythoniCamp
文字协议: http://creativecommons.org/licenses/by-sa/2.5/cn/

Chuangbo Li

unread,
Jul 19, 2011, 5:25:34 AM7/19/11
to eurasi...@googlegroups.com
这样的话具体可能是 gethostbyname('127.0.0.1') 的时候发现没有 hostname, 于是试图去反向解析自己的 hostname ,然后就等待解析响应超时。

在 2011年7月19日星期二,下午5:13,老光 写道:
找到原因了! 跟我原来的想象有点关系,我原来一直怀疑这几十秒是跟DNS搜寻有关系的东东.

安装完后必须手工修改/etc/hosts文件,使127.0.0.1也具有某主机名,即hostname,该值与安装将结束时输入的主机名一致,即登录时提示信息里的主机名,也即登录后环境变量HOSTNAME.

我是通过在观察getfqdn的结果为hostname想到这一点的,现在我的eurasia是秒启动了.


----- Original Message -----
From: "Wilhelm Shen" <wile...@gmail.com>
To: <eurasi...@googlegroups.com>
Sent: Tuesday, July 19, 2011 1:47 PM
Subject: Re: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题


stackless python 可以在 freebsd 中自己编译,需要 gcc 和相关的头文件。

推荐使用 eurasia 3.1。

socket2 的 getfqdn 是从 socket 模块中导入的。

可以试下 chrome 、firefox 来阅读文档,在 google code 上效果应该会比 ie 好。

在 2011年7月19日上午1:50,老光 <yaogua...@cq.chinatelecom.com.cn> ??道:
各位,我现在掉入一个两难的情况了...

我希望在新的环境中使用FreeBSD,这影响了对eurasia的版本选择.
如果选择3.1(3.1相对3.0b1还是很有好处的,特别是传说中的异步文件IO和数据库访问),安装python时自动安装了python 2.6.6,不知3.1与2.6.6的兼容性好不好.且目前发现的启动50秒问题,还在解决中.

如想还原到3.0b1,嘿,我找了一转没有找到在FB上安装stackless python的方法,ports中没有,sp的download里也没有,其他方式我都有点嫌麻烦了...

顺便问一下,要想进入FB的ports, eurasia需要达到什么境界或通过什么方法?

----- Original Message -----
From: "Wilhelm Shen" <wile...@gmail.com>
To: <eurasi...@googlegroups.com>
Sent: Monday, July 18, 2011 10:57 PM
Subject: Re: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题


需要通过下面的方法打开测试输出:

from eurasia import core
core.excepthook = traceback.print_exc

在 2011年7月18日下午10:52,Wilhelm Shen <wile...@gmail.com> ??道:
如果有比较详细的测试数据,就可以知道卡在哪个位置了。
这种情况目前很难判断,我还没有遇到过,很有可能是 eurasia 之外的系统问题导致的。

在 2011年7月18日下午5:21,老光 <yaogua...@cq.chinatelecom.com.cn> ??道:

Wilhelm Shen

unread,
Jul 19, 2011, 7:01:24 AM7/19/11
to eurasi...@googlegroups.com
意料之外情理之中呐,/etc/hosts 里面没有 127.0.0.1 的情况。

老光提供了非常有用的经验。

老光

unread,
Jul 21, 2011, 5:54:03 AM7/21/11
to eurasi...@googlegroups.com
跟各位老大汇报进度:

1.hosts文件问题解决后,不光是秒启动了,而且CTRL+C能够即时中断了.
2.3.0b1上面的东东基本割接过来运行起来了,不过需要调整的地方看来还多:
A. 页面上总是有些噪音字符,怀疑是eurasia某文件里为了调试而增加的.象"cf21","12","216,e59,甚至还有一行:"HTTP/1.1 200 OK Content-Type: text/html Transfer-Encoding: chunked 2b "
B. 原来的sqlite3版本是3.6.18, 现在是3.7.4(最开始安成了3.4.2,结果不支持FTS3), 但好象兼容性也有问题, 模糊查询出来的页面显示得一塌糊涂.不知是要微调参数,还是进行数据割接.
3. 顺道问,我在FB下面的命令行下,不能显示汉字, 估记与环境变量LANG和LANGUAGE有关, 但还没有回忆起是怎么设置的.我查了原来RH上的设置是:
LANG=zh_CN.GB18030
LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
但没有找到RH里是在哪个文件里设置的.不过这个应该问度娘能够搞定.

看到sqlite3.7.4的安装选项里有thread safe选项,是不是说以后可以多线程同时读写sqlite3数据库了?

Wilhelm Shen

unread,
Jul 21, 2011, 7:29:19 AM7/21/11
to eurasi...@googlegroups.com
在 2011年7月21日下午5:54,老光 <yaogua...@cq.chinatelecom.com.cn> 寫道:
> 跟各位老大汇报进度:
>
> 1.hosts文件问题解决后,不光是秒启动了,而且CTRL+C能够即时中断了.
> 2.3.0b1上面的东东基本割接过来运行起来了,不过需要调整的地方看来还多:
>  A. 页面上总是有些噪音字符,怀疑是eurasia某文件里为了调试而增加的.象"cf21","12","216,e59,甚至还有一行:"HTTP/1.1 200 OK Content-Type: text/html Transfer-Encoding: chunked 2b "

eurasia 3.0 使用 content-length 定义报文长度,必须确定整个报文长度
才能发送头部(缓冲模式)。
或者不设置报文长度,客户端需要等待连接断开才能知道报文已经发送
完毕(长连接模式)。

eurasia 3.1 使用 chunked 编码进行传输,不需要设置 content-length ,
不必知道报文长度,一有数据可以立即发送。所以不需要在缓冲模式和
长连接模式之间切换,非常方便。而且长连接报文结束以后,socket 不必
断开,继续响应下一条请求,做到 keep-alive 。

你看到的噪音字符的是指定分块大小用的。

老光

unread,
Jul 24, 2011, 11:53:31 PM7/24/11
to eurasi...@googlegroups.com
这个噪音字符有时候出来,有时候不出来,如何显式关闭?

3.1与3.0b1之间的不同点之一,是response只能调用一次.3.0b1中,可以调用多次,感觉是到最后某个环节的时候,才实际向客户端发送响应的.所以可以在程序中间的时候通过response来完成重定向.而3.1不行了, 一调用就响应了.所以我的程序作了改动:
=====3.0b1====
for i in header():
yield i
for i in result():
yield i
for i in footer():
yield i
# header, result, footer 必须按顺序调用.result里才决定重定向,或响应头部类型,但result里的方法又依赖于header里初始化的一些变量.
========
=======3.1======
header=list(header())
result = list(result())
footer = list(footer())
for i in header:
yield i
for i in result:
yield i
for i in footer:
yield i
==============
唉,看着痛苦吧, 原来节约空间的好处一点都没了...

Wilhelm Shen

unread,
Jul 25, 2011, 12:27:54 AM7/25/11
to eurasi...@googlegroups.com
重定向报头必须在正文之前发送,所以 3.0 里面是把正文先缓存起来再一起发送。
3.1 真正实现了即时发送,没有缓存,更节省内存。

所以在 3.1 里面推荐不使用缓存的即时发送,发送的同时,浏览器可以立即看到
发送的内容。在 3.0 中使用缓存的模式只能在页面全部发送完成以后才能看到。

如果需要在组装页面的时候判断是否重定向,可以先将内容写入 StringIO,再一次
发送。其实这就是 3.0 的实现方式。

老光

unread,
Aug 5, 2011, 3:22:16 AM8/5/11
to eurasi...@googlegroups.com
老大, 怎么把噪音字符关掉? 我要正式用3.1了.

沈崴

unread,
Aug 5, 2011, 10:26:50 AM8/5/11
to eurasia-users
这其实不是噪音字符,是 chunked 传输编码, eurasia 3.1 就是基于
chunked transfer encoding 实现的,详见:

http://en.wikipedia.org/wiki/Chunked_transfer_encoding

所有浏览器都能支持这种传输方法。只有在少数情况下(例如无
body 报文,只有 IE 会有异常表现)才需要自己控制传输。

eurasia 3.1 提供了 httpfile.raw_close() 接口用来发送无 body 报文。
httpfile.raw_close 接口说明详见:

http://code.google.com/p/eurasia/wiki/eurasia_3_1_userguide#httpfile_对象

这里是个例子(redirect):

data = (
'HTTP/1.1 302 Found\r\n'
'Content-Type: text/html\r\n'
'Location: www.google.com\r\n'
'\r\n'
'<html><head><title>Object moved temporarily</title></head><body>'
'This resource resides temporarily at <a href="www.google.com">'
'www.google.com</a>.</body></html>')

def redirect_to_google(httpfile):
httpfile.raw_close(data)

On Aug 5, 3:22 pm, 老光 <yaoguangm...@cq.chinatelecom.com.cn> wrote:
> 老大, 怎么把噪音字符关掉? 我要正式用3.1了.
>
> ----- Original Message -----
> From: "Wilhelm Shen" <wilei...@gmail.com>
> To: <eurasi...@googlegroups.com>
> Sent: Thursday, July 21, 2011 7:29 PM
> Subject: Re: 回复: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题
>

> >>> 在 2011年7月19日下午5:25,Chuangbo Li <zhetengmao...@gmail.com> 寫道:
> >>>> 这样的话具体可能是 gethostbyname('127.0.0.1') 的时候发现没有 hostname, 于是试图去反向解析自己的 hostname
> >>>> ,然后就等待解析响应超时。
>
> >>>> 在 2011年7月19日星期二,下午5:13,老光 写道:
>
> >>>> 找到原因了! 跟我原来的想象有点关系,我原来一直怀疑这几十秒是跟DNS搜寻有关系的东东.
>
> >>>> 安装完后必须手工修改/etc/hosts文件,使127.0.0.1也具有某主机名,即hostname,该值与安装将结束时输入的主机名一致,即登录时提示 信息里的主机名,也即登录后环境变量HOSTNAME.
>
> >>>> 我是通过在观察getfqdn的结果为hostname想到这一点的,现在我的eurasia是秒启动了.
>
> >>>> ----- Original Message -----
> >>>> From: "Wilhelm Shen" <wilei...@gmail.com>
> >>>> To: <eurasi...@googlegroups.com>
> >>>> Sent: Tuesday, July 19, 2011 1:47 PM
> >>>> Subject: Re: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题
>
> >>>> stackless python 可以在 freebsd 中自己编译,需要 gcc 和相关的头文件。
>
> >>>> 推荐使用 eurasia 3.1。
>
> >>>> socket2 的 getfqdn 是从 socket 模块中导入的。
>
> >>>> 可以试下 chrome 、firefox 来阅读文档,在 google code 上效果应该会比 ie 好。
>

> >>>> 在 2011年7月19日上午1:50,老光 <yaoguangm...@cq.chinatelecom.com.cn> ??道:


>
> >>>> 各位,我现在掉入一个两难的情况了...
>
> >>>> 我希望在新的环境中使用FreeBSD,这影响了对eurasia的版本选择.
> >>>> 如果选择3.1(3.1相对3.0b1还是很有好处的,特别是传说中的异步文件IO和数据库访问),安装python时自动安装了python
> >>>> 2.6.6,不知3.1与2.6.6的兼容性好不好.且目前发现的启动50秒问题,还在解决中.
>
> >>>> 如想还原到3.0b1,嘿,我找了一转没有找到在FB上安装stackless
> >>>> python的方法,ports中没有,sp的download里也没有,其他方式我都有点嫌麻烦了...
>
> >>>> 顺便问一下,要想进入FB的ports, eurasia需要达到什么境界或通过什么方法?
>
> >>>> ----- Original Message -----
> >>>> From: "Wilhelm Shen" <wilei...@gmail.com>
> >>>> To: <eurasi...@googlegroups.com>
> >>>> Sent: Monday, July 18, 2011 10:57 PM
> >>>> Subject: Re: [eurasia-users] Re: 在FreeBSD上搭建3.1环境的几个问题
>
> >>>> 需要通过下面的方法打开测试输出:
>
> >>>> from eurasia import core
> >>>> core.excepthook = traceback.print_exc
>

> >>>> 在 2011年7月18日下午10:52,Wilhelm Shen <wilei...@gmail.com> ??道:


>
> >>>> 如果有比较详细的测试数据,就可以知道卡在哪个位置了。
> >>>> 这种情况目前很难判断,我还没有遇到过,很有可能是 eurasia 之外的系统问题导致的。
>

> >>>> 在 2011年7月18日下午5:21,老光 <yaoguangm...@cq.chinatelecom.com.cn> ??道:

> ...
>
> read more >>

Reply all
Reply to author
Forward
0 new messages