https://www.jianshu.com/p/83bd6b3473ae

介绍

webpagetest 是一款开源的 web 性能测试工具,开源地址,每个人都可在其公共实例上对自己的 web 应用进行性能测试(web应用必须提供公网IP或域名)

 
wpt001.png

具体的使用方法、参数设置,可自行查阅相关资料

虽然,我们可以通过公共实例对 Web 应用进行性能测试,但是公共实例在全球安装的探针(agent)有事并不能完全满足我们的要求,此时就需要我们在本地搭建一个webpagetest 私有实例。

安装过程

下面对webpagetest 私有部署的过程进行一个详细描述。webpagetest安装分为两部分:server 端和 agent 端

Server 安装

环境信息

阿里云ESC(OS: centos7, 2C2G)

Apache 安装

通过工具远程登录 ESC,安装 apache 服务(apache 在centos中也叫作 httpd)

yum install httpd httpd-devel -y

安装完成后,可通过 systemctl start httpd 命令启动 httpd 服务,本地浏览器通过 ESC公网IP 访问,如果看到如下及说明 apache 安装成功

 
wpt002.png

Apache默认安装路径信息
网站的根目录:/var/www/html
主配置文件:/etc/httpd/conf/httpd.conf
模块路径:/usr/sbin/apachectl

php7.2 安装

  • 安装命令(按顺序执行即可)

# 安装epel源
yum install epel-release # 安装 remi 源
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm yum update rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm # 安装 php7.2w 及相关模块
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml php72w-pecl-apcu php-pecl-zip
php-devel php-pear # 添加了动态库文件so
yum install mod_php72w
  • 修改配置信息

php配置文件路径: /etc/php.ini

在配置文件中,主要替换四个配置项:

参数 原始值 修改值
cgi.fix_pathinfo 1 0
memory_limit 128M 256M
post_max_size 8M 10M
upload_max_filesize 2M 10M

如果安装的是php72,那配置文件的路径就是在/etc/opt/remi/php72,可看如下链接:
https://www.cnblogs.com/GarfieldTom/p/11439429.html

  • 修改 apache 配置信息

修改配置文件,主要目的:

  1. 支持php
  2. 修改默认web目录

apache配置文件路径:/etc/httpd/conf/httpd.conf

位置(行) 操作 内容 说明
56 添加 LoadModule php7_module /usr/lib64/httpd/modules/libphp7.so 添加 libphp7.so 动态库文件,可通过 find / -name libphp*.so 命令查找位置
67 修改 User apache --> User <your_user_name> your_user_name,系统中实际存在的用户,不能使用root;因为安装apache 时已经创建了用户 apache 和 用户组 apache,此时可不进行修改
68 修改 Group apache --> Group <your_user_group> User 选项指定用户所属的用户组
96 修改 ServerName www.example.com:80 --> ServerName 0.0.0.0:80 取消注释
121 修改 DocumentRoot "/var/www/html" --> DocumentRoot "/var/<your__dir>/www" <your_dir>此处路径可自行确定,如我创建了一个新目录 webpagetest, 即:/var/webpagetest/www
127 修改 <Directory "/var/www/html"> --> <Directory "/var/<your__dir>/www"> <your_dir> 含义如上;134行做同样的修改
154 修改 AllowOverride None --> AllowOverride All  
167 修改 <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> 加入对 php 文件的解析
288 增加 AddType application/x-httpd-php .php ; AddType application/x-httpd-php-source .phps 注意分号,内容要分行

如上描述对 apache 配置文件完成修改后,进行如下验证


# 检查配置文件语法规则
apachectl -t # 重新加载配置文件
apachectl graceful # 重启 apache 服务
systemctl restart httpd

server 安装

在 github 下载 webpagetest 的安装文件。关于 webpagetest 的版本信息要做如下说明

阶段 版本 说明
第一阶段 webpagetest 3.0 之前的版本 整个安装文件的结构简单:www(服务端)、agent(探针)、mobile(移动测试相关)
第二阶段 webpagetest 18.10 之前 版本以年-月的形式进行命名;安装文件的目录结构调整很大,agent目录中的内容基本上第一阶段版本都不一致
第三阶段 webpagetest 19.04 之后 agent 从安装文件中独立出来,有个专门的github仓库,并命名为 wptagent

webpagetest 服务端和探针,不一定非要版本匹配进行安装,18.10 版本的服务端可以 webpagetest3.0 的 agent 进行匹配安装

在github中下载 webpagetest-18.10.zip ,加压后,通过第三方工具将解压后文件夹的 www 文件夹,整体替换到 /var/webpagetest 中(apache 的 web 目录,根据自己的情况而定,就是 apahce 配置文件的 121 行替换内容)

 
wpt003.png

通过浏览器,访问ESC 公网IP,可以看到 wpt (webpagetest) 的服务端页面

 
wpt004.png

如果能显示上面的截图,说明sever的安装成功了一半,剩下的另一半就要根据页面(<ECS_IP>/install)的提示安装必要的依赖

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

