DNMP (Docker + Nginx/Openresty + MySQL5, 8 + PHP5, 7,8 + Redis + ElasticSearch + MongoDB + RabbitMQ) — это полнофункциональный установщик модели LNMP одним щелчком мыши с поддержкой процессоров Arm.
Рекомендуется ознакомиться с ним заранее перед использованием каталог, чтобы быстро приступить к работе и вовремя устранить проблемы.
QQ Exchange Group:
[ENGLISH] - [Адрес GitHub] - [Адрес Gitee]
Особенности проекта DNMP:
100%
открытый исходный код.100%
соответствует стандартам Docker.100%
доступность.install-php-extensions apcu
./
├── data Каталог данных базы данных
│ ├── esdata ElasticSearch каталог данных
│ ├── mongo MongoDB каталог данных
│ ├── mysql MySQL8 каталог данных
│ └── mysql5 MySQL5 каталог данных
├── services Каталог файлов сборки и конфигурации сервисов
│ ├── elasticsearch ElasticSearch каталог файлов конфигурации
│ ├── mysql MySQL8 каталог файлов конфигурации
│ ├── mysql5 MySQL5 каталог файлов конфигурации
│ ├── nginx Nginx каталог файлов конфигурации
│ ├── php PHP5.6 - PHP7.4 каталог конфигурации
│ ├── php54 PHP5.4 каталог конфигурации
│ └── redis Redis каталог файлов конфигурации
├── logs Каталог журналов
├── docker-compose.sample.yml Пример файла конфигурации сервиса Docker
├── env.smaple Пример файла конфигурации среды
└── www Каталог кода PHP decimal, ds, enchant, ev, event, excimer, exif, ffi, gd, gearman, geoip, geospatial, gettext, gmagick, gmp, gnupg, grpc, http, igbinary, imagick, imap, inotify, interbase, intl, ioncube_loader, jsmin, json_post, ldap, lzf, mailparse, maxminddb, mcrypt, memcache, memcached, mongo, mongodb, mosquitto, msgpack, mssql, mysql, mysqli, oauth, oci8, odbc, opcache, opencensus, openswoole, parallel, pcntl, pcov, pdo_dblib, pdo_firebird, pdo_mysql, pdo_oci, pdo_odbc, pdo_pgsql, pgsql, propro, protobuf, pspell, pthreads, raphf, rdkafka, recode, redis, seaslog, shmop, smbclient, snmp, snuffleupagus, soap, sockets, solr, sourceguardian, spx, sqlsrv, ssh2, stomp, swoole.
В запросе представлен список слов и словосочетаний, которые могут быть связаны с различными технологиями и областями разработки программного обеспечения. Однако без контекста сложно определить основной язык текста запроса. Можно предположить, что это технический текст на английском языке. тензор | | | | | ✓ | ✓ | ✓ | ✓ | | | тиди | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | таймзондеб | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | уопизи | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | аплоад прогресс | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | юид | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | випс | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | вддкс | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | икс дебаг | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | хпроф | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | экс эл эс вирайтер | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | эм эл дифф | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | эм эл эр ап | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | эс эл | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | яц | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ямл | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | яр | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | зефир парсер | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | зип | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | зоо кипер | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | зстд | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Количество поддерживаемых расширений: 116
Это расширение взято из https://github.com/mlocati/docker-php-extension-installer. Обратитесь к примерам файлов.
~/.bashrc
на хосте.source ~/.bashrc
~ php -v
PHP 7.2.13 (cli) (built: Dec 21 2018 02:22:47) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.13, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans
Метод 1: Используйте команду сравнения на хосте
~/dnmp
, путь кэша компилятора — ~/dnmp/data/composer
.~/.bashrc
на хосте. Важно отметить, что пример файла находится в каталоге, определённом на первом шаге.source ~/.bashrc
cd ~/dnmp/www/
composer create-project yeszao/fastphp project --no-dev
{
"config": {},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
}
Способ 2: Выполните команду composer внутри контейнера
Есть ещё один способ — войти в контейнер и выполнить команду composer
, используя PHP7 в качестве примера:
docker exec -it php /bin/sh
cd /www/localhost
composer update
Чтобы управлять службами, следуйте команде с именем сервера, например:
$ docker-compose up # 创建并且启动所有容器
$ docker-compose up -d # 创建并且后台运行方式启动所有容器
$ docker-compose up nginx php mysql # 创建并且启动nginx、php、mysql的多个容器
$ docker-compose up -d nginx php mysql # 创建并且已后台运行的方式启动nginx、php、mysql容器
$ docker-compose start php # 启动服务
$ docker-compose stop php # 停止服务
$ docker-compose restart php # 重启服务
$ docker-compose build php # 构建或者重新构建服务
$ docker-compose rm php # 删除并且停止php容器
$ docker-compose down # 停止并删除容器,网络,图像和挂载卷
На данный момент... Использование
При разработке мы можем часто использовать команду «docker exec -it». Удобный способ сделать это — войти в контейнер и создать псевдонимы для часто используемых команд.
Сначала просмотрите доступные контейнеры на хосте:
$ docker ps # просмотр всех запущенных контейнеров
$ docker ps -a # все контейнеры
Вывод NAMES. В этом столбце указано имя контейнера, или, если используется конфигурация по умолчанию, имя будет nginx, php, php56, mysql и т. д.
Затем откройте файл ~/.bashrc или ~/.zshrc и добавьте:
alias dnginx='docker exec -it nginx /bin/sh'
alias dphp='docker exec -it php /bin/sh'
alias dphp56='docker exec -it php56 /bin/sh'
alias dphp54='docker exec -it php54 /bin/sh'
alias dmysql='docker exec -it mysql /bin/bash'
alias dredis='docker exec -it redis /bin/sh'
В следующий раз, когда вы войдёте в контейнер, это будет очень быстро, например, при входе в контейнер php:
$ dphp
4.3 Просмотр сетей Docker
ifconfig docker0
Для заполнения extra_hosts контейнер обращается к хосту hosts.
5. Использование журнала
Расположение файла журнала зависит от значения каждой конфигурации журнала в conf.
5.1 Журналы Nginx
Журналы Nginx используются чаще всего, поэтому они помещаются отдельно в корневой каталог log. Каталог log будет сопоставлен для контейнера Nginx с каталогом /var/log/nginx, поэтому в файле конфигурации Nginx необходимо настроить расположение выходного журнала /var/log/nginx. Например:
error_log /var/log/nginx/nginx.localhost.error.log warn;
5.2 Журналы PHP-FPM
В большинстве случаев журналы PHP-FPM выводятся в журналы Nginx, поэтому дополнительная настройка не требуется. Кроме того, рекомендуется открыть журнал ошибок непосредственно в PHP:
error_reporting(E_ALL);
ini_set('error_reporting', 'on');
ini_set('display_errors', 'on');
Если вам это действительно нужно, вы можете открыть его (в контейнере), выполнив следующие действия:
$ docker exec -it php /bin/sh
$ mkdir /var/log/php
$ cd /var/log/php
$ touch php-fpm.error.log
$ chmod a+w php-fpm.error.log
5.3 Журналы MySQL
Поскольку MySQL в контейнере MySQL запускается пользователем mysql, он не может быть автономным /var/log. Поэтому мы помещаем журналы MySQL в тот же каталог, что и данные, то есть в каталог проектов mysql.
slow-query-log-file = /var/log/mysql/mysql.slow.log
log-error = /var/log/mysql/mysql.error.log
Это конфигурация файла журнала в mysql.conf.
6. Управление базой данных
Этот проект по умолчанию использует docker-compose.yml для онлайн-управления MySQL. PhpMyAdmin не включён, а для онлайн-управления redis phpRedisAdmin можно изменить или удалить по мере необходимости.
6.1 PhpMyAdmin
Адрес порта контейнера phpMyAdmin, сопоставленный с хостом, равен 8080, поэтому адрес на хосте для доступа к phpMyAdmin:
http://localhost:8080
Информация о подключении MySQL:
6.2 PhpRedisAdmin
Адрес порта контейнера phpRedisAdmin, сопоставленного с хостом, равен 8081, поэтому адрес на хосте для доступа к phpMyAdmin:
http://localhost:8081
Информация о соединении Redis:
7. Безопасность использования в формальной среде
Чтобы использовать в формальной среде, пожалуйста:
8 Часто задаваемые вопросы
8.1 Как использовать ### Использование curl в PHP-коде?
Обратитесь к этой проблеме: https://github.com/yeszao/dnmp/issues/91
Docker использует cron для планирования задач
Время контейнера настраивается в файле .env с помощью переменной TZ. Список поддерживаемых часовых поясов можно найти на Википедии или на официальном сайте PHP PHP.net.
Есть два случая.
Первый случай — в PHP-коде:
// Подключение к MySQL
$dbh = new PDO('mysql:host=mysql;dbname=mysql', 'root', '123456');
// Подключение к Redis
$redis = new Redis();
$redis->connect('redis', 6379);
Поскольку контейнеры являются контейнерами, expose
порты связаны, и они находятся в одной сети networks
, поэтому подключенные параметры host
напрямую связаны с именем контейнера, а параметр port
является портом внутри контейнера. Подробнее см. в статье «Разница между портами Docker-compose и Expo».
Во втором случае — на хосте через командную строку или Navicat и другие инструменты. Для подключения хоста к mysql и redis контейнер должен пройти через порт ports
, который сопоставлен с хостом. Возьмём mysql в качестве примера. В документе docker-compose.yml есть такая настройка портов: 3306:3306
, то есть порт 3306 хоста и порт 3306 контейнера образуют карту, поэтому мы можем подключиться следующим образом:
$ mysql -h127.0.0.1 -uroot -p123456 -P3306
$ redis-cli -h127.0.0.1
Здесь параметр host
не может быть использован localhost, потому что по умолчанию он связывается с mysql через файл sock, а контейнер изолирован от файловой системы хоста, поэтому необходимо подключаться через TCP, поэтому нужно указать IP.
ifconfig docker0
, чтобы получить IP-адрес для подключения.$ ifconfig docker0
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
...
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>flush privileges;
172.0.17.1:3306
для подключения.В настоящее время используется версия mysql-server 8.0.28, можно подключиться только при использовании версии php 7.4.7 и выше.
MIT
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )