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

OSCHINA-MIRROR/yeszao-dnmp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README-all-en.md 23 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 21:45 215a9d8

DNMP (Docker + Nginx/Openresty + MySQL5, 8 + PHP5, 7,8 + Redis + ElasticSearch + MongoDB + RabbitMQ) — это полнофункциональный установщик модели LNMP одним щелчком мыши с поддержкой процессоров Arm.

Рекомендуется ознакомиться с ним заранее перед использованием каталог, чтобы быстро приступить к работе и вовремя устранить проблемы.

QQ Exchange Group:

  • Group 1:572041090(Полный)
  • Group 2:300723526(Полный)
  • Group 3:878913761(Бит)

[ENGLISH] - [Адрес GitHub] - [Адрес Gitee]

Особенности проекта DNMP:

  1. 100% открытый исходный код.
  2. 100% соответствует стандартам Docker.
  3. Поддержка сосуществования нескольких версий PHP, можно переключаться произвольно (PHP5.4, PHP5.6, PHP7.1, PHP7.2, PHP7.3, PHP7.4, PHP8.0).
  4. Поддерживается привязка клюбому количеству доменных имён.
  5. ПоддержкаHTTPS и HTTP/2.
  6. Исходный код PHP, данные MySQL, файлы конфигурации, файлы журналов — всё можно напрямую изменить в хосте.
  7. Встроенная команда для установкиполного набора расширений PHP.
  8. По умолчанию поддерживаются pdo_mysql, mysqli, mbstring, gd, curl, opcache и другие часто используемые и популярные расширения, гибко настраиваемые в зависимости от среды.
  9. Выбор общих служб одним щелчком:
    • Несколько версий PHP: PHP5.4, PHP5.6, PHP7.0–7.4, PHP8.0.
    • Веб-сервисы: Nginx, Openresty.
    • Базы данных: MySQL5, MySQL8, Redis, memcached, MongoDB, ElasticSearch.
    • Очередь сообщений: RabbitMQ.
    • Доступность: Kibana, Logstash, phpMyAdmin, phpRedisAdmin, AdminMongo.
  10. Применяется в реальных проектах, обеспечивает100% доступность.
  11. Все зеркала происходят из официального репозитория Docker, безопасны и надёжны.
  12. Одна конфигурация,Windows, Linux, MacOs — все доступны.
  13. Поддерживает быстрые команды установки расширений install-php-extensions apcu.
  14. Поддерживает установку CERTBOT для бесплатного получения SSL-сертификатов https.

каталог

1. Структура каталогов

/
├── 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. Обратитесь к примерам файлов.

3.4 Использование php командной строки на хосте (php-cli)

  1. Обратитесь к файлу bash.alias.sample, скопируйте соответствующую функцию php cli в файл ~/.bashrc на хосте.
  2. Чтобы файл заработал, выполните:
    source ~/.bashrc
  3. Затем вы можете выполнять команды php на хосте:
    ~ 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

3.5 Используйте коммосер

Метод 1: Используйте команду сравнения на хосте

  1. Определите путь к кэшу компилятора. Например, моя загрузка dnmp находится в каталоге ~/dnmp, путь кэша компилятора — ~/dnmp/data/composer.
  2. Обратитесь к примеру файла [bash.alias.sample], который копирует соответствующую функцию композитора php в файл ~/.bashrc на хосте. Важно отметить, что пример файла находится в каталоге, определённом на первом шаге.
  3. Чтобы файл работал, выполните:
    source ~/.bashrc
  4. Вы можете использовать композитор в любом каталоге на хосте:
    cd ~/dnmp/www/
    composer create-project yeszao/fastphp project --no-dev
  5. При первом использовании composer будет создан файл config.json в каталоге кэша композитора. В этом файле можно указать внутренний репозиторий, например:
    {
        "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

4. Административные команды

4.1 Команды запуска и сборки сервера

Чтобы управлять службами, следуйте команде с именем сервера, например:

$ 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                       # 停止并删除容器,网络,图像和挂载卷

4.2 Добавьте команды быстрого доступа

На данный момент... Использование

При разработке мы можем часто использовать команду «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');

Если вам это действительно нужно, вы можете открыть его (в контейнере), выполнив следующие действия:

  1. Перейдите в контейнер, создайте файл журнала и измените права доступа:
    $ 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
  2. Откройте и измените файл конфигурации PHP-FPM на хосте conf/php-fpm.conf, найдите следующую строку, удалите комментарий и измените значение на: php_admin_value[error_log] = /var/log/php/php-fpm.error.log
  3. Перезапустите контейнер PHP-FPM.

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:

  • host: (сеть контейнеров MySQL для этого проекта)
  • port: 3306
  • username: (вводится вручную в интерфейсе phpmyadmin)
  • password: (вводится вручную в интерфейсе phpmyadmin).

6.2 PhpRedisAdmin

Адрес порта контейнера phpRedisAdmin, сопоставленного с хостом, равен 8081, поэтому адрес на хосте для доступа к phpMyAdmin:

http://localhost:8081

Информация о соединении Redis:

  • host: (сетевой контейнер Redis для этого проекта)
  • порт: 6379

7. Безопасность использования в формальной среде

Чтобы использовать в формальной среде, пожалуйста:

  1. Отключите отладку XDebug в php .ini
  2. Усильте политику безопасности для доступа к базам данных MySQL
  3. Усильте политики безопасности для доступа redis

8 Часто задаваемые вопросы

8.1 Как использовать ### Использование curl в PHP-коде?

Обратитесь к этой проблеме: https://github.com/yeszao/dnmp/issues/91

8.2 Docker использует cron для планирования задач

Docker использует cron для планирования задач

8.3 Время контейнера Docker

Время контейнера настраивается в файле .env с помощью переменной TZ. Список поддерживаемых часовых поясов можно найти на Википедии или на официальном сайте PHP PHP.net.

8.4 Как подключиться к серверам MySQL и Redis

Есть два случая.

Первый случай — в 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.

8.5 Как php в контейнере подключается к хосту MySQL

  1. Выполните на хосте команду 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
        ...
  1. Запустите командную строку Mysql на хосте.
 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
 mysql>flush privileges;
  1. Затем используйте php-контейнер напрямую 172.0.17.1:3306 для подключения.

8.6 SQLSTATE[HY000] [1130] Хосту «172.19.0.2» не разрешено подключаться к этому серверу MySQL

В настоящее время используется версия mysql-server 8.0.28, можно подключиться только при использовании версии php 7.4.7 и выше.

Лицензия

MIT

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

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

1
https://api.gitlife.ru/oschina-mirror/yeszao-dnmp.git
git@api.gitlife.ru:oschina-mirror/yeszao-dnmp.git
oschina-mirror
yeszao-dnmp
yeszao-dnmp
master