# 安装 ffmpeg
yum install ffmpeg ffmpeg-devel -y yum install -y libjpeg* libpng* libtiff* libungif* freetype zlib # 安装 imageMagick
yum install ImageMagick -y # 安装 exiftool
yum install perl-Image-ExifTool -y # 安装 pillow ssim(pyssim)模块
pip install Pillow pyssim pip install psutil monotonic ujson yum install Xvfb

上述命令按顺序执行即可

缺少的依赖安装过完成后,在根据提示修改/var/webpagetest/www 下项目文件夹的读写权限,简单起见都调整 777

重启apache服务(systemctl restart httpd),即可看到如下效果(在浏览器中访问:<ECS_IP>/install)

 
wpt005.png

Agent 安装

环境信息

阿里云ESC(OS: windows 10, 2C2G)

agent

提前说明,这里安装的 agent 是 webpagetest3.0 中的 agent,并非 webpagetest-18.10 中配套的 agent (因为版本配套 agent 安装后,不能进行测试,应该是自己的配置问题)

在 ECS 中安装必要的浏览器,建议安装 chrome 和 Firefox,下载安装程序默认安装就行

chrome 的版本不能太高,版本过高会导致测试时数据显示不完全

  • locations.ini 配置信息修改

在配置 agent 之前,我们需要先在 server 端配置 locations.ini 信息 (/var/webpagetest/www/settings)

 
wpt006.png

将 locations.ini.sample 拷贝一份,去掉.sample 后缀,通过 vim 命令就行修改

; # Test Location 中的选项
; key 不能重复,如 1、2、3....
; value 对应的地点名称,名称不要重复
; default 的 value 默认地点名 [locations]
1=cn_bj
2=cn_sh
default=cn_bj ; # locations 中每个 value 都对应这里的个 section
; key 表示多个地点
; value 表示浏览器节点名(不建议直接用浏览器名,以免多个地点的浏览器名重复)
; label 表示地点的标签名(对应 WebPageTest 首页 Test Location 下拉框中每个组下的选项)
; group 对地点进行分组(对应 WebPageTest 首页 Test Location 下拉框中的组) [cn_bj]
1=Bro_bj
2=IE9_bj
label="中国 北京"
group=Desktop [cn_sh]
1=Bro_sh
2=IE9_sh
label=“中国 上海”
group=Desktop ; 浏览器详情项 每个浏览器节点 对应一个 section
; brower 浏览器名 同一个浏览器节点下不得重复(对应 WebPageTest 首页 Browser 下拉框中的选项)
; lable 随意,不要和其他 label 重复就行 [Bro_bj]
browser=Firefox,Chrome
label=“中国 北京“ [IE9_bj]
browser=IE 9
label=“中国 北京” [Bro_sh]
browser=Firefox,Chrome
label=“中国 上海“ [IE9_sh]
browser=IE 9
label=“中国 上海”

以上配置文件中,配置了两个 Test Location: cn_bj 和 cn_sh
每个 Test Location,配置了两个浏览器节名 Bro_bj / IE9_bj 和 Bro_sh / IE9_sh
其中Bro_xx 浏览器节,指定了2个浏览器: Chrome、Firefox

  • agent.ini 配置信息修改

agent 的目录结构

 
wpt007.png

将 wptdriver.ini.sample 复制一份,去掉 .sample 后缀,编辑

[WebPagetest]
; url: server 端地址 ( 运行 server 公网 IP )
url=http://123.55.89.70/
; locations.ini 中定义的浏览器节点
location=Bro_bj,IE9_bj,Bro_sh,IE9_sh
; 浏览器名
browser=chrome, Firefox
Time Limit=120
;key=TestKey123
;Automatically install and update support software (Flash, Silverlight, etc)
;software=http://www.webpagetest.org/installers/software.dat [chrome]
; exe 指定 chrome 安装路径
exe="C:\Program Files\Google\Chrome\Application\chrome.exe"
options='--load-extension="%WPTDIR%\extension" --user-data-dir="%PROFILE%" --no-proxy-server'
installer=http://www.webpagetest.org/installers/browsers/chrome.dat [Firefox]
; exe: Firefox 安装路径
exe="C:\Program Files\Mozilla Firefox\firefox.exe"
options='-profile "%PROFILE%" -no-remote'
installer=http://www.webpagetest.org/installers/browsers/firefox.dat
template=firefox ; [Safari]
; exe="C:\Program Files\Safari\Safari.exe" [IE]
exe="C:\Program Files\Internet Explorer\iexplore.exe"

调整完成后,启动 agent,运行 wptdriver.exe

重启 server 端 httpd 服务

重启效果如下:

 
wpt008.png

server 连接到 agent,后续就可以进行 web 应用功能测试

 
wpt009.png

