美高梅官方网站3045-mgm6608美高梅app下载
Mac超快速搭建Nginx、PHP、PHPStorm、XDebug环境

Mac超快速搭建Nginx、PHP、PHPStorm、XDebug环境

作者:mgm6608美高梅app下载    来源:未知    发布时间:2020-02-10 09:21    浏览量:

1.简介

当我们发现生产环境的某个接口执行时间特别长时应该怎么做?直接登录线上机器单步调试?打大量的log然后分析? 一般我们可以把分析流程拆分为如下几步操作:

1.分析开发环境下执行是否会慢;如果是代码问题,在开发环境下就能检测出来;2.分析预发环境执行是否会慢;如果是数据库或者第三方扩展问题,在预发环境就能检查出来。3.从生产环境摘一台机器,分析代码执行慢的原因;如果是机器的问题,在生产环境就能检查出来。

如果按照以上步骤排查问题、耗时、耗体、耗心情。

  1. 以php7.1为例,执行:curl -s | bash -s 7.1(去这个链接下找自己想要下载的php版本
  2. 安装结束后,/usr/local/php5目录下即刚刚install的php
  3. 此时在终端中输入php -v 显示的还是老的版本,可以将这个新的PHP路径追加到$path中。

2.环境搭建

1.docker+mongodb:用来存储产生的分析数据2.tideways扩展3.安装xhgui:用来展示相应数据4.利用PHP内部服务器测试5.配置nginx6.插入到php文件中

1.docker+mongodb

docker环境的搭建自行百度。

下载镜像

docker pull registry.docker-cn.com/library/mongo

执行sudo docker images 显示,说明镜像已经安装成功

registry.docker-cn.com/library/mongo latest eeeeee 3 weeks ago 393.3 MB

创建本地数据文件夹

/data1/mongodb

创建并启动mongodb容器

docker run --name mymongodb =v /data1/mongodb:/data1/mongodb --net=host -d 镜像id --auth

执行命令 sudo docker ps

ddsdfdsfsd e21e0711c3d2:latest "docker-entrypoint.s 2 days ago Up 2 days mymongodb

测试一下

sudo docker exec -it mymongodb bashmongo

MongoDB shell version v4.0.5connecting to: mongodb:Implicit session: session { ) }MongoDB server version: 4.0.5>

将mongodb加入php.ini

到这里说明mongodb已经安装成功,端口默认为27017

vi ~/.profile在文件中增加以下一行export PATH=/usr/local/php5/bin:/usr/local/php5/sbin:$PATH执行下面的命令使改动立即生效source ~/.profile
1.安装tideways扩展

下载安装包:

wget -Otideways-php.tar.gz "https://s3-eu-west-1.amazonaws.com/tideways/extension/4.1.5/tideways-php-4.1.5-x86_64.tar.gz"

安装扩展:

tar xzvf tideways-php.tar.gzcd tideways-phpbash install.sh

将tideways扩展 加入php.ini

  1. 此时运行php -v,已经是刚刚安装的7.1版本
2.xhgui

安装过程

git clone https://github.com/laynefyc/xhgui-branch.gitcd xhgui-branchcomposer updatecomposer install

修改MongoDB的连接ip和域名,路径如下:xhgui-branch/config/config.default.php

// Can be either mongodb or file. /* 'save.handler' => 'file', 'save.handler.filename' => dirname . '/cache/' . 'xhgui.data.' . microtime . '_' . substr, 0, 6), */ 'save.handler' => 'mongodb', // Needed for file save handler. Beware of file locking. You can adujst this file path // to reduce locking problems (eg uniqid, time ...) //'save.handler.filename' => __DIR__.'/../data/xhgui_'.date.'.dat', 'db.host' => 'mongodb://127.0.0.1:27017', // 地址 'db.db' => 'xhprof', // 数据库名称

创建mongodb数据库、并优化索引

$ mongo> 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 } )
3. 利用PHP内置服务器测试

移动到xhgui-branch目录下的webroot目录

php -S 0.0.0.0:8888

图片 1image.png

说明执行成功

