快速开始

先决条件

支持的操作系统

  • 支持主流 Linux 发行版本(基于 Debian / RedHat macOS 包括 OpenKylin 等国产操作系统)
操作系统架构软件要求
linux/amd64x86_64docker、docker compose
linux/arm64aarch64docker、docker compose

LDNMP 支持的技术栈

服务版本
Nginx1.27.x
MySQL9.0.x、9.1.x
PHP8.3.x、8.4.x
Adminerlatest
Redis7.x
应用版本更新与官方保持同步。

目录结构

相对目录描述
./apps/mysql/confMySQL配置文件所在路径
./apps/mysql/dataMySQL数据存放目录
./apps/mysql/logsMySQL日志存放路径
./apps/nginxNginx配置文件目录
./apps/nginx/sslNginx证书存放目录
./apps/nginx/logsNginx日志存放目录
./web网站存放目录
./apps/phpPHP配置文件目录
./apps/php/logsPHP-FPM日志目录
./apps/php/etcphp.ini php-fpm.conf 配置目录
./apps/redis/confRedis 配置文件所在目录
./apps/redis/data数据存储目录
安装相对目录可根据需要编辑 docker-compose.yaml 修改。

已安装并支持的PHP扩展

ExtensionPHP 8.4PHP 8.3
amqp
apcu
apcu_bc
ast
bcmath
bitset
blackfire
brotli
bz2
calendar
cassandra*
cmark
csv
dba
ddtrace*
decimal
ds
ecma_intl*
enchant
ev
event
excimer
exif
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
md4c
memcache
memcached
memprof*
mongo
mongodb
mosquitto
msgpack
mssql
mysql
mysqli
newrelic
oauth
oci8
odbc
opcache
opencensus
openswoole
opentelemetry
parallel*
parle*
pcntl
pcov
pdo_dblib
pdo_firebird
pdo_mysql
pdo_oci
pdo_odbc
pdo_pgsql
pdo_sqlsrv
pgsql
phalcon
php_trie
phpy*
pkcs11
pq
propro
protobuf
pspell
psr
pthreads*
raphf
rdkafka
recode
redis
relay
saxon*
seasclick
seaslog
shmop
simdjson*
smbclient
snappy
snmp
snuffleupagus
soap
sockets
sodium*
solr
sourceguardian
spx
sqlsrv*
ssh2
stomp
swoole
sybase_ct
sync
sysvmsg
sysvsem
sysvshm
tensor
tideways
tidy
timezonedb
uopz
uploadprogress
uuid
uv
vips*
vld
wddx
wikidiff2*
xdebug
xdiff
xhprof
xlswriter
xmldiff
xmlrpc
xpass*
xsl
yac
yaml
yar
zephir_parser
zip
zmq
zookeeper
zstd

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

PS: the pre-installed PHP extensions are excluded from this list. You can list them with the following command (change php:8.4.2-fpm-alpine to reflect the PHP version you are interested in):

$ docker run --rm php:8.4.2-fpm-alpine  php -m
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
random
readline
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

快速开始

启动过程: 拉取代码 – 拉取镜像 – 启动服务, 其中 PHP 镜像是基于官方 PHP 镜像默认安装了所有 PHP 扩展, 因此无需再安装 PHP 扩展, 开箱即用。

  1. 下载在线部署包
    wget https://renwole.com/ldnmp/ldnmp-1.4.1.tar.gz
  2. 解压
    tar zxf ldnmp-1.4.1.tar.gz
  3. 设置目录权限
    chmod -R 777 ldnmp*
  4. 进入项目目录, 执行以下命令启动服务
    docker-compose up -d 或 docker compose up -d
  5. 安装完成后,在浏览器中访问:http://localhost:8084https://localhost:8085 (自签名HTTPS) 就能看到安装后的效果, PHP代码在文件./web/index.php
  6. 可访问 http://localhost:8086 访问 Adminer 管理 MySQL 数据库
  7. 安装完成后,执行如下命令可查看 MySQL 密码,账号默认:root
    cat docker-compose.yaml | grep MYSQL_ROOT_PASSWORD

自定义安装

  1. 默认会自动安装 docker-compose.yaml 中所有的服务, 即: Nginx, MySQL, PHP, Adminer
  2. 只安装 Nginx
    docker-compose up -d nginx 
  3. 只安装 PHP
    docker-compose up -d php
  4. 只安装 MySQL
    docker-compose up -d mysql

PHP 扩展

  1. 可根据需要编辑 docker-compose.yaml 找到 PHP_EXTENSIONS 默认是所有的 PHP 扩展, 根据需要删除或增加 https://github.com/mlocati/docker-php-extension-installer 中支持的 PHP 扩展, 多个扩展以空格分隔(构建支持多平台操作,可参考:https://docs.docker.com/build/building/multi-platform/
  2. 编辑完成后, 执行如下命令开始构建
    docker-compose build 

    docker compose build
  3. 执行如下命令启动构建后的服务
    docker-compose up -d 

    docker compose up -d

管理

重启 Nginx

docker restart nginx

重启 MySQL

docker restart mysql

重启 PHP

docker restart php

重启 Adminer

docker restart adminer

可选参数: docker <stop|start|restart> servicename

默认端口

服务容器暴露端口默认端口
Nginx8084(http)/ 8085(https)80/443
PHP90009000
MySQL33073306
Adminer80868080
Redis63796379
可编辑 docker-compose.yaml 修改对应服务的容器暴露端口

卸载

  1. 找到 docker-compose.yaml 文件所在目录,执行如下命令停止服务
    docker-compose down
  2. 在终端执行如下命令可删除所有数据
    rm -rf apps docker-compose.yaml web
  3. 在终端执行如下命令删除 Docker 镜像
    docker rmi $(docker images | grep 'php|nginx|mysql' | awk '{print $3}')

卸载删除意味着所有数据将不复存在且不可逆, 请先备份。卸载删除意味着所有数据将不复存在且不可逆, 请先备份。

8 thoughts on “快速开始

  1. ilnmp-mysql

    mysql 源报错,换个源,安装失败,提示:centos7 mysql The server quit without updating PID file

    Reply
    1. Node Post author

      以前的虚拟机内存小,所以关闭后不至于在编译的时候内存不足导致Kill掉,不过现在随着机器规格的提高和性价比,该参数可以根据自己的需求关闭或开启。

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *