文章详细说明部署Docker LDNMP环境的超详细教程,教程可能是全网最详细教程,手把手保姆级教程
Compose安装了两个不同版本的PHP,一个是最新版8.x的,一个是稳定版7.4.3.3的,后续可以根据需要自行选择使用,实现跟使用宝塔一样简单方便的搭建网站。上传、修改网站文件等操作和宝塔基本无异,非常方便快捷
以下命令基于Debian11系统,其他系统按要求自行修改命令,使用docker尽量不要低于1H1G的机器
新手看起来教程特别多,等熟悉了以后在安装,也就三四个步骤,简单的很
更新软件包
![图片[1]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428142546294-QQ截图20240428142536.png)
apt update -y && apt upgrade -y && apt install -y curl wget sudo socat gzip unzip
更新软件包,安装所需工具
更新软件包列表 (-y 参数表示自动确认),安装常用的实用工具 (-y 参数表示自动确认)
curl: 用于在命令行中传输数据的工具,支持多种协议
wget: 用于从网络上下载文件的工具
sudo: 允许普通用户以超级用户的权限执行命令的工具,提高了系统安全性
socat: 用于在两个数据流之间建立连接的工具,支持多种协议
gzip:用于压缩、解压缩 tar.gz 格式的压缩文件的工具,tar.gz可以保存文件权限等信息
unzip:用于解压缩 zip 格式的压缩文件的工具,比如wordpress的安装包
根据自身需要,自行添加/删除相应的工具
运行后如果出现报错可能是由于临时的网络问题或者该资源不再可用所致。
![图片[2]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428140731855-QQ截图20240428140707.png)
解决方法
删除 /etc/apt/sources.list 文件中所有代码,将以下代码(DMIT机器的默认配置)粘贴到文件中保存即可
deb https://ftp.debian.org/debian/ bullseye main contrib non-free
# deb-src https://ftp.debian.org/debian/ bullseye main contrib non-free
deb https://ftp.debian.org/debian/ bullseye-updates main contrib non-free
# deb-src https://ftp.debian.org/debian/ bullseye-updates main contrib non-free
deb https://ftp.debian.org/debian/ bullseye-backports main contrib non-free
# deb-src https://ftp.debian.org/debian/ bullseye-backports main contrib non-free
deb https://security.debian.org/debian-security bullseye-security main contrib non-free
# deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free
![图片[3]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428141555888-QQ截图20240428141519.png)
弹窗
![图片[4]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428142020426-QQ截图20240428141944.png)
这个界面显示了一个配置文件 (/etc/ssh/sshd_config
) 在本地已经被修改过,但是一个新的版本可用。询问你想要如何处理这种情况。
以下是选项:
- install the package maintainer’s version:安装软件包维护者提供的版本,这样会覆盖你本地修改的内容,并使用维护者提供的默认配置。
- keep the local version currently installed:保留当前安装的本地版本,不安装新的版本。这意味着你的本地修改将被保留。
- show the differences between the versions:显示本地修改版本和可用版本之间的差异。
- show a side-by-side difference between the versions:以并排方式显示本地修改版本和可用版本之间的差异。
- show a 3-way difference between available versions:以三方差异的方式显示本地修改版本、当前安装版本和可用版本之间的差异。
- do a 3-way merge between available versions:对可用版本、当前安装版本和本地修改版本进行三方合并。
选择第一个回车即可
安装 Docker和Docker-Compose
![图片[5]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428142804722-QQ截图20240428142758.png)
curl -fsSL https://get.docker.com | sh
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
3行命令可以一次性全部复制粘贴进SSH
如果安装docker期间有任何报错,就重装docker或重装系统解决
curl -fsSL https://get.docker.com | sh
: 这个命令会使用 curl 下载 Docker 安装脚本,并传递给 sh 命令执行。该脚本会自动检测你的系统类型并安装相应的 Docker 版本。curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
: 这个命令用于下载 Docker Compose 的最新版本。$(uname -s)
和$(uname -m)
是用于获取当前系统的操作系统和架构信息的命令。下载的文件会保存到/usr/local/bin/docker-compose
路径。chmod +x /usr/local/bin/docker-compose
: 这个命令给下载的 Docker Compose 可执行文件添加执行权限,使它可以被执行。
创建文件目录
![图片[6]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428143005996-QQ截图20240428142955.png)
sudo mkdir -p /www/html /www/html/guaishou.eu.org /www/nginx /www/nginx/certs /www/nginx/conf.d /www/redis /www/mysql /www/log /www/log/nginx /www/phpmyadmin
输入命令,回车即可一键创建所需要的文件夹,需要创建其他文件夹,在命令中相应的位置添加就行了
把guaishou.eu.org
替换成你的域名
在根目录/www下创建/html文件夹,在/www/html下创建/guaishou.eu.org文件夹
在/www下创建/nginx文件夹,在/www/nginx下创建/certs文件夹,在/www/nginx下创建/conf.d文件夹
在/www下创建/redis文件夹,在/www下创建/mysql文件夹
在/www下创建/log文件夹,在/www/log下创建/nginx文件夹
在/www下创建/phpmyadmin文件夹
/www/html
: 存放网站文件的根目录。网站1,网站2,网站3…的文件都存储在这里/www/html/guaishou.eu.org
: 存放名为 “guaishou.eu.org” 的网站文件。/www/nginx
: 存放 Nginx 相关文件的根目录。/www/nginx/certs
: 存放 SSL/TLS 证书文件。网站1,网站2,网站3…的证书文件都存储在这里/www/nginx/conf.d
: 存放 Nginx 配置文件的目录。网站1,网站2,网站3…的conf
文件都存储在这里/www/redis
: 存放 Redis 数据库相关文件的根目录。/www/mysql
: 存放 MySQL 数据库相关文件的根目录。/www/log
: 存放日志文件的根目录。/www/log/nginx
: 存放 Nginx 日志文件的目录。/www/phpmyadmin
: 存放 phpMyAdmin 相关文件的根目录。
目录树
/www
├── html
│ └── guaishou.eu.org
├── nginx
│ ├── certs
│ ├── conf.d
│ └── log
│ └── nginx
├── mysql
├── phpmyadmin
└── redis
目录是根据以下yml文件代码创建的,个人习惯于在根目录下创建www文件夹,然后再www文件夹下创建其他文件目录。html文件夹下存放网站数据,也可以重命名data、web等等
文件夹名称按照自己喜好重命名,但是一定要清晰、准确,也要跟下面的docker-compose.yml中的地址相对应
创建docker-compose.yml
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./html:/var/www/html
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/certs:/etc/nginx/certs
- ./log/nginx:/var/log/nginx
logging:
driver: "json-file"
options:
max-size: "10m" # 每个日志文件最大10MB
max-file: "1" # 最多保留1个日志文件
restart: always
networks:
- my_network
php:
image: php:fpm
container_name: php
restart: always
volumes:
- ./html:/var/www/html
networks:
- my_network
php74:
image: php:7.4.33-fpm
container_name: php74
restart: always
volumes:
- ./html:/var/www/html
networks:
- my_network
mysql:
image: mysql:5.7
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- ./mysql:/var/lib/mysql
restart: always
networks:
- my_network
redis:
image: redis
container_name: redis
restart: always
volumes:
- ./redis:/data
networks:
- my_network
phpmyadmin:
image: phpmyadmin/phpmyadmin:5.2.1
container_name: phpmyadmin
ports:
- "777:80"
environment:
- PMA_HOST=mysql
- MYSQL_ROOT_PASSWORD= ${MYSQL_ROOT_PASSWORD}
depends_on:
- mysql
restart: always
networks:
- my_network
networks:
my_network:
driver: bridge
根据自身需求修改,如果不需要phpmyadmin、redis或想留一个最新的php就把那段代码整段删除,如果需要添加其他容器,就在代码底部的networks:
上面添加。注意代码缩进和空格行
MYSQL_ROOT_PASSWORD=1234567
MYSQL_USER=admin
MYSQL_PASSWORD=888888
在docker-compose.yml同级文件夹内创建一个.env
文件,存放docker-compose.yml文件中设置的密码。这样更安全
compose文件需要保存在/www
文件夹下,否则执行的时候找不到相关目录,因为文件中的./
表示当前目录
使用FinalShell
工具就用这个方法,FinalShell窗口内直接粘贴代码,代码缩进会出现问题
![图片[7]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428144916584-QQ截图20240428144907.png)
新建文件,命名为docker-compose.yml
,双击文件打开编辑
![图片[8]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428145127105-QQ截图20240428145108.png)
粘贴代码,Ctrl+S
保存
本地新建docker-compose.yml文件,保存代码后,拖动到FinalShell
窗口上传即可
使用其他SSH工具,可以尝试这个方法
cd /www && nano docker-compose.yml
进入/www文件夹,编辑docker-compose.yml文件,如果没有则新建一个
粘贴以上代码,快捷键 Ctrl+X
退出,选择Y
保存
version: '3.8' # 指定 Docker Compose 版本
services: # 定义多个服务
# Nginx 服务
nginx:
image: nginx:latest # 使用最新版的 Nginx 镜像,也可以自己定义版本,将latest修改为版本号即可
container_name: nginx # 容器的名称为 nginx
ports: #端口
- "80:80" # 将容器的80端口映射到主机的80端口,用于HTTP访问,不要修改
- "443:443" # 将容器的443端口映射到主机的443端口,用于HTTPS访问,不要修改
volumes: #数据卷
- ./html:/var/www/html # 将容器内/var/www/html网站数据文件夹挂载到主机/html文件夹
- ./nginx/conf.d:/etc/nginx/conf.d # 将容器内/etc/nginx/conf.d文件夹的Nginx 配置挂载到主机/nginx/conf.d文件夹
- ./nginx/certs:/etc/nginx/certs # 将容器内/etc/nginx/certs的SSL证书文件夹挂载到主机的/nginx/certs
- ./log/nginx:/var/log/nginx # 将容器内/var/log/nginx的Nginx日志文件挂载到主机的log/nginx
restart: always # 容器停止后自动重启
networks: # 网络
- my_network # 让这个容器使用一个名为 my_network 的网络
# PHP 服务
php:
image: php:fpm # 使用 PHP-FPM 镜像,FPM表示可以跟nginx通讯
container_name: php # 容器的名称为 php
restart: always # 容器停止后总是自动重启
volumes:
- ./html:/var/www/html # 将PHP容器内/var/www/html的php网站文件挂载到主机的/html
networks: # 网络
- my_network # 让这个容器使用一个名为 my_network 的网络
# PHP 7.4 服务
php74:
image: php:7.4.33-fpm # 使用 PHP 7.4.33-FPM 镜像,FPM表示可以跟nginx通讯
container_name: php74 # 容器的名称为 php74
restart: always # 容器停止后总是自动重启
volumes:
- ./html:/var/www/html # 将PHP74容器内/var/www/html的php网站文件挂载到主机的/html
networks: # 网络
- my_network # 让这个容器使用一个名为 my_network 的网络
# MySQL 服务,数据库
mysql:
image: mysql:5.7 # 使用 MySQL 5.7 镜像
container_name: mysql # 容器的名称为 mysql
environment:
MYSQL_ROOT_PASSWORD: password123 # 设置数据库 root 用户的密码,进入数据库操作时候用
MYSQL_USER: admin # 数据库登录用户名,修改成自己的
MYSQL_PASSWORD: abc123 # 数据库密码,复杂点
volumes:
- ./mysql:/var/lib/mysql # 将容器内mysql文件目录/var/lib/mysql挂载到主机/mysql
restart: always # 容器停止后总是自动重启
networks: # 网络
- my_network # 让这个容器使用一个名为 my_network 的网络
# Redis 服务,加快网站页面生成速度,不需要可以整段删除
redis:
image: redis # 使用 Redis 镜像
container_name: redis # 容器的名称为 redis
restart: always # 容器停止后总是自动重启
volumes:
- ./redis:/data # 将容器内的/data 目录文件挂载到主机/redis文件夹
networks: # 网络
- my_network # 让这个容器使用一个名为 my_network 的网络
# phpMyAdmin 服务,可视化面板工具,方便对数据库操作
phpmyadmin:
image: phpmyadmin/phpmyadmin:5.2.1 # 使用 phpMyAdmin 5.2.1 镜像版本
container_name: phpmyadmin # 容器的名称为 phpmyadmin
ports:
- "777:80" # 将容器的 80 端口映射到主机的 777 端口,也可以使用888、999,随便
environment:
- PMA_ARBITRARY=1 # 启用任意主机连接模式
- PMA_HOST=mysql # 指定连接的 MySQL 主机
- MYSQL_ROOT_PASSWORD=password123 # 数据库 root 用户的密码,要跟上面数据库root用户密码相同
depends_on:
- mysql # 等待 MySQL 容器启动后再启动 phpMyAdmin 容器
volumes:
- ./phpmyadmin:/var/www/phpmyadmin # 挂载容器内的/var/www/phpmyadmin目录到主机的/phpmyadmin文件夹
restart: always # 容器停止后总是自动重启
networks: # 网络
- my_network # 让这个容器使用一个名为 my_network 的网络
networks: # 定义网络
my_network: # 定义一个名为 my_network 的网络
driver: bridge # 设置网络的驱动程序为 bridge,这种驱动程序创建一个本地网络桥接,允许容器连接到该桥接上进行通信
#php,php74两个php容器的挂载路径一定要一样
#后者是容器内的端口,前面是主机的端口
#后者是容器内的目录,前面是主机的目录
#在 Docker 中,映射和挂载通常指的是同一个概念,即将主机上的文件或目录与容器内的文件或目录关联起来。
#挂载好以后,就可以直接在主机上修改相关文件了,容器内的相关文件也会同步更新
SSL证书申请(可跳过此步骤)
![图片[9]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428151737433-QQ截图20240428151724.png)
使用下面脚本申请证书会临时占用80端口,所以先申请比较方便,否则后面再申请需要先停止Nginx在申请,申请完还需要重启Nginx,想后面再申请就先跳过这个步骤
curl https://get.acme.sh | sh
使用 curl 下载 acme.sh 安装脚本,并传递给 sh 命令执行。安装 acme.sh 并配置好环境
acme.sh 是一个用于管理 Let’s Encrypt 证书的脚本工具,让你可以方便地生成、更新和安装 SSL/TLS 证书。
![图片[10]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428151901609-QQ截图20240428151847.png)
![图片[11]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428153437191-QQ截图20240428153359.png)
申请成功后,证书文件夹就会多出两个证书文件
~/.acme.sh/acme.sh --register-account -m your@email.com --issue -d guaishou.eu.org --standalone --key-file /www/nginx/certs/guaishou_eu_org_key.pem --cert-file /www/nginx/certs/guaishou_eu_org_cert.pem --force
your@email.com
替换成自己邮箱,也可以使用默认,guaishou.eu.org
域名替换成自己的,还有文件路径
~/.acme.sh/acme.sh
: 这是 acme.sh 工具的路径,用于执行 acme.sh 命令。--register-account -m your@email.com
: 这部分用于注册一个 acme.sh 账户,并指定一个邮箱地址用于账户关联。--issue -d guaishou.eu.org
: 这部分用于为指定的域名生成证书,其中-d
选项用于指定需要生成证书的域名。在这个例子中,指定的域名是 “guaishou.eu.org”。--standalone
: 这个选项指定使用 standalone 模式来验证域名所有权。在 standalone 模式下,acme.sh 将会在本地启动一个临时的 HTTP 服务器,用于接收 Let’s Encrypt 的验证请求。--key-file /www/nginx/certs/guaishou_eu_org_key.pem --cert-file /www/nginx/certs/guaishou_eu_org_cert.pem
: 这两个选项用于指定生成的 SSL/TLS 证书的保存路径,其中--key-file
指定了私钥文件的保存路径,--cert-file
指定了证书文件的保存路径。--force
: 这个选项用于强制生成证书,即使之前已经生成过相同域名的证书。
申请泛域名证书方法
常见失败原因
- 域名没有解析到当前服务器
- 路径错误
- 申请次数过多
- 网络不通畅等
编辑Nginx配置
更多方法参考文章的 创建compose文件
cd /www/nginx/conf.d && nano guaishou.eu.org.conf
进入/www/nginx/conf.d文件夹,编辑一个guaishou.eu.org.conf的文件
server {
listen 80;
server_name guaishou.eu.org www.guaishou.eu.org;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name guaishou.eu.org www.guaishou.eu.org;
http2 on;
ssl_certificate /etc/nginx/certs/guaishou_eu_org_cert.pem;
ssl_certificate_key /etc/nginx/certs/guaishou_eu_org_key.pem;
root /var/www/html/guaishou.eu.org; # 这个路径一定是容器内部路径
index index.php;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
fastcgi_pass php74:9000; # 如果使用最新版php就把代码中的74删除
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
client_max_body_size 50m;
}
修改并粘贴以上代码,保存
以上代码可作为基础代码使用,后续可添加其他需要配置的代码,不懂就问ChatGPT
server {
listen 80; # 监听 80 端口,用于 HTTP 请求
server_name guaishou.eu.org www.guaishou.eu.org; # 服务器名称,响应这两个域名的请求
return 301 https://$host$request_uri; # 重定向所有 HTTP 请求到 HTTPS
}
server {
listen 443 ssl; # 监听 443 端口,用于 HTTPS 请求,并启用 SSL
server_name guaishou.eu.org www.guaishou.eu.org; # 服务器名称,响应这两个域名的请求
http2 on; # 启用 HTTP/2 协议
ssl_certificate /etc/nginx/certs/guaishou_eu_org_cert.pem; # SSL 证书路径
ssl_certificate_key /etc/nginx/certs/guaishou_eu_org_key.pem; # SSL 私钥路径
root /var/www/html/guaishou.eu.org; # 网站根目录,这是容器内的路径
index index.php; # 默认访问文件为 index.php
try_files $uri $uri/ /index.php?$args; # 尝试匹配 URI,如果不存在则重定向到 index.php
#以后添加代码就加在这个位置,注意代码缩进
location ~ \.php$ {
fastcgi_pass php74:9000; # 将 PHP 请求转发给名为 php74 的容器,使用 9000 端口,想使用最新版php就把74删除
fastcgi_index index.php; # FastCGI 请求的默认索引文件
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # FastCGI 脚本文件路径
include fastcgi_params; # 包含 FastCGI 参数配置文件
}
client_max_body_size 50m; # 设置客户端请求体的最大尺寸为 50MB
}
运行compose
cd /www && docker-compose up -d
进入/www文件夹根目录并运行docker-compose
文件
![图片[12]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428155015516-QQ截图20240428154956.png)
显示全部Started
表示安装成功
赋予权限
运行docker-compose文件后,此时还在www文件夹下,输入cd,回车返回到家目录
(root@xxxxx:~#)
以下命令依次输入,回车
docker exec -it nginx chmod -R 777 /var/www/html
docker exec -it php chmod -R 777 /var/www/html
docker exec -it php74 chmod -R 777 /var/www/html
![图片[13]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428160034666-QQ截图20240428155959.png)
赋予权限成功
安装PHP扩展
![图片[14]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428161514871-QQ截图20240428161458.png)
上面通过docker-compose安装的php中已经默认包含了一些库和依赖,下面安装的也是常用的基础库和依赖
#安装PHP最新版的扩展
docker exec php apt update && docker exec php apt install -y libmariadb-dev-compat libmariadb-dev libzip-dev libmagickwand-dev imagemagick
docker exec php docker-php-ext-install mysqli pdo_mysql zip exif gd intl bcmath opcache
docker exec php pecl install imagick && docker exec php sh -c 'echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini'
docker exec php pecl install redis && docker exec php sh -c 'echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini'
docker exec php sh -c 'echo "file_uploads=On \n upload_max_filesize=128M \n post_max_size=128M \n memory_limit=256M \n max_execution_time=600" > /usr/local/etc/php/conf.d/uploads.ini'
#安装PHP74版本的扩展
docker exec php74 apt update && docker exec php74 apt install -y libmariadb-dev-compat libmariadb-dev libzip-dev libmagickwand-dev imagemagick
docker exec php74 docker-php-ext-install mysqli pdo_mysql zip exif gd intl bcmath opcache
docker exec php74 pecl install imagick && docker exec php74 sh -c 'echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini'
docker exec php74 pecl install redis && docker exec php74 sh -c 'echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini'
docker exec php74 sh -c 'echo "file_uploads=On \n upload_max_filesize=128M \n post_max_size=128M \n memory_limit=256M \n max_execution_time=600" > /usr/local/etc/php/conf.d/uploads.ini'
docker exec php apt update && docker exec php apt install -y libmariadb-dev-compat libmariadb-dev libzip-dev libmagickwand-dev imagemagick
:这个命令首先更新 PHP 容器中的包列表(apt update
),然后安装了一系列依赖项和库,包括 MariaDB 开发库、Zip 开发库、MagickWand 开发库以及 ImageMagick 库。需要其他库就在后面添加docker exec php docker-php-ext-install mysqli pdo_mysql zip exif gd intl bcmath opcache
:这个命令使用了docker-php-ext-install
脚本来安装 PHP 扩展。在这里安装了一系列 PHP 扩展,包括 mysqli、pdo_mysql、zip、exif、gd、intl、bcmath 和 opcache。需要其他扩展就在后面添加docker exec php pecl install imagick && docker exec php sh -c 'echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini'
:这个命令使用了 PECL 来安装 imagick 扩展,然后将其配置为 PHP 的扩展。docker exec php pecl install redis && docker exec php sh -c 'echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini'
:这个命令使用了 PECL 来安装 redis 扩展,然后将其配置为 PHP 的扩展。docker exec php sh -c 'echo "file_uploads=On \n upload_max_filesize=128M \n post_max_size=128M \n memory_limit=256M \n max_execution_time=600" > /usr/local/etc/php/conf.d/uploads.ini'
这个命令在 PHP 容器中创建了一个配置文件 uploads.ini,并设置了上传文件的大小为 128MB, PHP 内存限制为 256MB等其他参数
PHP74同上
亲测使用DMIT7402U或7443U安装单个php扩展过程耗时3分10秒左右
使用Kurun弹性配置安装单个php扩展过程耗时7分钟左右,所以根据自己机器耐心等待安装完成
重启PHP
![图片[15]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428161552729-QQ截图20240428161542.png)
# 重启php和php74
docker restart php
docker restart php74
查看PHP扩展
![图片[16]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428161702608-QQ截图20240428161700.png)
上面还有很多,自己查看有没有缺失的扩展,很多时候命令都会漏装
docker exec -it php php -m
docker exec -it php74 php -m
进入数据库
docker exec -it mysql mysql -u root -p
![图片[17]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428161921197-QQ截图20240428161911.png)
输入上面Compose文件中设置的MYSQL_ROOT_PASSWORD:
密码
此时输入密码不显示,鼠标右键粘贴也可以,输完按回车即可进入
![图片[18]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428162008416-QQ截图20240428162002.png)
成功进入数据库
创建数据库
CREATE DATABASE guaishou_eu_org;
# CREATE DATABASE 123_com;
# CREATE DATABASE 456_com;
把上面命令替换成自己的域名或按照自己喜好命名,建议使用网站域名命名,这个数据库名后续安装网站的时候会用到
创建一个就输入一行命令就行,创建多个数据库就一次性输入多行命令批量创建
![图片[19]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428162105701-QQ截图20240428162051.png)
提示Query OK
就成功了
数据库赋予用户权限
GRANT ALL PRIVILEGES ON guaishou_eu_org.* TO 'guaishou'@'%';
# GRANT ALL PRIVILEGES ON 123_com.* TO 'guaishou'@'%';
# GRANT ALL PRIVILEGES ON 456_com.* TO 'guaishou'@'%';
这里的guaishou
是上面compose文件中MYSQL_USER: guaishou
命名的用户名
创建一个就输入一行命令就行,创建多个数据库就一次性输入多行命令批量创建
![图片[20]-Docker Compose部署LDNMP环境的超详细教程和其他注意事项 - 我是Tron-我是Tron](https://www.tronlink.run/wp-content/uploads/2024/04/20240428162412840-QQ截图20240428162349.png)
提示Query OK
就成功了
GRANT ALL PRIVILEGES
: 授予所有权限,包括 SELECT、INSERT、UPDATE、DELETE、CREATE、DROP 等。ON guaishou_eu_org.*
: 在数据库guaishou_eu_org
的所有表上执行操作。TO 'guaishou'@'%'
: 对于用户名为'guaishou'
的用户,允许从任何主机('%'
)进行访问。
这条命令会使 'guaishou'
用户成为 guaishou_eu_org
数据库的超级用户,具有对该数据库的所有权限。
exit
回车,退回到主机的 家目录
数据库相关操作可以通过 http://域名:777
访问phpmyadmin进行管理
重启所有容器
docker restart $(docker ps -q)
重启所有容器,重载所有配置
ok 结束 现在已经成功了部署了基本环境,后续直接上传到www/html/网站/文件夹下,申请证书,添加Nginx配置就能运行
相关命令
查看数据库列表
SHOW DATABASES;
删除数据库
DROP DATABASE guaishou_eu_org;
查看权限
SHOW GRANTS FOR 'guaishou'@'%';
取消数据库赋予的用户权限
REVOKE ALL PRIVILEGES ON guaishou_eu_org.* FROM 'guaishou'@'%';
文章版权归作者所有,未经允许请勿转载!
禁止用于商业或者非法用途,否则后果自负!
本站内容仅限用于学习目的,请您下载后尽快删除!
- 最新
- 最热
只看作者