浏览器兼容平台f2etest搭建详细记录

工具本身就不做过多介绍了,大家自行前往查看: [f2etest ]

在搭建环境的过程中我遇到了大量的困难,配置起来非常的麻烦,因此想在这里记录一下过程,让后面的同学能借鉴一二。

编辑帖子很辛苦,转载请注明出处,谢谢!

如github官方所说,你需要至少两台机器。本人搭建的环境分别为:

  • Centos6.7(x64)
  • windows server 2003 standard(x64)
  • windows server 2008(x64)

使用的技术:

  • guacamole :一种基于H5的远程桌面技术,官网:http://guac-dev.org/。如果不需要多用户登录,搭建此环境即可直接使用。
  • HostsShare:跨服务器和浏览器的共享软件。
  • Nodejs:就不多说了,官网:https://nodejs.org/

F2eTest浏览器兼容性测试平台的搭建

Centos环境部署

  • 技术基础

    guacamole :一种基于H5的远程桌面技术,官网:http://guac-dev.org/。如果不需要多用户登录,搭建此环境即可直接使用。
    HostsShare:跨服务器和浏览器的共享软件。
    Nodejs:就不多说了,官网:https://nodejs.org/
  • 修改yum源

备份repos文件

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载替换

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 
//注意下载的文件要和centos系统版本对应,参考 http://mirrors.aliyun.com/help/centos

执行命令

yum clean all 
yum clean metadata 
yum clean dbcache 
yum makecache
  • 安装JAVA环境

安装JAVA,配好JAVAHOME和CLASSPATH等环境变量 

mkdir /usr/java  
cd /usr/java
wget http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz?AuthParam=1440926059_deb5f2aa485976bed6105e9a5b2fbf42
tar -zxvf jdk-7u79-linux-x64.gz 

修改环境变量 

vi /etc/profile 
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  

验证环境变量

source /etc/profile  
java -version  
  • 安装tomcat

    cd /usr/local/ 
    wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.69/bin/apache-tomcat-7.0.69.tar.gz
    tar -xzvf apache-tomcat-7.0.64.tar.gz 
    mv apache-tomcat-7.0.64 tomcat7 
    cd /etc/init.d 
    vi tomcat7

    tomcat7文件的内容如下:

    #!/bin/bash
    # description: Tomcat Start Stop Restart
    # processname: tomcat
    # chkconfig: 234 20 80
    JAVA_HOME=/usr/java/jdk1.7.0_79
    export JAVA_HOME
    PATH=$JAVA_HOME/bin:$PATH
    export PATH
    CATALINA_HOME=/usr/local/tomcat7
    
    case $1 in
    start)
    sh $CATALINA_HOME/bin/startup.sh
    ;; 
    stop)   
    sh $CATALINA_HOME/bin/shutdown.sh
    ;; 
    restart)
    sh $CATALINA_HOME/bin/shutdown.sh
    sh $CATALINA_HOME/bin/startup.sh
    ;; 
    esac    
    exit 0

然后配置如下:

chmod 755 tomcat7

[root@i-ket318ot init.d]# chkconfig --add tomcat7
[root@i-ket318ot init.d]# chkconfig --level 234 tomcat7 on
[root@i-ket318ot init.d]# chkconfig --list tomcat7

结果:

Using CATALINA_BASE:   /usr/local/tomcat7
Using CATALINA_HOME:   /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME:        /usr/java/jdk1.7.0_79
Using CLASSPATH:       /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
Tomcat started.
  • 安装guacamole-server

注:请使用f2etest项目中的war包,作者对guacamole源生代码做了修改,如果用官方的war包会报错。

yum install cairo-devel libpng-devel uuid-devel freerdp* libvncserver-devel openssl-devel
ln -s /usr/local/lib/freerdp/guacsnd.so /usr/lib64/freerdp/
ln -s /usr/local/lib/freerdp/guacdr.so /usr/lib64/freerdp/
mkdir -p /home/guacdshare
chmod 777 /home/guacdshare
wget https://codeload.github.com/alibaba/f2etest/zip/master
mv master master.zip
unzip master.zip
cd f2etest-master/f2etest-guacamole
tar -xzf guacamole-server-0.9.3.tar.gz
cd guacamole-server-0.9.3
./configure --with-init-dir=/etc/init.d
make
make install
ldconfig
chkconfig --add guacd
chkconfig guacd on
chkconfig --list guacd
service guacd start
netstat -panl | grep guacd

