https://hub.docker.com/r/sroze/tideways
https://github.com/sroze/dockerfiles/tree/master/tideways
https://blog.it2048.cn/article-tideways-xhgui/
两种方式:
- Nginx 指定入口脚本
- 开放端口,在插件里指定 tcp 连接
步骤
- 安装 MongoDB
- 安装 PHP tideways 模块并配置
- 安装 PHP MongoDB 模块并配置
- 安装 Xhgui
- Nginx 配置将性能分析脚本附加到执行
- Nginx 配置 Xhgui 网页访问
安装 PHP 源
https://rpms.remirepo.net/wizard/
1
2
3
4
5
| yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y yum-utils
yum-config-manager --enable remi-php73
yum makecache fast
|
如果发现其他 repo 被关闭了。先执行 yum repolist all
,看要开启哪些。然后执行 yum-config-manager --enable xxx
。
安装 PHP tideways 模块并配置
1
2
3
4
5
6
7
8
9
10
| yum install -y php-devel
cd /tmp
curl -o xhprof.zip -L https://github.com/tideways/php-xhprof-extension/archive/master.zip
unzip xhprof.zip
cd php-xhprof-extension-master
phpize
./configure
make && make install
|
安装 PHP MongoDB 模块并配置
安装 MongoDB 模块:
yum install php-mongodb -y
不需要额外配置
安装 Xhgui
1
2
3
4
5
6
| cd /tmp
curl -o xhgui.zip -L https://github.com/laynefyc/xhgui-branch/archive/master.zip
unzip -d / xhgui.zip
cd /xhgui-branch-master
php install.php
|
如果有问题,用 composer 安装 alcaeus/mongo-php-adapter
。
Nginx 配置将性能分析脚本附加到执行
将这一句加到 server 块:
1
| fastcgi_param PHP_VALUE "auto_prepend_file=/xhgui-branch-master/external/header.php";
|
Nginx 配置 Xhgui 网页访问
xhgui.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| server {
listen 80;
server_name xhgui.mydomain.net;
root /xhgui-branch-master/webroot;
location / {
index index.php;
if (!-e $request_filename) {
rewrite . /index.php last;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
|
初始化 mongo
1
2
3
4
5
6
| use xhprof
db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )
db.results.ensureIndex( { 'profile.main().wt' : -1 } )
db.results.ensureIndex( { 'profile.main().mu' : -1 } )
db.results.ensureIndex( { 'profile.main().cpu' : -1 } )
db.results.ensureIndex( { 'meta.url' : 1 } )
|