[转帖]webpagetest 私有化部署的更多相关文章

  1. Docker技术浅谈:私有化部署的优势以及在顶象内部的应用实践

    顶象全景式业务安全风控体系基于新一代风控体系构建,并采用Docker技术进行私有云和公有云部署.本文主要和大家分享下Docker容器技术和顶象风控系统私有化部署的优势以及Docker容器技术在顶象内部 ...

  2. Spire.Cloud 私有化部署教程(二)- Ubuntu 18.04 系统

    本教程主要介绍如何在Ubuntu 18.04系统上实现Spire.Cloud私有化部署.CentOS 7系统部署请参考 这篇教程. 详细步骤如下: 一.环境配置 1.关闭防火墙 1)首先查看防火墙状态 ...

  3. Spire.Cloud 私有化部署教程(一) - CentOS 7 系统

    Spire.Cloud支持的Linux服务器系统包括CentOS和Ubuntu(推荐使用CentOS 7和Ubuntu 18版本),本教程主要介绍如何在CentOS 7系统上实现Spire.Cloud ...

  4. .net core 和 WPF 开发升讯威在线客服系统【私有化部署免费版】发布

    希望 .net 和 WPF 技术时至今日,还能有一些存在感. 这个项目源于2015年前后,当时开发的初版,我使用了 ASP.NET MVC 做为后端,数据库使用原生 ADO.NET 进行操作.WPF ...

  5. 10分钟学会VS NuGet包私有化部署

    前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(ne ...

  6. Spire.Cloud 私有化部署教程(三) - Windows 系统

    本教程主要介绍如何在 Windows 系统上实现 Spire.Cloud 私有化部署. 详细步骤如下: 一.安装依赖 我们的私有部署的依赖有 Nodejs.MySQL.Redis 和 RabbitMQ ...

  7. Twikoo私有化部署教程--迁移腾讯云

    目录 备份数据 私有化部署 创建容器 导入数据 重新配置twikoo面板设置 引入前端CDN Nginx https反代http 作者:小牛呼噜噜 | https://xiaoniuhululu.co ...

  8. GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署

    预期目标 源代码管理 借助GitLab实现源代码托管,私有化部署版本,创建项目,创建用户组,分配权限,项目的签入/牵出等. 自动化部署 源代码产生变更时(如签入),自动化编译并发布到指定服务器中部署, ...

  9. 还原火山引擎 A/B 测试产品——DataTester 私有化部署实践经验

      作为一款面向ToB市场的产品--火山引擎A/B测试(DataTester)为了满足客户对数据安全.合规问题等需求,探索私有化部署是产品无法绕开的一条路.   在面向ToB客户私有化的实际落地中,火 ...

  10. [转帖]Kubernetes的部署策略

    Kubernetes的部署策略,你常用哪种? https://www.sohu.com/a/318731931_100159565?spm=smpc.author.fd-d.78.1574127778 ...

随机推荐

  1. C#有望成为2023年的编程语言之王

    前言 TIOBE 2023年12月编程语言指数头条新闻:C#有望成为2023年的编程语言之王. TIOBE是什么? 访问地址:https://www.tiobe.com/tiobe-index/ TI ...

  2. vue获取公网ip

    <template> <div> <div>Your Public IP: {{publicIP}}</div> </div> </t ...

  3. kylin&CDH理论基础

    Kylin&CDH理论基础 一.维度与度量 维度是观察数据的角度.比如电商的销售数据,可以从时间维度来观察,进一步细化时间和地区维度来观察. 度量是被聚合的统计值,也是聚合运算的结果.知道维度 ...

  4. Windows下编译64位CGAL

    目录 1. 准备 2. CMake构建 1. 准备 CGAL的官网准备了压缩包和安装程序两种类型的的源代码,推荐使用安装程序包,因为其中自带了编译好的gmp和mpfr库.gmp和mpfr是CGAL的依 ...

  5. 如何应对Spark-Redis行海量数据插入、查询作业时碰到的问题

    摘要:由于redis是基于内存的数据库,稳定性并不是很高,尤其是standalone模式下的redis.于是工作中在使用Spark-Redis时也会碰到很多问题,尤其是执行海量数据插入与查询的场景中. ...

  6. 如何对APP进行安全加固

    ​ 如何对APP进行安全加固 引言 如今,移动应用市场蓬勃发展,APP数量呈现爆炸性增长.随着5G技术的广泛应用,APP的增长趋势持续增强.然而,由于APP的泛滥,网络攻击者的目标也在逐渐转移,数亿的 ...

  7. bat cmd 无效参数/选项 - deleting

    Window bat expdp 数据库定时任务逻辑备份数据库 定时删除N天前的旧文件 Linux shell crontab expdp 定时任务逻辑备份数据库 定时删除旧文件 错误配置 forfi ...

  8. MySQL 恢复误删除数据

    如图:我们将删除 id=2的数据,并恢复 SHOW BINARY LOGS; You are not using binary logging show binlog events in 'mysql ...

  9. CJ88 DUMP The ASSERT condition was violated

    一.CJ88运行某个项目时DUMP,其他项目正常 The ASSERT condition was violated. 源代码位置为交易货币为空导致DUMP 经过长时间的源码调试,也只定位在查询语句这 ...

  10. .net 温故知新【17】:Asp.Net Core WebAPI 中间件

    一.前言 到这篇文章为止,关于.NET "温故知新"系列的基础知识就完结了,从这一系列的系统回顾和再学习,对于.NET core.ASP.NET CORE又有了一个新的认识. 不光 ...