ARM Ubuntu 22.04 Docker WordPress 完整安装和自启动配置


完整安装流程

第1步:挂载大容量硬盘



# 查看硬盘
sudo fdisk -l

# 挂载大容量硬盘(假设是/dev/sda1)
sudo mkdir -p /mnt/big_disk
sudo mount /dev/sda1 /mnt/big_disk

# 设置开机自动挂载
sudo blkid /dev/sda1  # 获取UUID
echo "UUID=你的硬盘UUID /mnt/big_disk ext4 defaults,nofail 0 0" | sudo tee -a /etc/fstab

 第2步:安装Docker和Docker Compose

# 更新系统
sudo apt update

# 安装Docker
sudo apt install -y docker.io

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-aarch64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker

第3步:配置Docker使用大容量硬盘

# 创建Docker数据目录
sudo mkdir -p /mnt/big_disk/docker

# 配置Docker数据存储位置
sudo tee /etc/docker/daemon.json << 'EOF'
{
  "data-root": "/mnt/big_disk/docker"
}
EOF

# 重启Docker
sudo systemctl restart docker

第4步:创建WordPress项目

# 创建项目目录
sudo mkdir -p /mnt/big_disk/wordpress
sudo chown -R $USER:$USER /mnt/big_disk/wordpress
cd /mnt/big_disk/wordpress

# 创建docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  db:
    image: mysql:8.0
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ChangeMeRoot123!
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: WordPressDBPass456!
    volumes:
      - ./mysql_data:/var/lib/mysql
    command: 
      - --default-authentication-plugin=mysql_native_password

  wordpress:
    image: wordpress:latest
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: WordPressDBPass456!
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wordpress_data:/var/www/html

networks:
  default:
    driver: bridge
EOF

# 创建数据目录
mkdir -p mysql_data wordpress_data
chmod 775 mysql_data wordpress_data

第5步:启动WordPress

# 拉取镜像(如果网络慢可跳过,会自动拉取)
docker pull mysql:8.0
docker pull wordpress:latest

# 启动服务
docker-compose up -d

# 验证
sleep 20
docker-compose ps
echo "访问: http://$(hostname -I | awk '{print $1}')"

第6步:设置开机自启动(重要!)

方法A:使用systemd服务(推荐)

# 创建systemd服务文件
sudo tee /etc/systemd/system/wordpress-docker.service << 'EOF'
[Unit]
Description=WordPress Docker Compose
Requires=docker.service
After=docker.service network.target

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/mnt/big_disk/wordpress
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
User=root

[Install]
WantedBy=multi-user.target
EOF

# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable wordpress-docker
sudo systemctl start wordpress-docker

# 检查状态
sudo systemctl status wordpress-docker

第7步:创建管理脚本

cat > wp-manager.sh << 'EOF'
#!/bin/bash
cd /mnt/big_disk/wordpress

case "$1" in
    start)
        docker-compose up -d
        echo "WordPress已启动"
        ;;
    stop)
        docker-compose down
        echo "WordPress已停止"
        ;;
    restart)
        docker-compose restart
        echo "WordPress已重启"
        ;;
    status)
        echo "容器状态:"
        docker-compose ps
        echo ""
        echo "服务状态:"
        curl -s -o /dev/null -w "HTTP: %{http_code}\n" http://localhost 2>/dev/null || echo "无法连接"
        ;;
    logs)
        docker-compose logs -f
        ;;
    backup)
        DATE=\$(date +%Y%m%d_%H%M%S)
        mkdir -p backups
        docker-compose exec -T db mysqldump -u wordpress -pWordPressDBPass456! wordpress > backups/wordpress_db_\$DATE.sql
        tar -czf backups/wordpress_files_\$DATE.tar.gz wordpress_data
        echo "备份完成: backups/\$DATE.tar.gz"
        ;;
    *)
        echo "用法: \$0 {start|stop|restart|status|logs|backup}"
        exit 1
        ;;