结果:

[root@i-ket318ot guacamole-server-0.9.3]# netstat -panl | grep guacdguacd[20038]: INFO:  Exiting and passing control to PID 20039

tcp        0      0 127.0.0.1:4822          0.0.0.0:*               LISTEN      20039/guacd
unix  2      [ ]         DGRAM                    49085    20039/guacd
  • 安装guacamole-client

    cp guacamole-0.9.3.war /usr/local/tomcat7/webapps/guacamole.war
    mkdir /etc/guacamole
    mkdir /root/.guacamole
    vi /etc/guacamole/guacamole.properties

写入的代码

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822
enable-websocket: true
enable-clipboard-integration: true

auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider
noauth-config: /etc/guacamole/noauth-config.xml

# auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
# basic-user-mapping: /etc/guacamole/user-mapping.xml

输入如下命令:

ln -s /etc/guacamole/guacamole.properties /root/.guacamole

vi /etc/guacamole/noauth-config.xml

写入:

配置目标服务器,你连接几台就写几台IP,比如192.168.1.5和6分别是我的windows2003和2008的机器

<configs>
    <config name="f2etest-ie7" protocol="rdp">
        <param name="hostname" value="172.16.3.6" />
        <param name="port" value="3389" />
        <param name="enable-drive" value="true" />
        <param name="drive-path" value="/home/guacdshare" />
    </config>
    <config name="f2etest-ie8" protocol="rdp">
        <param name="hostname" value="172.16.3.3" />
        <param name="port" value="3389" />
        <param name="enable-drive" value="true" />
        <param name="drive-path" value="/home/guacdshare" />
    </config>    
</configs>

service tomcat7 restart


6. 以上步骤我遇到了很多环境问题,列一部分问题及解决办法

  • 本地编译安装guacamole server的时候,执行./configure提示找不到libtelnet,我用yum命令安装telnet后依然不行,最终去地址链接 下载rpm包本地安装成功,我下载的是这个版本

  • 顺便提一下centos中安装mysql的步骤

    -下载 
    yum -y install mysql-server 
    -开机启动 
    chkconfig mysqld on 
    -启动服务 
    service mysqld start 
    -设置root账户密码 
    [root@simple ~]# mysql -u root 
    mysql> select user,host,password from mysql.user; 
    +——+———–+———-+ 
    | user | host | password | 
    +——+———–+———-+ 
    | root | localhost | | 
    | root | simple | | 
    | root | 127.0.0.1 | | 
    | | localhost | | 
    | | simple | | 
    +——+———–+———-+ 
    5 rows in set (0.01 sec) 
    mysql> set password for root@localhost=password(‘设置个密码’); 
    mysql> exit

  • 安装nodejs加入环境变量后,需要把nodejs配置到profile中,执行source /etc/profile立刻生效,如果重启以后就失效了,可以在~/.bashrc文件末尾加上:export PATH=$PATH:/usr/local/nodejs/bin:$PATH

  • 安装nodejs 4.8版本提示g++太旧,请参考如下方法解决:
wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
yum install -y devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
scl enable devtoolset-2 bash
wget https://nodejs.org/dist/v4.2.1/node-v4.2.1.tar.gz
tar -xvzf node-v4.2.1.tar.gz
cd node-v4.2.1
./configure
make && make install
  • 如果安装libpng的时候,执行make install命令提示undefined reference to inflateReset2的话,在config命令如此运行LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure
  • 在本地编译guacamole-server的时候,执行./configure --with-init-dir=/etc/init.d要注意看看最后的结果,如果提示这样: 
    这里写图片描述 
    需要按照提示安装缺少的组件,可以在这里找。
  • 安装过程中遇到这个错误:..libguac/.libs/libguac.so: undefined reference to png_set_longjmp_fn 
    因为centos6.2在yum安装cairo的时候同时安装的依赖包里有libpng12库,默认是在usr系统目录下,而上面报错的方法最低版本要求是libpng14,,因此需要在执行configure命令的时候:./configure --with-init-dir=/etc/init.d --prefix=/usr/local/lib

7. 验证guacamole部署成功

