加载中…
个人资料
老虎火山口
老虎火山口
  • 博客等级:
  • 博客积分:0
  • 博客访问:10,046
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

FreeBSD jail 上安装browsershots

(2008-06-19 16:57:03)
标签:

browershots

浏览器

兼容性

测试

分类: 沉静代码

如果你因为大量的、枯燥乏味的浏览器兼容性测试而站在了悬崖边,browsershots绝对可以把你从崩溃的悬崖拉回来。这是一个简单、但设计非常精巧的浏览器兼容性自动测试工具。另外:提供服务、源码开放也是browsershots的亮点。

browsershots的架构与Bitten(一个Trac插件形式的持续集成工具,精巧好用)完全类似。系统分为两部分:
ShotServer和ShotFactory,ShotServer为中心服务器,一个实例;ShotFatory则可以多个实例。

ShotSever负责:接受用户提交的URL兼容性测试请求,并排入队列;接收ShotFactory执行测试并上传的截图;展示兼容性测试的结果。
ShotFacory负责:采用“拉”的模式,定期轮询ShotServer,请求匹配自身配置的测试任务,执行、截图并上传至ShotServer。一般来说,一个ShotFactory是某种操作系统、浏览器、flash、java、javascript、显示器大小、色深的组合。ShotFactory的组合数量越多,可以测试的组合就越多。

1. 安装ShotSever
===============

1.1 调整jail设置
browsershots使用PostgreSQL作为数据库,而PostgreSQL在FreeBSD jail上安装需要预先进行一些调整,否则在初始化数据库(initdb)的时候就会报错:Fialed System Call was shmget。修改jail宿主机上的文件并重启宿主机使之生效:
#vi /etc/sysctl.conf
security.jail.sysvipc_allowed=1
#vi /etc/defaults/rc.conf
sysvipc_enable="YES"
#vi /etc/rc.conf
jail_sysvipc_allow="YES"
见参考

1.2 安装PostgreSQL 和py-psycopg
安装
cd /usr/ports/databases/postgresql82-server/
sudo make install clean
cd /usr/ports/databases/py-psycopg
sudo make install clean

初始化、启动
su -l pgsql -c initdb
su -l pgsql -c 'pg_ctl start -D /usr/local/pgsql/data -l pgsql.log'

1.3 安装Netpbm, Subversion,
cd /usr/ports/graphics/netpbm
sudo make install clean

1.4 安装django
svn checkout http://code.djangoproject.com/svn/django/trunk django
cd django
sudo python setup.py install

1.5 安装shotserver
svn checkout http://svn.browsershots.org/trunk/shotserver shotserver
下面的步骤,由于我们采用django的开发模式来运行shotserver,可以不用执行
cd shotserver
sudo python setup.py install

1.6 初始化shotserver数据库
su -l pgsql -c 'createdb shotserver04'
CREATE DATABASE

sudo -u pgsql createuser root
Shall the new role be a superuser? (y/n) y
CREATE ROLE

cd shotserver/shotserver04
./manage.py syncdb
中间会要求你指定shotserver系统管理员的帐号、密码,请设定并记住,下面访问管理面板时需要输入
此处,我们假定管理员帐号/密码为root/root

1.7 配置、启动shotserver
. 如果在django开发模式下,要设置shotserver04/setting.py中的DEBUG=True,否则static目录下css js 之类的静态文件会报404

.修改shotserver04/setting.py中下列变量,替换成你的URL
PNG_URL = 'http://10.88.15.10/png/'
API_URL = 'http://10.88.15.10/'
ZIP_URL = 'http://10.88.15.10/'
并创建png目录:mkdir -p /var/www/v04.browsershots.org/png/

.启动shotserver
./manage.py runserver YOUR.IP.ADDRESS.HERE:80

访问用户界面:http://YOUR.IP.ADDRESS.HERE会提示:
Out of service
No active screenshot factories.
恩,我们现在连一个“苦力”Factory都没有,当然无法提供服务了。下面我们创建第一个Factory

2.安装、注册、运行ShotFactory for WinXP
=======================================
ShotFactory支持Windows, Linux, Mac,下面我的笔记本(WinXP, 1280×800)为例子说明如何安装、注册、运行一个Factory。

