资讯专栏INFORMATION COLUMN

Docker的LNMP一键安装开发环境 + PHP非侵入式监控平台xhgui(优化系统性能、定位Bu

AlanKeene / 1382人阅读

摘要:的一键安装开发环境非侵入式监控平台优化系统性能定位的神器之前在用做本地开发环境,因为没有这些对程序性能追踪及分析的工具,所以索性基于的编排了一套自己使用。

DNMP PLUS

dnmp = Docker + Nginx + MySQL + PHP + Redis + MongDB

plus = xhgui + xhprof + tideways

dnmp-plus = PHPer 的一键安装开发环境 + PHP 非侵入式监控平台(优化系统性能、定位 Bug 的神器)


</>复制代码

  1. 之前在用 laradock 做本地开发环境,因为 laradock 没有 xhgui、xhprof、tideways 这些对 PHP 程序性能追踪及分析的工具,所以索性基于 yeszao 的 dnmp 编排了一套自己使用。

DNMP PLUS 项目特点,在 yeszao 的 DNMP 项目基础上新增:

PHP xhprof 扩展 - Facebook 开发的 PHP 性能追踪及分析工具

PHP tideways 扩展 - xhprof 的分支,支持 PHP7

PHP mongodb 扩展

MongoDB 服务

Mongo Express - MongoDB 服务管理系统

xhgui - XHProf 分析数据数据的 GUI 系统

推荐阅读

dnmp-plus PHPer 的一键安装式终极 debug 开发环境

dnmp-plus 一键安装式环境详细安装与使用

超全的设计模式简介(45种)

design-patterns-for-humans 中文版

MongoDB 资源、库、工具、应用程序精选列表中文版

有哪些鲜为人知,但是很有意思的网站?

一份攻城狮笔记

每天搜集 Github 上优秀的项目

一些有趣的民间故事

超好用的谷歌浏览器、Sublime Text、Phpstorm、油猴插件合集

目录结构

</>复制代码

  1. ├── .github Github 配置目录
  2. ├── conf 配置文件目录
  3. │ ├── conf.d Nginx 用户站点配置目录
  4. │ ├── mysql.cnf MySQL 用户配置文件
  5. │ ├── nginx.conf Nginx 默认配置文件
  6. │ ├── php-fpm.conf PHP-FPM 配置文件
  7. │ ├── php.ini PHP 配置文件
  8. │ ├── redis.conf Redis 配置文件
  9. ├── docs 文档目录
  10. ├── extensions PHP 扩展源码包
  11. ├── log 日志目录
  12. ├── mongo MongoDB 数据目录
  13. ├── mysql MySQL 数据目录
  14. ├── www PHP 代码目录
  15. ├── Dockerfile PHP 镜像构建文件
  16. ├── docker-compose-sample.yml Docker 服务配置示例文件
  17. ├── env.smaple 环境配置示例文件
  18. └── travis-build.sh Travis CI 构建文件
环境要求

Docker

Docker-compose

Git

快速使用

</>复制代码

  1. $ git clone https://github.com/guanguans/dnmp-plus.git --recursive
  2. $ cd dnmp-plus
  3. $ cp env.sample .env
  4. $ cp docker-compose-sample.yml docker-compose.yml
  5. $ docker-compose up -d

默认 web 根目录 www/localhost/,浏览器访问 http://localhost

基本使用

lnmp-plus 自带 nginx、php72、php56、mysql、mongo、redis、phpmyadmin、phpredisadmin、mongo-express 这些镜像服务

</>复制代码

  1. # 创建并且启动容器
  2. $ docker-compose up 服务1 服务2 ...
  3. # 创建并且启动所有容器
  4. $ docker-compose up
  5. # 创建并且已后台运行的方式启动容器
  6. $ docker-compose up -d 服务1 服务2 ...
  7. # 启动服务
  8. $ docker-compose start 服务1 服务2 ...
  9. # 停止服务
  10. $ docker-compose stop 服务1 服务2 ...
  11. # 重启服务
  12. $ docker-compose restart 服务1 服务2 ...
  13. # 构建或者重新构建服务
  14. $ docker-compose build 服务1 服务2 ...
  15. # 进入命令行容器
  16. $ docker-compose exec 服务 bash
  17. # 删除并且停止容器
  18. $ docker-compose rm 服务1 服务2 ...
  19. # 停止并删除容器,网络,图像和挂载卷
  20. $ docker-compose down 服务1 服务2 ...
xhgui 使用,可以参考 https://github.com/guanguans/... 安装

</>复制代码

  1. $ cd www/xhgui-branch
  2. $ composer install
修改 xhgui-branch 配置文件 www/xhgui-branch/config/config.default.php

</>复制代码

  1. true, // 改为true,便于调试
  2. "mode" => "development",
  3. ...
  4. "extension" => "tideways", // 改为支持 PHP7 的 tideways
  5. ...
  6. "save.handler" => "mongodb",
  7. "db.host" => "mongodb://mongo:27017", // 127.0.0.1 改为 mongo
  8. ...
  9. );
hosts 文件中增加

</>复制代码

  1. 127.0.0.1 xhgui.test
