我的server和agent都是在mac上搭建的,所以会和linux下有些不同
 
一、安装配置Apache和PHP
webpagetest需要使用PHP和Apache启动服务。mac默认安装了Apache和PHP,所以都不需要自己去安装了,下面只大概介绍一下配置
 
安装配置Apache
mac已默认安装了Apache2,不需要再自己安装了,安装路径【/etc/apache2】
查看Apache的安装版本【httpd -v】
 
启动Apache服务:sudo apachectl start
关闭Apache服务:sudo apachectl stop
重启Apache服务:sudo apachectl restart
 
访问浏览器,输入127.0.0.1,显示It works!证明启动成功
 
配置文件
httpd.conf文件:
DocumentRoot:网站根目录(默认/Library/WebServer/Documents),可以修改成自己的根目录
directoryindex:网站首页的默认文件,会按照配置的顺序去找文件,文件都在DocumentRoot配置的网站根目录下
<IfModule 模块名>xxx</IfModule>:只有当模块加载时,才执行它下面的指令
<FilesMatch 正则>xxx</FilesMatch>:匹配到对应正则的文件名时,会执行的指令
<VirtualHost ip:端口>DocumentRoot 路径</VirtualHost>:匹配到对应的ip和端口,会用指定的网站根目录
 
 
安装配置PHP
mac已经默认安装了PHP
查看php的安装版本【php -v】
 
配置PHP
编辑Apache的http.conf文件,将下面内容前面的#去掉,否则Apache不支持php,会将php文件的脚本直接显示出来
LoadModule php5_module libexec/apache2/libphp5.so
 
测试配置成功方法:
新建一个index.php,内容<?php phpinfo(); ?>,重启Apache,访问127.0.0.1/index.php能够看到php的信息页就算成功
 
二、下载并配置webpagetest
 
下载webpagetest
下载最新的release版本,目前最新版是2.19
 
(直接在git上下载文件也可以)
webpagetest分为server和client的agent两个端。server端为下载下来的www的文件夹,agent端为下载下来的agent文件夹
 
配置Apache去访问webpagetest的站点
1.将下载的webpagetest的www拷贝到Apache的根目录下:/Library/WebServer/Documents
2.修改Apache的http.conf文件
 
指定80端口的根目录DocumentRoot和对应的Directory,将目录名改为www的绝对路径
<Directory "/Library/WebServer/Documents/webpagetest ">
        AllowOverride all

        Order allow,deny

        Allow from all

</Directory>
<VirtualHost *:80>
        DocumentRoot /Library/WebServer/Documents/webpagetest
</VirtualHost>
 
修改网站首页的默认文件directoryindex
<IfModule dir_module>
    DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>
 
进入webpagetest下的settings目录,将所有的.sample文件名的.sample去掉
 
3.更改webpagetest站点的权限,支持可读可写【chmod 766 文件】
tmp、dat、results、work/jobs、work/video、logs
 
4.重启Apache,访问网址127.0.0.1,即可看到webpagetest的首页了
sudo apachectl restart
 
配置好后检查还有哪些项没有安装好:
http://localhost/install/
 
遇到的问题:
1.访问webpagetest提示403(you don’t have permission to access / on the server)
将webpagetest的www文件夹放到Apache原根目录下。默认Apache不允许访问外部的文件夹(同时确保所有用户有访问该文件夹的权限)
 
配置webpagetest的sever端
修改location.ini文件,该文件决定了webpagetest的server端支持的浏览器(包括真机),即下图server端可选的内容
[locations]  locatons下的是所有的location,default是默认值。多个location按照1、2、3进行编号
1=Test_PC
2=Test_Android
3=Test_ios
default=Test_PC
 
[Test_Android]
1=Android_Chrome
label="Android_Chrome_label"
[locations]
group=mobile
 
1.Test_Android为locations下的一个location,名字对应上即可。下面可以有多个Location,用1、2、3等数字编号。这是server端Test Location真正用到的内容。
2.agent通过wptdriver.sh启动时的—location参数值用某个数字编号后的location名,例如Test_Android下的Android_Chrome
3.label为server端Test Location中显示的内容,作为显示用
4.group为分组,多个location会找按照分组显示
 
[Test_PC] 
1=IE   
2=Chrome
3=Firefox
label=PC Locations
group=PC
 
[Test_ios]
1=ios_Chrome
label="ios_Chrome_label"
group=mobile
 
[IE]
browser=IE 8
label="PC- IE 8_label"
;relayServer="http://127.0.0.1/"
1.browser为浏览器,具体哪个关键词对应哪个浏览器server端有说明
2.label为server端的Browser显示的名字
 
[Chrome]
browser=chrome
label="PC-chrome_label"
;relayServer="http://127.0.0.1/"
 
[Firefox]
browser=firefox
label="PC-firefox_label"
;relayServer="http://127.0.0.1/"
 
[Android_Chrome]
browser=android
label="android-chrome_label"
;type=nodejs,mobile
connectivity="WIFI"
;relayServer="http://127.0.0.1/"
1.Android真机的需要注意一点,browser实际用的是chrome浏览器,但是这里要写android
2.真机需要用connectivity指定手机使用的网络
 
