dnmp = Docker
+ Nginx
+ MySQL
+ PHP
+ Redis
+ MongDB
php
plus = xhgui
+ xhprof
+ tideways
html
dnmp-plus = PHPer 的一键安装开发环境
+ PHP 非侵入式监控平台(优化系统性能、定位 Bug 的神器)
mysql
DNMP PLUS 项目特色,在 yeszao 的 DNMP 项目基础上新增:nginx
├── .github Github 配置目录 ├── conf 配置文件目录 │ ├── conf.d Nginx 用户站点配置目录 │ ├── mysql.cnf MySQL 用户配置文件 │ ├── nginx.conf Nginx 默认配置文件 │ ├── php-fpm.conf PHP-FPM 配置文件 │ ├── php.ini PHP 配置文件 │ ├── redis.conf Redis 配置文件 ├── docs 文档目录 ├── extensions PHP 扩展源码包 ├── log 日志目录 ├── mongo MongoDB 数据目录 ├── mysql MySQL 数据目录 ├── www PHP 代码目录 ├── Dockerfile PHP 镜像构建文件 ├── docker-compose-sample.yml Docker 服务配置示例文件 ├── env.smaple 环境配置示例文件 └── travis-build.sh Travis CI 构建文件
$ git clone https://github.com/guanguans/dnmp-plus.git --recursive $ cd dnmp-plus $ cp env.sample .env $ cp docker-compose-sample.yml docker-compose.yml $ docker-compose up -d
默认 web 根目录 www/localhost/
,浏览器访问 http://localhostgit
lnmp-plus 自带 nginx、php7二、php5六、mysql、mongo、redis、phpmyadmin、phpredisadmin、mongo-express 这些镜像服务github
# 建立而且启动容器 $ docker-compose up 服务1 服务2 ... # 建立而且启动全部容器 $ docker-compose up # 建立而且已后台运行的方式启动容器 $ docker-compose up -d 服务1 服务2 ... # 启动服务 $ docker-compose start 服务1 服务2 ... # 中止服务 $ docker-compose stop 服务1 服务2 ... # 重启服务 $ docker-compose restart 服务1 服务2 ... # 构建或者从新构建服务 $ docker-compose build 服务1 服务2 ... # 进入命令行容器 $ docker-compose exec 服务 bash # 删除而且中止容器 $ docker-compose rm 服务1 服务2 ... # 中止并删除容器,网络,图像和挂载卷 $ docker-compose down 服务1 服务2 ...
$ cd www/xhgui-branch $ composer install
www/xhgui-branch/config/config.default.php
<?php return array( ... 'debug' => true, // 改成true,便于调试 'mode' => 'development', ... 'extension' => 'tideways', // 改成支持 PHP7 的 tideways ... 'save.handler' => 'mongodb', 'db.host' => 'mongodb://mongo:27017', // 127.0.0.1 改成 mongo ... );
127.0.0.1 xhgui.test
conf/conf.d/localhost.conf
为例... location ~ \.php$ { fastcgi_pass php72:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 在执行主程序以前运行咱们指定的PHP脚本 fastcgi_param PHP_VALUE "auto_prepend_file=/var/www/html/xhgui-branch/external/header.php"; } ...
$ docker-compose restart nginx
默认同时建立 PHP5.6
和 PHP7.2
2 个 PHP 版本的容器,切换 PHP 仅需修改相应站点 Nginx 配置的 fastcgi_pass
选项,例如,示例的 http://localhost 用的是 PHP7.2,Nginx 配置:web
fastcgi_pass php72:9000;
要改用 PHP5.6,修改成:redis
fastcgi_pass php56:9000;
重启 Nginx 生效sql
$ docker-compose restart nginx
PHP 的不少功能都是经过扩展实现,而安装扩展是一个略费时间的过程,
因此,除 PHP 内置扩展外,在 env.sample
文件中咱们仅默认安装少许扩展,
若是要安装更多扩展,请打开你的 .env
文件修改以下的 PHP 配置,
增长须要的 PHP 扩展:mongodb
PHP72_EXTENSIONS=pdo_mysql,opcache,redis,xdebug,mongodb,tideways PHP56_EXTENSIONS=opcache,redis,xdebug,mongodb,xhprof
而后从新构建 PHP 镜像
docker-compose build php72 docker-compose up -d
Log 文件生成的位置依赖于 conf 下各 log 配置的值。
Nginx 日志是咱们用得最多的日志,因此咱们单独放在根目录 log
下。log
会目录映射 Nginx 容器的 /var/log/nginx
目录,因此在 Nginx 配置文件中,须要输出 log 的位置,咱们须要配置到 /var/log/nginx
目录,如:
error_log /var/log/nginx/nginx.localhost.error.log warn;
由于 MySQL 容器中的 MySQL 使用的是 mysql
用户启动,它没法自行在 /var/log
下的增长日志文件。因此,咱们把 MySQL 的日志放在与 data 同样的目录,即项目的mysql
目录下,对应容器中的 /var/lib/mysql/
目录。
mysql.conf 中的日志文件的配置:
slow-query-log-file = /var/lib/mysql/mysql.slow.log log-error = /var/lib/mysql/mysql.error.log