8. 部署f2etest-web

  • nodejs、npm请自行安装
  • npm用不了的请用cnpm代替(淘宝镜像)
  • 安装过程请参考官网,完全没问题
  • 这里给大家看一下我的配置文件(./conf下面的三个文件)

    • app.json

      [
          {
              "id": "hostsshare",
              "name": "hosts",
              "server": "f2etest-ie11",
              "program": "c:\\app\\hostsshare.bat"
          },
          {
              "id": "ie6",
              "name": "IE 6",
              "server": "f2etest-ie6",
              "program": "c:\\app\\ie6.bat"
          },
          {
              "id": "ie7",
              "name": "IE 7",
              "server": "f2etest-ie7",
              "program": "c:\\app\\ie7.bat"
          }
      ]
      
    • server.json

      [
             {
                 "id": "f2etest-ie7",
                 "ip": "192.168.1.5",
                 "remoteApp": false
             },
             {
                 "id": "f2etest-ie8",
                 "ip": "192.168.1.6",
                 "remoteApp": true
              }
       ] 
    • site.json

      {
          "port": 3000,
          "name": "F2eTest",
          "about": "浏览器云测平台",
          "icon": "/favicon.ico",
          "dbHost": "mysql的IP地址",
          "dbUser": "mysql的账户",
          "dbPass": "mysql的密码",
          "dbTable": "f2etest",
          "clientApiKey":"随机的字符串",  //这里的字符串会在windows server中用到
          "guacamoleApi": "http://f2etest-link.xxxx.com/guacamole/client.xhtml",
          "footer": "",
          "statNav" : "<a href=\"/stat\">标准统计</a> | <a href=\"/statuser\">个人统计</a>"
      }
  • 启动web服务器 
    node app.js

  • 访问web服务器 
    http://tomcatserver:3000

  • 问题1:访问的问题 
    访问IP:3000地址一直显示connetcing,然后nodejs控制台提示如下: 
    这里写图片描述 
    这是正常的,因为windows客户端还没配置,所以获取不到返回值。 
    如果显示黑屏,如https://github.com/alibaba/f2etest/issues/20 的问题所描述的,可以参考解决办法。

  • 问题2:npm升级的问题 
    执行命令node app.js启动的时候遇到了问题,提示各种Error: Cannot find module 'finalhandler'之类的错误,明明已经执行了npm install命令,却没有更新。执行以下命令检查:

    which npm
    which node
    echo $NODE_PATH  //此时输出为空
    

    因为按照作者的步骤,我们把nodejs的模块指定到非默认路径下,比如/usr/local/nodejs这样的,那么安装就会出问题,要手动设置:

    export NODE_PATH=/usr/local/nodejs/lib/node_modules

    如果出现各种missing,要用npm install安装到本地,我是一个一个装的,先执行npm list看看缺哪些,只要安装节点最上面的包,就可以一并安装依赖包了。npm玩的不熟,大家按自己的办法解决吧。

Windows Server2003/2008的设置

1. 安装操作系统

此处废话不多说,飞速略过。
- 安装好操作系统,记得安装网卡驱动
- 运行curl报错,提示没有找到msvcr100.dll:请安装vc2005及高版本 
- VC(32位地址)
    VC2005: http://www.microsoft.com/zh-cn/download/details.aspx?id=5638   必须安装
    VC2008: http://www.microsoft.com/zh-cn/download/details.aspx?id=5582 
    VC2010: http://www.microsoft.com/zh-cn/download/details.aspx?id=8328
- VC(64位)
    VC2005: http://www.microsoft.com/zh-cn/download/details.aspx?id=18471   必须安装
    VC2008: http://www.microsoft.com/zh-cn/download/details.aspx?id=2092 
    VC2010: http://www.microsoft.com/zh-cn/download/details.aspx?id=13523
    (windows server2008需要安装VC2010才行)
- 安装.net framework 2.0 X64位
    https://www.microsoft.com/zh-cn/download/details.aspx?id=1639

2. 配置环境

其实2003配置流程和2008类似(有些设置找不到是因为位置或者名称不一样),这里照搬github上的过程,后面补充我遇到的问题。

