acentos7サーバーを使用してWordPress+docker+nginx+MySQL+slを作成する
I. 環境の調製
- システム更新および用具の取付け
# 更新系统
sudo yum update -y
# 安装基础工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 curl vim
# 关闭SELinux(可选)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- 防火壁構成
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
II. Docker環境の設置
- Docker CEをインストールする
# 添加Docker仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
- Docker Companyをインストールする
# 下载最新版本(可替换为最新版本号)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
3。 プロジェクト構造の作成
# 创建项目目录
mkdir -p ~/wordpress/{nginx,db_data,wordpress,certbot}
# 目录结构说明:
# db_data -> MySQL数据库文件
# wordpress -> WordPress程序文件
# nginx -> Nginx配置文件
# certbot -> SSL证书存储
IV。 docker-compose.yml の設定
vim ~/wordpress/docker-compose.yml
version: '3.8'
services:
db:
image: mysql:5.7
container_name: wp_db
volumes:
- ./db_data:/var/lib/mysql # MySQL数据持久化
environment:
MYSQL_ROOT_PASSWORD: your_secure_root_password # 替换为强密码
MYSQL_DATABASE: wordpress
MYSQL_USER: wp_user
MYSQL_PASSWORD: your_wp_db_password # 替换为数据库密码
networks:
- wp_net
restart: unless-stopped
wordpress:
image: wordpress:php8.2
container_name: wp_app
depends_on:
- db
volumes:
- ./wordpress:/var/www/html # WordPress代码持久化
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: your_wp_db_password
networks:
- wp_net
restart: unless-stopped
nginx:
image: nginx:alpine
container_name: wp_nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx:/etc/nginx/conf.d # Nginx配置持久化
- ./certbot:/etc/letsencrypt # SSL证书持久化
- ./wordpress:/var/www/html
depends_on:
- wordpress
networks:
- wp_net
restart: unless-stopped
networks:
wp_net:
driver: bridge
volumes:
db_data:
wordpress:
certbot:
V. Nginx の設定
- Nginx プロファイルを作成する
vim ~/wordpress/nginx/wordpress.conf
# HTTP重定向到HTTPS
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
# HTTPS服务器配置
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# SSL证书路径
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# SSL协议配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# 反向代理配置
location / {
proxy_pass http://wp_app:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态文件缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
proxy_pass http://wp_app:80;
}
# 禁止访问敏感文件
location ~ /\.ht {
deny all;
}
}
SSL証明書へのアクセス
- 基本サービスの開始
cd ~/wordpress
docker-compose up -d db wordpress # 先启动数据库和WordPress
- 暫定Nginxコンテナアプリケーション証明書
docker run -it --rm --name temp_nginx \
-v ~/wordpress/certbot:/etc/letsencrypt \
-v ~/wordpress/wordpress:/var/www/html \
-p 80:80 \
nginx:alpine
- 新しいターミナルはCertbotの塗布の証明書を実行します
docker run -it --rm --name certbot \
-v "/root/wordpress/certbot:/etc/letsencrypt" \
-v "/root/wordpress/wordpress:/var/www/html" \
certbot/certbot certonly --webroot -w /var/www/html \
-d yourdomain.com -d www.yourdomain.com \
--email admin@yourdomain.com --agree-tos --non-interactive
- 一時的なNginxコンテナを停止する
docker stop temp_nginx
VII。 フルサービスの開始
# 启动所有服务
docker-compose up -d
# 检查容器状态
docker-compose ps
VIII. 治験および経験
- ファイル権限の設定
# WordPress目录权限
sudo chown -R 33:33 ~/wordpress/wordpress # www-data用户(UID33)
# Nginx配置权限
sudo chmod 644 ~/wordpress/nginx/*.conf
- 自動更新の設定
# 创建续期脚本
vim ~/wordpress/renew_cert.sh
#!/bin/bash
docker-compose stop nginx
docker run --rm --name certbot \
-v "/root/wordpress/certbot:/etc/letsencrypt" \
-v "/root/wordpress/wordpress:/var/www/html" \
certbot/certbot renew --quiet --webroot -w /var/www/html
docker-compose start nginx
# 添加定时任务
(crontab -l 2>/dev/null; echo "0 3 * * 1 /bin/bash /root/wordpress/renew_cert.sh >> /var/log/certbot-renew.log 2>&1") | crontab -
インフォメーション データバックアッププログラム
- 毎日のデータベースバックアップ
# 创建备份脚本
vim ~/wordpress/backup_db.sh
#!/bin/bash
BACKUP_DIR="/root/wordpress/backups"
DATE=$(date +%Y%m%d)
docker exec wp_db mysqldump -uroot -p'your_secure_root_password' wordpress > ${BACKUP_DIR}/wordpress_db_${DATE}.sql
find ${BACKUP_DIR} -name "*.sql" -mtime +7 -exec rm {} \;
- タイムバックを設定する
chmod +x ~/wordpress/backup_db.sh
(crontab -l 2>/dev/null; echo "0 2 * * * /bin/bash /root/wordpress/backup_db.sh") | crontab -
認証とメンテナンス
- アクセス認証
- ブラウザアクセス
https://yourdomain.com - 完全なWordPressインストールウィザード
- ブラウザアクセス
- 一般的なメンテナンスコマンド
# 查看实时日志
docker-compose logs -f
# 更新容器
docker-compose pull
docker-compose up -d
# 清理旧镜像
docker image prune -a
XI.トラブルシューティングのご案内
| フェノメナ | ソリューション |
|---|---|
| 502 悪いゲートウェイ | WordPressコンテナが実行されているかどうかを確認してください。docker-compose ps |
| SSL証明書は無効です | 認証証明書パス:ls ~/wordpress/certbot/live/yourdomain.com |
| ファイルアップロード権限 | 導入:chown -R 33:33 ~/wordpress/wordpress |
| データベース接続が失敗しました | MySQL のログをチェック:docker logs wp_db |
最終的な効果
あなたのWordPressのサイトは、次のとおりです。
- フル オートマチック HTTPS サポート
- 毎日のデータベースバックアップ+SSL自動更新
- 最適化された静的リソースキャッシュ
- 完全で、耐久の貯蔵システム
- ワンキーメンテナンスコマンドセット
あなたが受けることができる問題 docker-compose logs [服务名] 詳細なログを表示します。