esac
EOF

chmod +x wp-manager.sh

 第8步:创建自动修复脚本(防止启动失败) 没用上

cat > auto-repair.sh << 'EOF'
#!/bin/bash
cd /mnt/big_disk/wordpress

# 检查服务是否运行
if ! docker-compose ps | grep -q "Up"; then
    echo "检测到服务未运行,正在修复..."
    
    # 停止并清理
    docker-compose down 2>/dev/null
    
    # 修复数据目录权限
    sudo chown -R 999:999 mysql_data 2>/dev/null
    sudo chown -R 1000:1000 wordpress_data 2>/dev/null
    
    # 重启服务
    docker-compose up -d
    
    # 检查结果
    sleep 10
    if docker-compose ps | grep -q "Up"; then
        echo "✅ 服务修复成功"
    else
        echo "❌ 服务修复失败,查看日志:"
        docker-compose logs --tail=20
    fi
else
    echo "✅ 服务运行正常"
fi
EOF

chmod +x auto-repair.sh

# 添加定时检查(每5分钟检查一次)
(crontab -l 2>/dev/null; echo "*/5 * * * * cd /mnt/big_disk/wordpress && ./auto-repair.sh >> /mnt/big_disk/wordpress/auto-repair.log 2>&1") | crontab -

第10步:最终配置检查清单 没用上

cat > check-install.sh << 'EOF'
#!/bin/bash
echo "=== WordPress安装验证 ==="

echo "1. 硬盘挂载:"
df -h /mnt/big_disk

echo -e "\n2. Docker状态:"
sudo systemctl status docker --no-pager | grep Active

echo -e "\n3. Docker Compose:"
docker-compose --version

echo -e "\n4. 自启动服务:"
sudo systemctl is-enabled wordpress-docker 2>/dev/null && echo "✅ systemd服务已启用" || echo "❌ systemd服务未启用"

echo -e "\n5. 容器状态:"
cd /mnt/big_disk/wordpress 2>/dev/null && docker-compose ps || echo "未找到项目目录"

echo -e "\n6. 网站访问:"
IP=$(hostname -I | awk '{print $1}' 2>/dev/null)
[ -n "$IP" ] && echo "访问地址: http://$IP" || echo "无法获取IP地址"

echo -e "\n7. 管理命令:"
echo "启动: ./wp-manager.sh start"
echo "停止: ./wp-manager.sh stop"
echo "状态: ./wp-manager.sh status"
echo "日志: ./wp-manager.sh logs"
EOF

chmod +x check-install.sh

一键安装脚本(完整版) 没用上

cat > install-wordpress.sh << 'EOF'
#!/bin/bash
set -e

echo "=== WordPress一键安装脚本 ==="

# 1. 挂载硬盘
echo "1. 挂载大容量硬盘..."
sudo mkdir -p /mnt/big_disk
sudo mount /dev/sda1 /mnt/big_disk 2>/dev/null || echo "挂载失败或已挂载"

# 2. 安装Docker
echo "2. 安装Docker..."
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker

# 3. 安装Docker Compose
echo "3. 安装Docker Compose..."
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-aarch64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 4. 配置Docker存储
echo "4. 配置Docker..."
sudo mkdir -p /mnt/big_disk/docker
sudo tee /etc/docker/daemon.json << 'DOCKER'
{
  "data-root": "/mnt/big_disk/docker"
}
DOCKER
sudo systemctl restart docker

# 5. 创建WordPress项目
echo "5. 创建WordPress项目..."
sudo mkdir -p /mnt/big_disk/wordpress
sudo chown -R $USER:$USER /mnt/big_disk/wordpress
cd /mnt/big_disk/wordpress

