如何在Ubuntu 14.04上设置XHProf和XHGui以分析PHP应用程序

Posted by

介绍

在软件工程中,分析是一种用于在运行时分析应用程序的技术,以便识别应用程序中可能存在的瓶颈和性能问题。它是软件优化的重要资源。分析与基准测试不同,因为它在代码级别分析应用程序,而基准测试旨在分析最终用户所体验的整体应用程序性能。

一个分析器是将收集有关应用程序的详细信息,以便生成统计信息和内存占用率,频率和函数调用的持续时间,时间有见地的数据来响应请求,除其他事项外软件。

XHProf是一个用于分析PHP应用程序的分析器。XHProf由Facebook创建和开源,作为被动分析器,这意味着它将在后台工作,同时对应用程序的性能影响最小,使其适合在生产环境中使用。

XHGui提供了丰富的界面,用于可视化通过XHProf收集的数据。

本教程将向您展示如何安装XHProf和XHGui以分析在Ubuntu 14.04上运行的PHP应用程序。

XHProf目前不支持PHP 7.如果您在服务器上使用PHP 7,则可以尝试使用tideways / php-profiler-extension,它可以作为XHProf的替代品。

先决条件

要遵循本指南,您需要:

  • 具有非root sudo用户的Ubuntu 14.04服务器,您可以按照我们的初始服务器设置指南进行设置
  • 运行将要分析的PHP应用程序的功能性PHP Web服务器环境

当您准备好继续前进时,请使用您的sudo帐户登录您的服务器。

步骤1 – 安装服务器依赖项

如果您在服务器上没有安装pecl,则应立即安装它。我们需要它来同时设置xhprofmongo扩展PHP扩展。

首先,使用以下命令更新包管理器缓存:

$ sudo apt-get update

接下来,我们将安装peclphp-pear包。我们还需要php5-dev通过安装PHP模块pecl,并php5-mcrypt设置XHGui:

$ sudo apt-get install php-pear php5-dev php5-mcrypt

要启用mcrypt扩展,请运行:

$ sudo php5enmod mcrypt

最后,我们需要Git来安装XHGui。如果您的服务器上尚未安装Git,您现在可以使用以下命令安装:

$ sudo apt-get install git

第2步 – 安装XHProf

现在我们应该安装并启用XHProf。

要通过它安装pecl,请运行:

$ sudo pecl install xhprof-beta

接下来,我们需要激活xhprof扩展。为了在保持Ubuntu / Debian标准的同时促进此过程,我们将创建一个单独的ini配置文件并使用该命令启用它php5enmod

ini在里面创建一个新的配置文件/etc/php5/mods-available

$ sudo nano /etc/php5/mods-available/xhprof.ini

在此文件中包含以下内容:

/etc/php5/mods-available/xhprof.ini

extension=xhprof.so

要启用模块配置文件,请运行:

$ sudo php5enmod xhprof

现在唯一要做的就是重新启动Web服务器以应用更改。在LAMP环境(Apache)上,您可以执行以下操作:

$ sudo service apache2 restart

LEMP环境(Nginx + PHP5-FPM)上,您应该使用以下命令重新启动php5-fpm服务:

$ sudo service php5-fpm restart

xhprof扩展现在应该安装并激活。要确认,您可以运行:

$ php --ri xhprof

输出应该类似于:

Output
xhprof

xhprof => 0.9.2
CPU num => 1

第3步 – 安装MongoDB

下一步是mongo在服务器上安装MongoDB和PHP扩展。XHGui使用MongoDB来存储通过XHProf的应用程序分析获得的数据。

要安装MongoDB,请运行:

$ sudo apt-get install mongodb

要安装MongoDB PHP扩展,请运行:

$ sudo pecl install mongo

安装将在某个时候询问您的输入,以选择是否要为MongoDB启用企业身份验证。您可以保留默认值(no),然后按Enter继续安装。

现在我们需要激活mongoPHP扩展,遵循我们用于xhprof扩展的相同过程。在以下位置创建新配置文件/etc/php5/mods-available/mongo.ini

在文件中包含以下内容:

$ sudo nano /etc/php5/mods-available/mongo.ini

/etc/php5/mods-available/mongo.ini

extension=mongo.so

要启用模块配置文件,请运行:

sudo php5enmod mongo

现在重新启动Web服务器以应用更改。在LAMP环境(Apache)上,您可以执行以下操作:

$ sudo service apache2 restart

LEMP环境(Nginx + PHP5-FPM)上,您应该使用以下命令重新启动php5-fpm服务:

 $ sudo service php5-fpm restart

mongo扩展现在应该安装并激活。要确认,您可以运行:

$ php --ri mongo

输出应该类似于:

Outputmongo

MongoDB Support => enabled
Version => 1.6.12
Streams Support => enabled
SSL Support => enabled
                   Supported Authentication Mechanisms                   
MONGODB-CR => enabled
SCRAM-SHA-1 => enabled
MONGODB-X509 => enabled
GSSAPI (Kerberos) => disabled
PLAIN => disabled
...

第4步 – 设置MongoDB索引(可选)

这是一个可选但推荐的步骤,可以在存储和访问MongoDB数据时提高XHGui的整体性能。

通过命令行访问MongoDB客户端:

$ mongo

第5步 – 安装XHGui

下一步是安装XHGui并将其设置为Web服务器上的虚拟主机。

我们将从Github克隆XHGui存储库开始。因为我们需要将XHGui的内容作为Web服务器上的虚拟主机提供,我们将把克隆的存储库放在里面/var/www。建议您将XHGui目录设置为由普通用户拥有。在此示例中,我们将使用sammy用户名和组,但您应该使用您自己的用户名和组替换这些值。

添加用户密码均为:sammy

sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$ sudo adduser sammy
Adding user `sammy' ...
Adding new group `sammy' (1002) ...
Adding new user `sammy' (1002) with group `sammy' ...
Creating home directory `/home/sammy' ...
sun@iZwz99xibtof6c8lod50rhZ:/$ sudo mkdir -p /var/www/html/xhgui
[sudo] password for sun:
sun@iZwz99xibtof6c8lod50rhZ:/$ cd /var/www/html/
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$ sudo git clone https://github.com/perftools/xhgui.git xhgui
Cloning into 'xhgui'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 5430 (delta 6), reused 8 (delta 4), pack-reused 5410
Receiving objects: 100% (5430/5430), 1.35 MiB | 735.00 KiB/s, done.
Resolving deltas: 100% (3043/3043), done.
Checking connectivity... done.
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$       

要安装XHGui的依赖项,请执行包含的安装程序:

cd xhgui
php install.php

sun@iZwz99xibtof6c8lod50rhZ:/var/www/html/xhgui$ sudo php install.php
Downloading composer.
All settings correct for using Composer
Downloading...

Composer (version 1.8.6) successfully installed to: /var/www/html/xhgui/composer.phar
Use it: php composer.phar


Installing dependencies.
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$ sudo chmod -R 777 xhgui/
[sudo] password for sun:
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$ cd xhgui/
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html/xhgui$ sudo php install.php
Composer already installed.
Installing dependencies.

成功安装依赖项后,我们需要配置虚拟主机来提供内容xhgui。接下来的部分将介绍如何xhgui在LAMP和LEMP环境中创建虚拟主机。

在LAMP上设置XHGui的虚拟主机

使用Apache作为Web服务器时,我们首先需要确保mod_rewrite已启用。要启用它,请运行:

sudo a2enmod rewrite
在以下位置创建新的虚拟主机文件
/etc/apache2/sites-available
$ sudo nano /etc/apache2/sites-available/x