1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/phprao-dnmp2

Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 02.06.2025 22:58 6430656

DNMP (Docker + Nginx + MySQL + PHP7/5) представляет собой полнофункциональный LNMP一键安装程序.

Основные характеристики проекта DNMP:

  1. 100% открытый исходный код
  2. 100% соответствует стандартам Docker
  3. Поддержка нескольких версий PHP для свободного переключения (PHP5.4, PHP5.6, PHP7.2)
  4. Поддержка привязки к нескольким доменам
  5. Поддержка HTTPS и HTTP/2
  6. PHP исходный код расположен на хосте
  7. MySQL данные расположены на хосте
  8. Все конфигурационные файлы могут быть изменены напрямую на хосте
  9. Все лог-файлы могут быть просмотрены напрямую на хосте
  10. Включены полные команды установки расширений PHP
  11. При использовании в реальных проектах гарантируется 100% работоспособность
  12. Одноразовая настройка, работает на Windows, Linux и MacOS## 1. Структура проекта Описание директорий:
/
├── conf                    Конфигурационные файлы
│   ├── conf.d              Директория конфигураций Nginx
│   ├── nginx.conf          Основной конфигурационный файл Nginx
│   ├── mysql.cnf           Конфигурационный файл MySQL
│   ├── php-fpm.conf        Конфигурационный файл PHP-FPM
│   └── php.ini             Основной конфигурационный файл PHP
├── docker-compose54.yml    Конфигурационный файл docker-compose для PHP 5.4
├── docker-compose56.yml    Конфигурационный файл docker-compose для PHP 5.6
├── docker-compose.yml      Конфигурационный файл docker-compose для последней версии PHP
├── log                     Директория лог-файлов Nginx
├── mysql                   Директория данных MySQL
├── php                     Директория Dockerfile для различных версий PHP
└── www                     Директория исходного кода PHP

Схема структуры:Demo Image

2. Быстрое использование

  1. Установите локально git, docker и docker-compose.
  2. Клонируйте проект:
    $ git clone https://github.com/yeszao/dnmp.git
  3. Если вы не являетесь пользователем root, добавьте текущего пользователя в группу docker:
    $ sudo gpasswd -a ${USER} docker
  4. Запустите:
    $ cd dnmp
    $ docker-compose up
  5. Введите localhost в браузере, чтобы увидеть следующий вывод:

Demo Image

Это демонстрационный результат проекта, PHP-код расположен в директории: ./www/site1/.

3. Использовать другую версию PHP?

По умолчанию мы запускаем самую новую версию PHP, используя следующую команду:

$ docker-compose up

После выполнения команды docker-compose stop, можно запустить PHP 5.4 или PHP 5.6 с помощью следующих команд:

$ docker-compose -f docker-compose54.yml up
$ docker-compose -f docker-compose56.yml up

Если вы запускаете версию PHP впервые, вам также потребуется добавить параметр --build для сборки:

$ docker-compose -f docker-compose54.yml up --build
$ docker-compose -f docker-compose56.yml up --build

При смене версии PHP вам не нужно изменять конфигурационные файлы, включая файлы конфигурации Nginx и php.ini, за исключением случаев, когда возникают ошибки совместимости кода. После смены версии PHP все должно работать корректно.

Внимание: поскольку все версии PHP используют одну и ту же конфигурацию портов, мы можем использовать только одну версию одновременно. Для перехода на другую версию необходимо остановить текущую версию.## 4. HTTPS и HTTP/2 Демонстрационные сайты проекта имеют два адреса:

Чтобы просмотреть эти сайты, добавьте следующие строки в файл hosts вашего хоста:

127.0.0.1 www.site1.com
127.0.0.1 www.site2.com
  • Путь к файлу hosts для Linux и Mac: /etc/hosts
  • Путь к файлу hosts для Windows: C:\Windows\System32\drivers\etc\hosts

Затем вы сможете увидеть эти сайты, открыв соответствующие адреса в браузере. В частности:

  • Site1 и localhost — это один и тот же сайт, работающий по протоколу HTTP.
  • Site2 — это сайт по протоколу HTTPS с пользовательским сертификатом, для которого браузер будет выдавать предупреждение безопасности. Предупреждение можно проигнорировать.

5. Использование логов

