{"id":19081835,"url":"https://github.com/george518/dnp","last_synced_at":"2026-04-18T01:32:50.565Z","repository":{"id":139812238,"uuid":"165602239","full_name":"george518/dnp","owner":"george518","description":"docker + nginx + php5/7 搭建灵活的PHP运行环境","archived":false,"fork":false,"pushed_at":"2019-01-15T12:59:54.000Z","size":2895,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-02T20:22:09.700Z","etag":null,"topics":["dnp","dnp3","docker","nginx","php","php7"],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/george518.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-14T05:45:50.000Z","updated_at":"2019-01-15T12:59:55.000Z","dependencies_parsed_at":"2024-08-24T21:16:08.629Z","dependency_job_id":null,"html_url":"https://github.com/george518/dnp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/george518%2Fdnp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/george518%2Fdnp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/george518%2Fdnp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/george518%2Fdnp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/george518","download_url":"https://codeload.github.com/george518/dnp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240131746,"owners_count":19752727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dnp","dnp3","docker","nginx","php","php7"],"created_at":"2024-11-09T02:39:29.393Z","updated_at":"2026-04-18T01:32:45.425Z","avatar_url":"https://github.com/george518.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dnp\ndocker + nginx + php5/7 搭建灵活的PHP运行环境\n\n\ndnp特点:\n1. 开源免费\n2. 支持php7.2/5.6自由切换\n3. 支持绑定**任意多个域名**\n4. 支持**HTTPS和HTTP/2**\n5. **PHP源代码、MySQL数据、配置文件、日志文件**都可在Host中直接修改查看\n6. 内置**完整PHP扩展安装**命令\n7. 默认安装`pdo_mysql`、`redis`、`xdebug`、`swoole`等常用热门扩展，拿来即用\n8. 一次配置，**Windows、Linux、MacOs**皆可用\n\n\n# 目录\n- [1.目录结构](#1目录结构)\n- [2.快速使用](#2快速使用)\n- [3.切换PHP版本](#3切换php版本)\n- [4.使用Log](#5使用log)\n    - [5.1 Nginx日志](#51-nginx日志)\n    - [5.2 PHP-FPM日志](#52-php-fpm日志)\n- [5.使用composer](#6使用composer)\n\n\n\n## 1.目录结构\n\n```\n/\n├── conf                    配置文件目录\n│   ├── conf.d              Nginx用户站点配置目录\n│   ├── nginx.conf          Nginx默认配置文件\n│   ├── php-fpm.conf        PHP-FPM配置文件（部分会覆盖php.ini配置）\n│   └── php.ini             PHP默认配置文件\n├── Dockerfile              PHP镜像构建文件\n├── extensions              PHP扩展源码包\n├── log                     Nginx日志目录\n├── www                     PHP代码目录\n└── source.list             Debian源文件\n```\n\n\n## 2.快速使用\n1. 本地安装`git`、`docker`和`docker-compose`。\n2. `clone`项目：\n    ```\n    $ git clone https://github.com/george518/dnp.git\n    ```\n3. 如果不是`root`用户，还需将当前用户加入`docker`用户组：\n    ```\n    $ sudo gpasswd -a ${USER} docker\n    ```\n4.  启动：\n    ```\n    $ cd dnp\n    $ docker-compose up\n    ```\n5. 访问在浏览器中访问：\n\n - [http://localhost](http://localhost)： 默认*http*站点\n 注意yml中设置的端口是否被占用\n\n两个站点使用同一PHP代码：`./www/localhost/index.php`。\n\n要修改端口、日志文件位置、以及是否替换source.list文件等，请修改.env文件，然后重新构建：\n```bash\n$ docker-compose build php56    # 重建单个服务\n$ docker-compose build          # 重建全部服务\n\n```\n\n\n## 3.切换PHP版本\n默认情况下，我们同时创建 **PHP5.6和PHP7.2** 三个PHP版本的容器，\n\n切换PHP仅需修改相应站点 Nginx 配置的`fastcgi_pass`选项，\n\n例如，示例的 [http://localhost](http://localhost) 用的是PHP5.7，Nginx 配置：\n```\n    fastcgi_pass   php72:9000;\n```\n要改用PHP5.6，修改为：\n```\n    fastcgi_pass   php56:9000;\n```\n再 **重启 Nginx** 生效。\n```bash\n$ docker exec -it dnp_nginx_1 nginx -s reload\n```\n\n\n\n## 4.使用Log\n\nLog文件生成的位置依赖于conf下各log配置的值。\n\n### 4.1 Nginx日志\nNginx日志是我们用得最多的日志，所以我们单独放在根目录`log`下。\n\n`log`会目录映射Nginx容器的`/var/log/nginx`目录，所以在Nginx配置文件中，需要输出log的位置，我们需要配置到`/var/log/nginx`目录，如：\n```\nerror_log  /var/log/nginx/nginx.localhost.error.log  warn;\n```\n\n\n### 4.2 PHP-FPM日志\n大部分情况下，PHP-FPM的日志都会输出到Nginx的日志中，所以不需要额外配置。\n\n另外，建议直接在PHP中打开错误日志：\n```php\nerror_reporting(E_ALL);\nini_set('error_reporting', 'on');\nini_set('display_errors', 'on');\n```\n\n如果确实需要，可按一下步骤开启（在容器中）。\n\n1. 进入容器，创建日志文件并修改权限：\n    ```bash\n    $ docker exec -it dnp_php56_1 /bin/bash\n    $ mkdir /var/log/php\n    $ cd /var/log/php\n    $ touch php-fpm.error.log\n    $ chmod a+w php-fpm.error.log\n    ```\n2. 主机上打开并修改PHP-FPM的配置文件`conf/php-fpm.conf`，找到如下一行，删除注释，并改值为：\n    ```\n    php_admin_value[error_log] = /var/log/php/php-fpm.error.log\n    ```\n3. 重启PHP-FPM容器。\n\n\n## 5.使用composer\n**我们建议在主机HOST中使用composer，避免PHP容器变得庞大**。\n1. 在主机创建一个目录，用以保存composer的配置和缓存文件：\n    ```\n    mkdir ~/dnp/composer\n    ```\n2. 打开主机的 `~/.bashrc` 或者 `~/.zshrc` 文件，加上：\n    ```\n    composer () {\n        tty=\n        tty -s \u0026\u0026 tty=--tty\n        docker run \\\n            $tty \\\n            --interactive \\\n            --rm \\\n            --user $(id -u):$(id -g) \\\n            --volume ~/dnp/composer:/tmp \\\n            --volume /etc/passwd:/etc/passwd:ro \\\n            --volume /etc/group:/etc/group:ro \\\n            --volume $(pwd):/app \\\n            composer \"$@\"\n    }\n\n    ```\n3. 让文件起效：\n    ```\n    source ~/.bashrc\n    ```\n4. 在主机的任何目录下就能用composer了：\n    ```\n    cd ~/dnp/www/\n    composer create-project [name] project --no-dev\n    ```\n5. （可选）如果提示需要依赖，用`--ignore-platform-reqs --no-scripts`关闭依赖检测。\n6. （可选）第一次使用 composer 会在 ~/dnp/composer 目录下生成一个config.json文件，可以在这个文件中指定国内仓库，例如：\n    ```\n    {\n        \"config\": {},\n        \"repositories\": {\n            \"packagist\": {\n                \"type\": \"composer\",\n                \"url\": \"https://packagist.laravel-china.org\"\n            }\n        }\n    }\n\n    ```\n\n\n## License\nMIT\n\n## 感谢\n\nhttps://github.com/yeszao/dnmp\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorge518%2Fdnp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeorge518%2Fdnp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorge518%2Fdnp/lists"}