2.1 安装
所谓“安装”非常简单,只需要到browsershots网站下载一个最新的压缩包,解开到本地目录(如d:\shotserver)即可。

2.2 注册Factory
登录(1.6节设定的管理员帐号/密码:root/root)shotserver管理面板 http://OUR.IP.ADDRESS.HERE/admin/factories/factory/add/
我设定的名称为myfactory,
os: Windows XP
screen size:1280 × 800

2.3 注册Factory关联的Browser
访问http://OUR.IP.ADDRESS.HERE/browsers/add/,会自动识别浏览器类型、版本号、Flash版本等信息,只需填写
factory:myfactory  (上节注册的factory)
password: root   (1.6节设定的管理员帐号/密码)

2.4 运行Factory
shotfactory.exe -s http://OUR.IP.ADDRESS.HERE/ -f myfactory -P root
显示如下信息,说明shotfactory工作正常,只是服务器上没有适合该factory的任务可以运行。
============================== 14:38:23 ==============================
server poll latency: 0.22 seconds
204 No matching request.

参数解释:
-s http://OUR.IP.ADDRESS.HERE/  shotserver的URL
-f myfactory  factory的名字
-P root    factory的管理员密码(1.6节设定的管理员密码)
-h 看看更详细的帮助

3. Start Your Engine!
=====================
接活儿、派活儿的“包工头”-shotserver已经准备就绪,一个“苦力”- myfactory也已经就绪,现在访问
http://YOUR.IP.ADDRESS.HERE/,不会再提示:
Out of service
No active screenshot factories.
而是可进行Opera 9.27 on Windows的兼容性测试了,如下图:
FreeBSD <wbr>jail <wbr>上安装browsershots

3.1 提交任务
再上述输入框中输入http://www.sina.com.cn/,没多久(缺省轮询间隔时间为1分钟)“苦力”myfactory就开始执行上述任务了:
============================== 14:12:02 ==============================
server poll latency: 0.20 seconds
{'major': 9, 'javascript': '', 'java': '', 'width': 1280, 'flash': '', 'request'
: 1, 'height': 800, 'bpp': 24, 'version': '9.27', 'command': '', 'minor': 27, 'b
rowser': 'Opera'}
running c:\progra~1\opera\opera.exe
Sleeping 30 seconds while page is loading.
1-pgdn01.ppm 0 800 800 800
Uploaded 477897 bytes in 0.84 seconds (4529.83 kbps).

3.2 查看结果
http://YOUR.IP.ADDRESS.HERE/screenshots/

4. 生产要考虑的问题
====================
上面的章节基本上不考虑实际生产的状况,而是演示了事,下面具体考虑系统上线时应考虑的一些问题。

4.1 以Apache + mod_python的方式运行Django(BTW:browershots shotserver是Django应用),而不是用Django的开发模式运行。

.首先需要安装Apache 和 mode_python(freebsd ports 安装,略过),并修改httpd.conf,重启Apache,激活mod_python。
vi httpd.conf
LoadModule python_module libexec/apache22/mod_python.so

.配置shotserver应用
vi httpd.conf
<Location "/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE shotserver04.settings
    PythonDebug On
    PythonPath "['/usr/local/www/shotserver'] + sys.path"
</Location>

.处理静态文件
vi httpd.conf
<Location "/media">
    SetHandler None
</Location>

<Location "/static">
    SetHandler None
</Location>

<Location "/png">
    SetHandler None
</Location>

ln -s /usr/local/lib/python2.5/site-packages/django/contrib/admin/media/ media
ln -s /usr/local/www/shotserver/shotserver04/static/ static
ln -s /var/www/v04.browsershots.org/png png


.修改settings.py
DEBUG = False
DATABASE_USER = 'pgsql'  
         
.修改权限
chown -R www:www /var/www/v04.browsershots.org


4.2 自启动
vi /etc/rc.conf
apache22_enable="YES"
postgresql_enable="YES"



常见问题:
. 415 Could not decode uploaded PNG file (hashkey c17e667eb8393a57c996d4d41c31560d)
这是由于服务器没安装netpbm导致

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有