浏览器访问 http://xhgui.test

在要分析项目 nginx 配置文件中修改,以默认的 localhost 配置 conf/conf.d/localhost.conf 为例

</>复制代码

  1. ...
  2. location ~ .php$ {
  3. fastcgi_pass php72:9000;
  4. fastcgi_index index.php;
  5. include fastcgi_params;
  6. fastcgi_param PATH_INFO $fastcgi_path_info;
  7. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  8. # 在执行主程序之前运行我们指定的PHP脚本
  9. fastcgi_param PHP_VALUE "auto_prepend_file=/var/www/html/xhgui-branch/external/header.php";
  10. }
  11. ...
重启 nginx

</>复制代码

  1. $ docker-compose restart nginx
浏览器访问 http://localhost,再访问 http://xhgui.test,此时已经有了内容,愉快的查看项目的性能追踪及分析吧

PHP 和扩展 切换 Nginx 使用的 PHP 版本

默认同时创建 PHP5.6PHP7.2 2 个 PHP 版本的容器,切换 PHP 仅需修改相应站点 Nginx 配置的 fastcgi_pass 选项,例如,示例的 http://localhost 用的是 PHP7.2,Nginx 配置:

</>复制代码

  1. fastcgi_pass php72:9000;

要改用 PHP5.6,修改为:

</>复制代码

  1. fastcgi_pass php56:9000;

重启 Nginx 生效

</>复制代码

  1. $ docker-compose restart nginx
安装 PHP 扩展

PHP 的很多功能都是通过扩展实现,而安装扩展是一个略费时间的过程,
所以,除 PHP 内置扩展外,在 env.sample 文件中我们仅默认安装少量扩展,
如果要安装更多扩展,请打开你的 .env 文件修改如下的 PHP 配置,
增加需要的 PHP 扩展:

</>复制代码

  1. PHP72_EXTENSIONS=pdo_mysql,opcache,redis,xdebug,mongodb,tideways
  2. PHP56_EXTENSIONS=opcache,redis,xdebug,mongodb,xhprof

然后重新构建 PHP 镜像

</>复制代码

  1. docker-compose build php72
  2. docker-compose up -d
使用 Log

Log 文件生成的位置依赖于 conf 下各 log 配置的值。

Nginx 日志

Nginx 日志是我们用得最多的日志,所以我们多带带放在根目录 log 下。log 会目录映射 Nginx 容器的 /var/log/nginx 目录,所以在 Nginx 配置文件中,需要输出 log 的位置,我们需要配置到 /var/log/nginx 目录,如:

</>复制代码

  1. error_log /var/log/nginx/nginx.localhost.error.log warn;
MySQL 日志

因为 MySQL 容器中的 MySQL 使用的是 mysql 用户启动,它无法自行在 /var/log 下的增加日志文件。所以,我们把 MySQL 的日志放在与 data 一样的目录,即项目的mysql目录下,对应容器中的 /var/lib/mysql/ 目录。

mysql.conf 中的日志文件的配置:

</>复制代码

  1. slow-query-log-file = /var/lib/mysql/mysql.slow.log
  2. log-error = /var/lib/mysql/mysql.error.log
数据库管理

默认 phpMyAdmin 地址:http://localhost:8080

默认 phpRedisAdmin 地址:http://localhost:8081

默认 Mongo Express 地址:http://localhost:8082

参考链接

https://github.com/yeszao/dnmp,yeszao

https://github.com/laynefyc/xhgui-branch/,laynefyc

License

MIT

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27941.html

相关文章

  • DockerLNMP一键安装开发环境 + PHP侵入监控平台xhgui(优化系统性能定位Bu

    摘要:日志日志是我们用得最多的日志,所以我们单独放在根目录下。会目录映射容器的目录,所以在配置文件中,需要输出的位置,我们需要配置到目录,如日志因为容器中的使用的是用户启动,它无法自行在下的增加日志文件。 DNMP PLUS dnmp = Docker + Nginx + MySQL + PHP + Redis + MongDB plus = xhgui + xhprof + tideway...

    luzhuqun 评论0 收藏0
  • Tideways、xhprof 和 xhgui 打造 PHP 侵入监控平台

    摘要:参考配置添加,告诉程序在执行前要调用的服务或者也可以在修改配置文件,告诉程序在执行前要调用的服务参考链接 showImg(https://segmentfault.com/img/bVbt7t1?w=2880&h=2608); 推荐阅读 Tideways、xhprof 和 xhgui 打造 PHP 非侵入式监控平台 超全的设计模式简介(45种) design-patterns-for...

    shevy 评论0 收藏0
  • Tideways、xhprof 和 xhgui 打造 PHP 侵入监控平台

    摘要:参考配置添加,告诉程序在执行前要调用的服务或者也可以在修改配置文件,告诉程序在执行前要调用的服务参考链接 showImg(https://segmentfault.com/img/bVbt7t1?w=2880&h=2608); 推荐阅读 Tideways、xhprof 和 xhgui 打造 PHP 非侵入式监控平台 超全的设计模式简介(45种) design-patterns-for...

    Cympros 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<