cat > docker-compose.yml << 'COMPOSE'
version: '3.8'
services:
  db:
    image: mysql:8.0
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress123
    volumes:
      - ./mysql_data:/var/lib/mysql
    command: 
      - --default-authentication-plugin=mysql_native_password

  wordpress:
    image: wordpress:latest
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress123
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wordpress_data:/var/www/html
COMPOSE

mkdir -p mysql_data wordpress_data
chmod 775 mysql_data wordpress_data

# 6. 启动服务
echo "6. 启动WordPress..."
docker-compose up -d

# 7. 设置开机自启动
echo "7. 设置开机自启动..."
sudo tee /etc/systemd/system/wordpress-docker.service << 'SERVICE'
[Unit]
Description=WordPress Docker Compose
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/mnt/big_disk/wordpress
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
User=root

[Install]
WantedBy=multi-user.target
SERVICE

sudo systemctl daemon-reload
sudo systemctl enable wordpress-docker

# 8. 创建管理脚本
echo "8. 创建管理工具..."
cat > wp-manager.sh << 'MANAGER'
#!/bin/bash
cd /mnt/big_disk/wordpress
case "\$1" in
    start) docker-compose up -d ;;
    stop) docker-compose down ;;
    restart) docker-compose restart ;;
    status) docker-compose ps ;;
    logs) docker-compose logs -f ;;
    *) echo "用法: \$0 {start|stop|restart|status|logs}" ;;
esac
MANAGER
chmod +x wp-manager.sh

# 9. 完成
echo "等待服务启动..."
sleep 30

echo -e "\n🎉 WordPress安装完成!"
echo "访问地址: http://\$(hostname -I | awk '{print \$1}')"
echo "管理命令: cd /mnt/big_disk/wordpress && ./wp-manager.sh"
echo "开机自启动: 已启用"
EOF

chmod +x install-wordpress.sh

精简命令,执行这些就够了!

 挂载硬盘

sudo mount /dev/sda1 /mnt/big_disk

安装Docker和Docker Compose

sudo apt update && sudo apt install -y docker.io
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-aarch64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

创建WordPress项目

cd /mnt/big_disk
sudo mkdir -p wordpress docker
sudo chown -R $USER:$USER wordpress
cd wordpress
# 创建docker-compose.yml(使用上面的内容)
mkdir -p mysql_data wordpress_data

设置开机自启动

sudo tee /etc/systemd/system/wordpress-docker.service << 'EOF'
[Unit]
Description=WordPress Docker Compose
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/mnt/big_disk/wordpress
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
User=root

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable wordpress-docker

启动服务

docker-compose up -d

验证

docker-compose ps
echo "访问: http://$(hostname -I | awk '{print $1}')"


2026年1月7日

访问和管理Docker中的MySQL数据库
3.1 进入MySQL容器
# 方法1:使用docker-compose
cd /mnt/big_disk/wordpress
docker-compose exec db bash

# 进入容器后连接MySQL
mysql -u wordpress -pWordPressDBPass456! wordpress
3.2 或者直接连接
# 方法2:直接执行MySQL命令
docker-compose exec db mysql -u wordpress -pWordPressDBPass456! wordpress

# 方法3:使用docker exec
docker exec -it wordpress-db-1 mysql -u wordpress -pWordPressDBPass456! wordpress
3.3 查看数据库信息
# 在MySQL命令行中
SHOW DATABASES;
USE wordpress;
SHOW TABLES;
SELECT COUNT(*) FROM wp_posts;  # 查看文章数量

2026年4月18日

配置https:支持u.kkjs.cc需要修改wordpress目录下的config.php文件

主要解决wordpress配置成功了https,但是部分css样式还是链接http的情况

ubuntu下查找config.php文件

find /mnt/big_disk/wordpress/wordpress_data -name "config.php"

编辑 wp-config.php:在 <?php 这一行的下面,添加以下两行代码。

<?php

define('FORCE_SSL_ADMIN', true);
$_SERVER['HTTPS'] = 'on';

/**
 * WordPress基础配置文件。
 */

发表评论