运行 gpedit.msc
[计算机配置/管理模板/系统],右侧的 [显示“关闭事件跟踪程序”] 设为禁用
[计算机配置/Windows 设置/安全设置/账户策略/密码策略],禁用 [密码必须符合复杂性要求]、将 [密码最长使用期限] 设为 0
运行 gpupdate /force
[控制面板 / 电源选项 / 更改计划设置 / 关闭显示器] 设为 [从不]。
管理工具 / 服务器管理器 / 添加功能:
Telnet 客户端、桌面体验(主要是要 Windows Defender)
然后打开 控制面板 / Windows Defender,更新后自动设置成实时保护。 //此处我没配置
弊端:内存消耗增加。
管理工具 / 服务器管理器 / 添加角色:
远程桌面服务:
角色服务:远程桌面会话主机、远程桌面授权
身份验证方法:不需要使用网络级别身份认证
授权模式:每用户
用户组:添加 Authenticated Users
Web 服务器(IIS):
角色服务:勾选上 [应用程序开发/ASP]
安装完后重启并完成配置。
管理工具 / 服务器管理器
配置 IE ESC,禁用
激活远程桌面授权:
管理工具 / 远程桌面服务 / 远程桌面授权管理器,在打红叉的服务器上右键/激活服务器
公司信息:随便填
许可证安装向导:
许可证计划:企业协议
协议号码:6565792
产品版本:“Windows Server 2008或Windows Server 2008 R2”
许可证类型:“TS或RDS每用户CAL”
数量:输入你想允许的最大远程连接数量,如100
激活后,红叉变绿。
管理工具 / 远程桌面服务 / 远程桌面会话主机配置:
双击连接,“会话” 选择5分钟“结束已断开的会话”,“空闲会话限制”设为6小时;“客户端设置/限制最大颜色深度”为15位(提升性能,官方文档说24位)。
管理员不要5分钟断开吧 -- 没法单独设置,干脆设为2天、4天。
编辑设置/授权/授权服务器,添加许可证服务器为自己。
安装 curl:
http://curl.haxx.se/download.html#Win64,下载 Win64 x86_64 CAB
解压后,将 AMD64 文件夹下的文件复制到 C:\Windows 文件夹下。
或者将 f2etest-client/curl 下的 exe 和 dll 文件复制进去。
安装周边软件:Flash等
访问 https://get2.adobe.com/cn/flashplayer 安装flash
更改系统更新设置:
不允许自动安装更新。
在 Win 上部署 f2etest-client
将 app 文件夹复制到 c 盘根目录下(配置在前面的 app.json 中的),
将需要的 bat 配置到 [管理工具/远程桌面服务/Remote App] 中:
如果是2008操作系统,添加时请选择:允许任何命令行参数
部署 www 下的 setuser.asp
复制到 c:\interpub\wwwroot 下,并修改:
apiKey 为前面 conf/site.json 中配置的 clientApiKey。
[管理工具 / IIS 管理器],点开 [网站 / Default Web Site],点击 [身份验证],右键编辑,[特定用户] IUSR 修改为 Administrator 并输入密码。
否则 setuser.asp 无法正确执行(没有权限创建用户或修改密码)
如果遇到iis服务器访问asp提示403错误,说明iis服务器安装asp.net服务没有安装完全。


