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

OSCHINA-MIRROR/yeszao-dnmp

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

✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ffi | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
| ftp | ✓ | ✓ | ✓ | | | | | | | |
| gd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | gearman | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | geoip | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | geos* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | geospatial | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | gettext | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | gmagick | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | gmp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | gnupg | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | grpc | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | http | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | igbinary | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | imagick | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | imap | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | inotify | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | interbase | | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | intl | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ion | ✓ | ✓ | ✓ | ✓ | | | | | | | |
| ioncube_loader | | | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | jsmin | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | json_post | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | jsonpath | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | |
| ldap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | luasandbox | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | lz4* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | lzf | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | mailparse | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | maxminddb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| mcrypt | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | memcache | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | memcached | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ memprof — специальные требования для memprof;
mongo — ;
mongodb — ;
mosquitto — ;
msgpack — ;
mssql — ;
mysql — ;
mysqli — ;
newrelic — ;
oauth — ;
oci8 — ;
odbc — ;
opcache — ;
opencensus — ;
openswoole — ;
opentelemetry — ;
parallel — специальные требования для parallel;
parle — специальные требования для parle;
pcntl — ;
pcov — ;
pdo_dblib — ;
pdo_firebird — ;
pdo_mysql — ;
pdo_oci — ;
pdo_odbc — ;
pdo_pgsql — ;
pdo_sqlsrv — ;
pgsql — ;
php_trie — ;
phpy — специальные требования для phpy;
pkcs11 — ;
pq — ;
propro — ;
protobuf — ;
pspell — . | timezonedb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | uopz | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | uploadprogress | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | uuid | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | uv | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | | | vips* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | vld | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | wddx | | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | wikidiff2* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | xdebug | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | xdiff | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | xhprof | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | xlswriter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | xmldiff | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | xmlrpc | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | xsl | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | yac | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | yaml | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | yar | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | zephir_parser | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | zip | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | zmq | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | zookeeper | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | zstd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

Number of supported extensions: 147

此扩展来自https://github.com/mlocati/docker-php-extension-installer 参考示例文件

3.4 Host中使用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 使用composer

方法1:主机中使用composer命令

  1. 确定composer缓存的路径。比如,我的dnmp下载在~/dnmp目录,那composer的缓存路径就是~/dnmp/data/composer
  2. 参考bash.alias.sample示例文件,将对应 php composer 函数拷贝到主机的 ~/.bashrc文件。

    这里需要注意的是,示例文件中的~/dnmp/data/composer目录需是第一步确定的目录。

  3. 让文件起效:
    source ~/.bashrc
  4. 在主机的任何目录下就能用composer了:
    cd ~/dnmp/www/ **composer create-project yeszao/fastphp project --no-dev**
    
5. (可选)第一次使用 composer 会在 `~/dnmp/data/composer` каталоге под генерацией config.json файла, можно в этом файле указать внутренний репозиторий, например:

    ```json
    {
        "config": {},
        "repositories": {
            "packagist": {
                "type": "composer",
                "url": "https://mirrors.aliyun.com/composer/"
            }
        }
    }

Метод второй: использование команды 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, чтобы контейнер мог получить доступ к хосту.

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

Расположение файлов журнала зависит от конфигурации каждого журнала в conf.

5.1 Журнал Nginx

Журнал Nginx — это наиболее часто используемый журнал, поэтому он хранится отдельно в корневом каталоге log.

Каталог log сопоставляется с каталогом /var/log/nginx контейнера Nginx, поэтому в конфигурации 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 в каталог data, соответствующий каталогу проекта mysql, который соответствует каталогу /var/log/mysql/ контейнера.

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

Это конфигурация mysql.conf для файлов журналов.

6. Управление базой данных

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

6.1 phpMyAdmin

Контейнер phpMyAdmin сопоставлен с портом хоста 8080, поэтому адрес доступа к phpMyAdmin на хосте — http://localhost:8080.

Информация о подключении MySQL:

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

6.2 phpRedisAdmin

Контейнер phpRedisAdmin сопоставлен с портом хоста 8081, поэтому адрес доступа к phpRedisAdmin на хосте — http://localhost:8081.

Информация о подключении Redis:

  • host: (сеть контейнера Redis)
  • port: 6379

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

Чтобы использовать его в производственной среде, выполните следующие действия:

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

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

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

См. эту проблему: https://github.com/yeszao/dnmp/issues/91.

8.2 Использование cron для периодических задач в Docker

Использование cron для периодических задач в Docker.

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

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

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

Существует два случая:

Первый случай — в коде PHP.

// Подключение к MySQL
$dbh = new PDO('mysql:host=mysql;dbname=mysql',

Опубликовать ( 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