PHP 7.1.13  (built: Feb 1 2018 13:38:42) Copyright  1997-2017 The PHP GroupZend Engine v3.1.0, Copyright  1998-2017 Zend Technologies with Zend OPcache v7.1.13, Copyright  1999-2017, by Zend Technologies with Xdebug v2.6.0, Copyright  2002-2018, by Derick Rethans
4. 配置nginx
server { listen 80 ; root /xhgui-branch/webroot; server_name www.tuzisir.com; fastcgi_param PHP_VALUE auto_prepend_file= /xhgui-branch/external/header.php; # 所有执行此域名都会被收集 location / { index index.php; if (!-e $request_filename) { rewrite . /index.php last; } } location ~ .php$ { set $script_uri ""; if ( $request_uri ~* "?" ) { set $script_uri $1; } fastcgi_pass 127.0.0.1:9768; # 配置php-fpm fastcgi_param SCRIPT_URL $script_uri; include fastcgi/comm_fastcgi_params; }}

配置php-fpm,主要参数

[www.tuzisir.com]user = wwwgroup = wwwlisten = 127.0.0.1:9768

测试

输入域名

  1. 运行php-fpm -v,查看fpm的版本如下
4. 单独php使用
<?phpinclude_once "/xhgui-branch/external/header.php";

3.其它问题

1.如何不收集某域名下的执行数据

修改xhgui-branch/config/config.default.php

'profiler.enable' => function() { if($_SERVER['SERVER_NAME'] == 'www.tuzisir.com'){ return false; }else{ // 100%采样,默认为1% return true;//rand === 42; }},
PHP 7.1.13  (built: Feb 1 2018 13:38:47)Copyright  1997-2017 The PHP GroupZend Engine v3.1.0, Copyright  1998-2017 Zend Technologies with Zend OPcache v7.1.13, Copyright  1999-2017, by Zend Technologies with Xdebug v2.6.0, Copyright  2002-2018, by Derick Rethans

4.学习地址

  1. php.ini在/usr/local/php5/lib/php.ini
  2. 扩展的一些配置都在/usr/local/php5/php.d/目录下,可以看到xdebug扩展已经安装了。
-rw-r--r-- 1 root wheel 75 2 1 20:41 10-extension_dir.ini-rw-r--r-- 1 root wheel 53 2 1 20:41 20-extension-opcache.ini-rw-r--r-- 1 root wheel 41 2 1 20:41 40-curl.ini-rw-r--r-- 1 root wheel 44 2 1 20:41 40-openssl.ini-rw-r--r-- 1 root wheel 103 2 1 20:41 50-extension-apcu.ini-rw-r--r-- 1 root wheel 18 2 1 20:41 50-extension-curl.ini-rw-r--r-- 1 root wheel 17 2 1 20:41 50-extension-gmp.ini-rw-r--r-- 1 root wheel 83 2 1 20:41 50-extension-igbinary.ini-rw-r--r-- 1 root wheel 18 2 1 20:41 50-extension-imap.ini-rw-r--r-- 1 root wheel 79 2 1 20:41 50-extension-intl.ini-rw-r--r-- 1 root wheel 20 2 1 20:41 50-extension-mcrypt.ini-rw-r--r-- 1 root wheel 84 2 1 20:41 50-extension-memcached.ini-rw-r--r-- 1 root wheel 82 2 1 20:41 50-extension-mongodb.ini-rw-r--r-- 1 root wheel 22 2 1 20:41 50-extension-mssql.ini-rw-r--r-- 1 root wheel 23 2 1 20:41 50-extension-pdo_pgsql.ini-rw-r--r-- 1 root wheel 19 2 1 20:41 50-extension-pgsql.ini-rw-r--r-- 1 root wheel 81 2 1 20:41 50-extension-propro.ini-rw-r--r-- 1 root wheel 80 2 1 20:41 50-extension-raphf.ini-rw-r--r-- 1 root wheel 22 2 1 20:41 50-extension-readline.ini-rw-r--r-- 1 root wheel 80 2 1 20:41 50-extension-redis.ini-rw-r--r-- 1 root wheel 79 2 1 20:41 50-extension-solr.ini-rw-r--r-- 1 root wheel 79 2 1 20:41 50-extension-ssh2.ini-rw-r--r-- 1 root wheel 427 5 8 17:20 50-extension-xdebug.ini-rw-r--r-- 1 root wheel 17 2 1 20:41 50-extension-xsl.ini-rw-r--r-- 1 root wheel 79 2 1 20:41 60-extension-pecl_http.ini-rw-r--r-- 1 root wheel 2004 2 1 20:41 99-liip-developer.ini
  1. 已经安装编译的扩展镜像在/usr/local/php5/lib/php/extensions/no-debug-non-zts-20160303/下

下一篇:没有了
友情链接: 网站地图
Copyright © 2015-2019 http://www.zen-40.com. mgm美高梅有限公司 版权所有