DNMP (Docker + Nginx + MySQL + PHP7/5) представляет собой полнофункциональный LNMP一键安装程序.
Основные характеристики проекта DNMP:
100%
открытый исходный код100%
соответствует стандартам Docker100%
работоспособность/
├── 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
Схема структуры:
git
, docker
и docker-compose
.Клонируйте
проект:
$ git clone https://github.com/yeszao/dnmp.git
root
, добавьте текущего пользователя в группу docker
:
$ sudo gpasswd -a ${USER} docker
$ cd dnmp
$ docker-compose up
localhost
в браузере, чтобы увидеть следующий вывод:Это демонстрационный результат проекта, PHP-код расположен в директории: ./www/site1/
.
По умолчанию мы запускаем самую новую версию 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
Затем вы сможете увидеть эти сайты, открыв соответствующие адреса в браузере. В частности:
Место, где создаются лог-файлы, зависит от значений конфигурации логов в папке conf
.
Логи Nginx — это самые используемые логи, поэтому они размещены в отдельной папке log
в корне.
Папка log
отображает папку /var/log/dnmp
контейнера Nginx, поэтому для указания местоположения логов в конфигурационных файлах Nginx необходимо использовать путь /var/log/dnmp
, например:
error_log /var/log/dnmp/nginx.site1.error.log warn;
В большинстве случаев логи 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.
Так как 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. Вы можете изменить или удалить их по необходимости.
Контейнер phpMyAdmin отображается на порту 8080
хост-машины, поэтому адрес для доступа к phpMyAdmin на хост-машине:
http://localhost:8080
```Соединение с MySQL:
- host: (сетевая сущность MySQL контейнера данного проекта)
- port: `3306`
- username: (вводится вручную в интерфейсе phpMyAdmin)
- password: (вводится вручную в интерфейсе phpMyAdmin)
### 7.2 phpRedisAdmin
Контейнер phpRedisAdmin отображается на порту `8081` хост-машины, поэтому адрес для доступа к phpRedisAdmin на хост-машине:
Соединение с 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 )