[ios_Chrome]
browser=ios
;label="ios-chrome_label"
type=nodejs.type,MOBILE
connectivity="WIFI"
;relayServer="http://127.0.0.1/"
1.ios真机的需要注意一点,browser实际用的是chrome浏览器,但是这里要写ios
2.真机需要用connectivity指定手机使用的网络
 
在server端具体展示效果如下图所示:
 
配置的一些点如下:
配置的locations默认都是隐藏的,只有有agent连接过来的时候才会显示出来。server端加参数hidden=1查看所有的locations
http://127.0.0.1/?hidden=1
 
包含下面的配置文件的才可以在server的界面上显示出来
relayServer="http://www.webpagetest.org/"
 
配置webpagetest的agent端
agent就是webpagetest下载下来目录中的agent的目录
1.修改后缀为.sample的文件名,将.sample去掉
2.需要OSX Yosemite(10.10),XCode
 
然后通过./wpttest.sh脚本启动agent,该脚本在webpagetest/agent/js目录下
通过【./wptdriver.sh —help】查看该脚本的具体参数
 
三、mobile配置
 
环境准备
前提:已经按照第一、第二步配置好了webpagetest的sever
就是we从github上下载的webpagetest,agent为需要的代理目录
 
PC环境准备
1.安装NodeJS【brew install node】
2.安装ImageMagick【brew install imagemagick】
3.安装ffmpeg【brew install ffmpeg】
4.安装python27的pillow【pip install pillow】
 
Android手机测试需要的条件:
需要在PC安装adb
手机需要root
手机需安装chrome浏览器
 
ios手机测试需要的条件
1.OSX10.10以上
2.安装XCode, 复制/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport放到wpt/agent/js/lib/ios/DeviceSupport
3.安装libimobiledevice【brew install libmobiledevice】
4.安装ios_webkit_debug_proxy【brew install ios-webkit-debug-proxy】
(mac需要对ios手机进行免登陆,具体操作步骤参考结尾处的问题2)
 
Android环境要求
1.Android系统要求KitKat4.4以上,手机Root
2.手机安装Chrome
3.在安全设置中禁用滑动解锁
4.开启开发者选项,允许调试
5.禁止屏幕待机和自动旋转
 
用数据线连接手机和PC,检察环境
adb devices:检查手机已连接上
adb shell su -c date:检查手机已root
adb shell netcfg|grep wlan:检查手机已联网
adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main -d http://yahoo.com:检查手机已安装chrome
 
ios环境要求
1.ios手机需要越狱
2.安装OpenSSH,创建ssh key,ssh-keygen -t rss -P ‘’,会默认在家目录下生成一个.ssh文件。
3.安装tcpdump
4.进制选择,开启web inspector(Settings->Safari->Advanced)
5.安装设备管理器
 
 
修改sever端的locations.ini
与server端配置类似,增加如下的locations

[locations]

1=Example

[Example]

1=Example_Nexus4

label="Example"

[Example_Nexus4]
browser=android

label="Nexus 4"

type=nodejs,mobile

connectivity="WiFi"
relayServer="http://www.webpagetest.org/"
 
上面例子中的location为Example,Browse为Android真机的chrome,agent真机启动时—location用Example_Nexus4
具体参数配置参考上面的server端配置
 
启动agent
 
进入webpagetest/agent/js
1.通过下面命令启动Android真机的chrome:
/wptdriver.sh -m debug --browser android:1d543708 --serverUrl http://127.0.0.1 --location Android_Chrome --chromePackage com.android.chrome --processvideo no
1.第一个红色部分为Android手机的devices id,通过adb devices可以获得
2.第二个红色部分为webpagetest的server端的ip地址
3.第三个红色部分为location的名字,具体按照webpagetest的server端配置那里讲的找
 
2.通过下面的命令启动ios真机的chrome:
./wptdriver.sh -m debug --browser ios:4690c9557d198520e86af8fac5b7903b43964a04 --serverUrl http://127.0.0.1 --location Local-iOS --processvideo no
第一个红色部分为ios的UDID,其他两个是server地址和location的名字
 
遇到的问题
问题1.启动Android的mobile的agent时报错:
wpt_client.js:497 Client.onUncaughtException_ : Unhandled exception in the client: Error: Unexpected 'su' output: [-] Execute command failed
 
在命令行下单独执行执行命令adb -s 1d543708 shell su -c 'echo x’也报错[-] Execute command failed,说明mac下不支持这种语法
 
解决方法:
mac上不支持【adb -s 1d543708 shell su -c 'echo x'】,需要用语法【adb -s 1d543708 shell su -c '"echo x"'】
 
