本次搭建的 LNMP 是 Linux + Nginx + MySQL 8.0 + PHP 8.1 组合(生产环境主流稳定版本),基于 Docker Compose 实现一键编排、容器化隔离部署,无需手动配置任何环境依赖,支持「目录挂载、端口映射、数据持久化、容器自启」,直接可用于开发 / 生产环境。
一、环境准备
1. 安装 Docker 和 Docker Compose
二、启动docker
bash
sudo systemctl start docker
sudo systemctl enable docker
三、创建目录
在 /opt 目录下创建 docker-lnmp 项目目录,并进入该目录:
bash
mkdir -p /opt/docker-lnmp
cd /opt/docker-lnmp
在该目录下,我们将创建所需的子目录和配置文件:
bash
mkdir -p nginx/conf.d
mkdir -p nginx/html
mkdir -p wordpress_data
mkdir -p mysql_data
mkdir -p ssl/certs
mkdir -p ssl/private
二、配置文件
1. docker-compose.yml 文件
在 /opt/docker-lnmp 下创建 docker-compose.yml 文件,配置 Nginx、PHP 和 MySQL 服务:
bash
version: "3"
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d # 挂载 Nginx 配置
- ./nginx/html:/usr/share/nginx/html # 挂载静态文件和 WordPress 数据
- ./wordpress_data:/var/www/html # 挂载 WordPress 数据
- ./ssl/certs:/etc/nginx/certs # 挂载 SSL 证书
- ./ssl/private:/etc/nginx/private # 挂载 SSL 私钥目录
depends_on:
- php
restart: always
php:
image: php:8.2-fpm
container_name: php
volumes:
- ./wordpress_data:/var/www/html # 挂载 WordPress 数据
restart: always
mysql:
image: mysql:5.7
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: root123456
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wp123456
volumes:
- ./mysql_data:/var/lib/mysql # 持久化 MySQL 数据
ports:
- "3306:3306"
restart: always
2. Nginx 配置文件
在 nginx/conf.d 目录下创建 nginx.conf 文件,配置 Nginx 处理 HTTP 和 PHP 请求:
HTTP 配置(端口 80)
bash
server {
listen 80;
server_name localhost;
# 强制 HTTP 到 HTTPS 重定向
location / {
return 301 https://$host$request_uri;
}
}
HTTPS 配置(端口 443)
bash
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/nginx/private/nginx-selfsigned.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
三、启动 Docker 服务
1. 启动容器
执行以下命令启动所有容器服务:
bash
docker-compose up -d # 启动容器
2. 查看容器状态
查看容器状态,确认所有服务都在运行:
docker-compose ps
3. 进入容器
如果需要进入容器进行调试,可以使用以下命令:
bash
docker exec -it nginx bash # 进入 Nginx 容器
docker exec -it php bash # 进入 PHP 容器
docker exec -it mysql bash # 进入 MySQL 容器
在本地电脑浏览器输入 https://服务器IP(如 https://192.168.10.170)