Место, где создаются лог-файлы, зависит от значений конфигурации логов в папке conf.

5.1 Логи Nginx

Логи Nginx — это самые используемые логи, поэтому они размещены в отдельной папке log в корне.

Папка log отображает папку /var/log/dnmp контейнера Nginx, поэтому для указания местоположения логов в конфигурационных файлах Nginx необходимо использовать путь /var/log/dnmp, например:

error_log  /var/log/dnmp/nginx.site1.error.log  warn;

5.2 Логи PHP-FPM

В большинстве случаев логи PHP-FPM выводятся в логи Nginx, поэтому дополнительная конфигурация не требуется.

Если действительно требуется отдельное хранение логов PHP-FPM, выполните следующие шаги:1. Создайте файл логов PHP-FPM и установите соответствующие права доступа: bash $ touch log/php-fpm.error.log $ chmod a+w log/php-fpm.error.log 2. Откройте файл конфигурации PHP-FPM conf/php-fpm.conf и удалите комментарий перед строкой, установив значение: php_admin_value[error_log] = /var/log/dnmp/php-fpm.error.log 3. Перезапустите контейнер PHP-FPM.

5.3 Логи MySQL

Так как MySQL в контейнере запускается под пользователем mysql, он не может самостоятельно создавать лог-файлы в /var/log. Поэтому логи MySQL размещаются в той же папке, что и данные, то есть в папке mysql проекта, соответствующей папке /var/lib/mysql/ контейнера.

slow-query-log-file     = /var/lib/mysql/mysql.slow.log
log-error               = /var/lib/mysql/mysql.error.log

Это конфигурация лог-файлов в файле mysql.conf.## 6. Использование Composer По умолчанию dnmp уже установил Composer в контейнере. Для использования Composer войдите в контейнер:

$ docker exec -it dnmp_php_1 /bin/bash

Затем перейдите в соответствующую директорию и используйте Composer:

# cd /var/www/html/site1
# composer update

Так как Composer зависит от PHP, то выполнять команды Composer необходимо внутри контейнера.## 7. phpMyAdmin и phpRedisAdmin По умолчанию в файле docker-compose.yml запускаются phpMyAdmin для управления MySQL и phpRedisAdmin для управления Redis. Вы можете изменить или удалить их по необходимости.

7.1 phpMyAdmin

Контейнер phpMyAdmin отображается на порту 8080 хост-машины, поэтому адрес для доступа к phpMyAdmin на хост-машине:

http://localhost:8080
```Соединение с MySQL:
- host: (сетевая сущность MySQL контейнера данного проекта)
- port: `3306`
- username: (вводится вручную в интерфейсе phpMyAdmin)
- password: (вводится вручную в интерфейсе phpMyAdmin)

### 7.2 phpRedisAdmin
Контейнер phpRedisAdmin отображается на порту `8081` хост-машины, поэтому адрес для доступа к phpRedisAdmin на хост-машине:

http://localhost:8081


Соединение с Redis:
- host: (сетевая сущность Redis контейнера данного проекта)
- port: `6379`

## 8. Использование Xdebug для отладки
По умолчанию Xdebug расширение уже установлено, но не активировано в файле php.ini.

Чтобы использовать Xdebug для отладки, добавьте следующие строки в конец файла php.ini:

[Xdebug] xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = "172.17.0.1" xdebug.remote_port = 9000 xdebug.remote_log = "/var/log/dnmp/php.xdebug.log"

Затем перезапустите контейнер PHP.

## Часто задаваемые вопросы
1. Возникла ошибка "No releases available for package 'pecl.php.net/redis'"
    > См. https://github.com/yeszao/dnmp/issues/10

Объяснение: **Эта проблема связана с сетью в Китае. Теперь для версий PHP 7 и выше расширения устанавливаются из исходного кода, поэтому эта проблема больше не актуальна.**

2. Ошибка PHP 5.6 "ibfreetype6-dev : Depends: zlib1g-dev but it is not going to be installed or libz-dev"
    > См. https://github.com/yeszao/dnmp/issues/39

## Лицензия
MIT

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/phprao-dnmp2.git
git@api.gitlife.ru:oschina-mirror/phprao-dnmp2.git
oschina-mirror
phprao-dnmp2
phprao-dnmp2
master