修改agent/js/src/adb.js文件,将141行的【this.shell(['su', '-c', 'echo x']).then(function(stdout) {】改为【this.shell(['su', '-c', '"echo x"']).then(function(stdout) {】
 
问题2.启动iOS的mobile的agent时一直提示登录
解决方法:将mac的ssh公钥放到ios手机上,实现免登陆
免登陆步骤如下:
1.mac生成ssh,文件目录在~/.ssh下
2.将mac的【~/.ssh/id_rsa.pub】公钥内容放到iOS手机内的~/.ssh/authorized_keys里
可以通过【echo 公钥内容 >> ~/.ssh/authorized_keys】进行追加,如果要多个电脑实现免登陆直接在authorized_keys下追加即可
*通过【ssh root@10.252.167.74(iOS手机ip)】访问ios手机
 

三、测试结果查询
 
结果和日志都存放在webpagetest站点下
 
 
result的存储位置:./webpagetest/results/
在results下的存储路径:年份后两位/月份/日/
 
log的存储位置:./webpagetest/logs
log格式:日期.log(例20161012.log)
 

mac下webpagetest搭建的更多相关文章

  1. Mac下docker搭建lnmp环境 + redis + elasticsearch

    之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...

  2. mac下的搭建本地discuz论坛

    本地是php+mysql+apache的环境.也可以用xampp一键安装的东西,那个貌似比较省事.因为我的本地php环境已经装好了,就直接下了discuz的代码安装. 打开web共享 将discuz代 ...

  3. caffe之mac下环境搭建

    参考 http://www.linuxidc.com/Linux/2016-09/135026.html 1. 安装brew,也叫homebrew,mac下类似于ubuntu的apt-get功能 cu ...

  4. Mac下docker搭建lamp本地开发环境

    1.先在Mac上下载docker:官网下载:下载地址(选择mac版本下载,可能速度较慢) DaoCloud下载:下载地址(速度较快,可能版本较低) 2.装完之后打开: 3.检查一下是否下载成功: $  ...

  5. iOS开发--Mac下server搭建

    前言 对于Mac电脑的认识.我一直停留在装B神器的意识上.就在前两天我彻底改变了庸俗的看法,当时忙着写毕业设计.苦于iOS开发没有server, 数据都是从网上抓取或本地plist文件,感觉不够高大上 ...

  6. Mac下快速搭建PHP开发环境

    最近做了一个后端的项目,是用PHP+MySQL+Nginx做的,所以把搭建环境的方法简单总结一下. 备注: 物料:Apache/Nginx+PHP+MySQL+MAMP Mac OS 10.12.1 ...

  7. mac下nginx搭建

    首先使用brew安装nginx brew install nginx 安装完毕后,如果我们要使用nginx监听本地的80端口,需要改掉mac自带的apache占用的80端口 sudo vim /etc ...

  8. mac下 cordova 搭建

    最近遇到一个cordova搭建的项目,于是看了看如何搭建这个.  这个其实 和 phoneGap 差不多,都是为了方便html跨平台才产生的产物.  cordova  也可以生成  iOS  和 安卓 ...

  9. mac下如何搭建python开发环境

    1. 安装brew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/insta ...

随机推荐

  1. boost asio tcp server 拆分

    从官方给出的示例中对于 boost::asio::ip::tcp::acceptor 类的使用,是直接使用构造函数进行构造对象,这一种方法用来学习是一个不错的方式. 但是要用它来做项目却是不能够满足我 ...

  2. VS2013各个版本秘钥

    Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥) ...

  3. *按类的某一字段排序(Lv)

    给定一个student类,类中有两个属性ID,Score.对一组student类对象排序,写出方法.

  4. Hive On Spark概述

    Hive现有支持的执行引擎有mr和tez,默认的执行引擎是mr,Hive On Spark的目的是添加一个spark的执行引擎,让hive能跑在spark之上: 在执行hive ql脚本之前指定执行引 ...

  5. sql2008r 收缩数据库日志log文件;删除errorlog文件的方法

    1.清空log文件,以减少数据库文件log所占的空间 USE dbname1 ; GO ALTER DATABASE dbname1 SET RECOVERY SIMPLE;--设置简单恢复模式 GO ...

  6. 在MyBook Live上部署svn

    一直以来都在用svn管理源代码,美中不足的是由于svn服务器端部署在本地,无法实现在异地迁入迁出程序,因此考虑将svn服务器部署在我的MyBook Live上. 一.部署svn 1.分别执行以下2条命 ...

  7. 使用 Google Web Fonts

    Google Fonts 的介绍:Google Fonts 并不是简单的字体下载站 Google Fonts 地址:https://www.google.com/fonts 左上角可以输入查找的字体名 ...

  8. 使用localResizeIMG微信压缩上传图片安卓报错 weixin://preInjectJSBridge/fail

    微信上传图片是经常使用的功能,首先说一下使用的是:localResizeIMG进行图片压缩上传.感觉还是很好用,基本上功能都能满足. 但是最近在开发这个功能时遇到一个奇怪的问题,就是iphone|ip ...

  9. VI 命令 gg 跳到第一行,dG 删除后面的所有内容

    VI 命令 gg 跳到第一行,dG 删除后面的所有内容

  10. jira的使用

    http://www.cnblogs.com/yangxia-test/p/4448002.html linux下的安装: http://blog.csdn.net/crave_shy/article ...