防火墙高级设置:
将 HTTP 服务的作用域限制仅有 192.168.0.23 可以访问。
设置 wwwroot 文件夹的权限,拒绝普通用户的所有权限。
f2etest-client的www目录必需要设置为仅管理员有权限,否则任何人都可以查看到setuser.asp中的apiKey,会有严重的安全风险。
没有一个合适的组包含普通用户、但不包含admin,因此在系统中新增一个组 F2eTest,并且修改 setuser.asp,将用户添加到组中:
Set oGroup=oSystem.GetObject("Group","F2eTest")
oGroup.Add ("winnt://"&username)
在 Win 上部署 hostsShare-client
将 hostsShare-client 下的 build 文件夹命名为 hostsShare,放到服务器 f2etest-ie11(app.json中配置的) 的 C 盘根目录下。
将 C:\app\hostsshare.bat 添加到 [管理工具/远程桌面服务/Remote App] 中,并允许任何命令行参数。
下载 IE 并安装(或者通过操作系统自动更新来安装http://windows.microsoft.com/zh-cn/internet-explorer/ie-9-worldwide-languages --> IE9-Windows7-x64-chs.exe
http://windows.microsoft.com/zh-cn/internet-explorer/ie-11-worldwide-languages --> IE11-Windows6.1-x64-zh-cn.exe
IE 10 的官网找不到,可以从其他地方下载 --> IE10-Windows6.1-x64-zh-cn.exe
注意去掉IE的 关于 菜单中的 “自动安装新版本”

3. 集中说一下安装和配置windows server遇到的问题

问题1:安装windows后,启动IIS服务器,没有ASP.NET选项卡

windows server默认的.net framework版本是1.1的,需要升级到2.0才能有。

问题2:访问IIS中的asp文件,提示404找不到文件

第一步,配置Web服务扩展 
控制面板 -> 管理工具 ->服务和应用程序 ->Internet 信息服务(IIS)管理器 ->Web服务扩展 -> Active Server Pages -> 允许 -> Internet数据连接器 -> 允许。 
运行.NET程序也一样要启用 ASP.NETV2.0 
这里写图片描述

第二步,启用父路径支持和启用默认内容文档 
启用父路径支持: 
控制面板 -> 管理工具 ->服务和应用程序 ->Internet 信息服务(IIS)管理器 ->网站 ->默认网站 ->右键属性 ->主目录 ->配置 ->选项 ->打勾启用父路径。 
这里写图片描述 
启用默认内容文档: 
控制面板 -> 管理工具 ->服务和应用程序 ->Internet 信息服务(IIS)管理器 ->网站 ->默认网站 ->右键属性 ->文档 ->打勾启用默认内容文档 ->添加 ->输入:index.asp ->确定 -> 添加 ->输入:index.aspx ->确定。 
第三步,更改默认网站路径 
控制面板 -> 管理工具 ->Internet 信息服务(IIS)管理器 ->网站 ->默认网站 ->右键属性 ->主目录 ->本地路径(本地路径改为自己设置的网站目录) ->确定。
问题3:如下图所示

这里写图片描述 
确保client安装是ok的,然后asp.net升级到2.0, 
http://IP:3000/syncAllRemoteUsers同步账户没有问题。正确配置后应该显示如下: 
这里写图片描述

问题4:怎么确认f2etest-client安装成功了?

访问地址:http:/127.0.0.1/setuser.asp?username=test&password=hello123&key=xxx(请用site.json文件中设置的apikey替换xxx) 
返回ok即可。

问题5:Windows server2003无法修改最大连接数,默认最多2人

1、开始->控制面板->添加或删除程序->添加/删除windows组件->选择“终端服务器”进行安装

2、开始->运行->gpedit.msc,打开策略组编辑器,在树状菜单中选择计算机配置 ->管理模板 ->windows组件-》终端服务,在右侧窗口中打开“限制连接数量”,选择“已启用”,修改“TS允许的最大连接数”,确定。

问题6:如何设置www访问权限

用Administrator账户登录后,找到inetpub文件夹下的wwwroot目录,右键属性->安全,删掉users用户组,如下图: 
这里写图片描述

对于上文描述的过程,给出配图(图比较多

  • 关于【IIS的安装】: 
    点击添加角色
    选择IIS服务
    这里写图片描述 
    这里写图片描述 
    这里写图片描述 
    这里写图片描述 
    这里写图片描述

  • 关于【管理工具 / 服务器管理器 / 添加功能/Telnet 客户端】 
    这里写图片描述 
    这里写图片描述 
    这里写图片描述

  • 关于【IE ESC禁用】 
    这里写图片描述
  • 关于【管理工具 / 远程桌面服务 / 远程桌面授权管理器】 
    这里写图片描述 
    这里写图片描述 
    这里写图片描述
  • 关于 【管理工具 / 远程桌面服务 / 远程桌面会话主机配置】 
    这里写图片描述 
    这里写图片描述 
    这里写图片描述
  • 关于【RemoteAPP管理器】 
    这里写图片描述 
    这里写图片描述
  • 关于【网站 / Default Web Site/身份验证】 
    这里写图片描述
  • 关于【身份验证设置】 
    这里写图片描述
    这里写图片描述
  • 【本地开启fiddler访问3000地址出现的错误】 
    请使用系统自带的fiddler代理模式
  • 关于【初始化提示失败】 
    因为有时候初始化随机账户会失败,所以提示这样的,重新刷新浏览器即可 
    这里写图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值