当前位置:网站首页 >  教程

面向中小创业团队的可落地可复制轻量级Docker化网站运维方案

时间:2026年06月11日 23:29:06 来源:易频IT社区

一、前置准备

本方案采用2台CentOS 8.5云服务器、1个阿里云公网SLB做基础架构,所有操作以root权限执行,若为普通用户需在命令前加sudo

1.1 服务器资源要求

  • 2台云服务器:2核4G、40G系统盘、CentOS 8.5 64位
  • 阿里云公网SLB:按量计费、带宽5Mbps、2台后端ECS

1.2 环境初始化

两台服务器执行完全相同的初始化命令,关闭防火墙、SELinux、禁用IPv6、设置同步时间、安装基础工具:

```bash 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config setenforce 0 禁用IPv6 echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf sysctl -p 设置同步时间 yum install -y chrony systemctl start chronyd systemctl enable chronyd 安装基础工具 yum install -y wget curl vim net-tools git ```

二、Docker及Docker Compose安装

两台服务器同时操作,采用阿里云镜像源加速安装:

2.1 安装Docker

```bash 卸载旧版本Docker yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 添加阿里云Docker镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装Docker CE最新稳定版 yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 启动Docker并设置开机自启 systemctl start docker systemctl enable docker 配置阿里云Docker镜像加速器 mkdir -p /etc/docker cat > /etc/docker/daemon.json <注意:你的阿里云镜像加速器地址需登录阿里云控制台,搜索“容器镜像服务”→“镜像工具”→“镜像加速器”获取。

2.2 验证Docker Compose

```bash docker compose version ```

三、Web服务容器化部署

本方案以Nginx+WordPress为例,两台服务器部署完全相同的服务:

3.1 创建部署目录

```bash mkdir -p /data/wordpress/{html,mysql,nginx} cd /data/wordpress ```

3.2 编写docker-compose.yml

完整可复制的配置文件:

```yaml version: '3.8' services: mysql: image: mysql:8.0.36 container_name: wordpress-mysql restart: always environment: MYSQL_ROOT_PASSWORD: 你的MySQL root密码 MYSQL_DATABASE: wordpress MYSQL_USER: wordpress_user MYSQL_PASSWORD: 你的MySQL应用密码 volumes: - /data/wordpress/mysql:/var/lib/mysql networks: - wordpress-net wordpress: depends_on: - mysql image: wordpress:6.5.2-php8.2-fpm-alpine container_name: wordpress-php restart: always environment: WORDPRESS_DB_HOST: mysql:3306 WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: wordpress_user WORDPRESS_DB_PASSWORD: 你的MySQL应用密码 volumes: - /data/wordpress/html:/var/www/html networks: - wordpress-net nginx: depends_on: - wordpress image: nginx:1.26-alpine container_name: wordpress-nginx restart: always ports: - "80:80" volumes: - /data/wordpress/html:/var/www/html - /data/wordpress/nginx/wordpress.conf:/etc/nginx/conf.d/default.conf networks: - wordpress-net networks: wordpress-net: ```

注意:请将配置文件中的“你的MySQL root密码”“你的MySQL应用密码”替换为复杂度较高的8位以上密码,避免使用弱密码。

3.3 编写Nginx配置文件

创建并编辑/data/wordpress/nginx/wordpress.conf:

```bash vim /data/wordpress/nginx/wordpress.conf ```

粘贴以下完整可复制的配置:

```nginx server { listen 80; server_name 你的网站域名或SLB公网IP; root /var/www/html; index index.php index.html index.htm; client_max_body_size 100M; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass wordpress:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } ```

注意:请将“你的网站域名或SLB公网IP”替换为实际的内容,之后保存退出vim(按Esc键,输入:wq,按Enter键)。

3.4 启动服务

```bash cd /data/wordpress docker compose up -d 查看服务状态,确保所有容器状态为Up docker compose ps ```

四、阿里云SLB配置(实现高可用)

面向中小创业团队的可落地可复制轻量级Docker化网站运维方案

登录阿里云控制台,配置SLB将流量分发到两台后端ECS的80端口:

4.1 创建监听

  • 选择已创建的SLB实例,点击“监听配置”→“添加监听”
  • 前端协议端口:HTTP 80
  • 调度算法:加权轮询(两台ECS权重均设为100)
  • 会话保持:可选开启,时长设为30分钟
  • 健康检查:开启,协议HTTP,检查端口80,检查路径/index.php,正常状态码200
  • 带宽峰值:按SLB实际购买设置,默认不限制

4.2 添加后端服务器

  • 点击“后端服务器组”→“默认服务器组”→“添加后端服务器”
  • 选择两台已部署WordPress的ECS,设置权重均为100,端口均为80
  • 等待健康检查状态变为“正常”

五、数据同步与故障恢复

两台服务器部署相同服务后,需同步WordPress的html和mysql数据,本方案采用rsync+定时任务实现每日增量同步,主服务器为第一台ECS(记为Server A),备用服务器为第二台ECS(记为Server B):

5.1 Server A配置免密登录Server B

Server A执行:

```bash 生成SSH密钥对,连续按3次Enter键即可 ssh-keygen -t rsa -b 2048 将公钥复制到Server B ssh-copy-id root@Server B的内网IP 验证免密登录,无需输入密码即可进入Server B ssh root@Server B的内网IP ```

5.2 Server A编写同步脚本

创建并编辑/data/wordpress/sync.sh:

```bash vim /data/wordpress/sync.sh ```

粘贴以下完整可复制的脚本:

```bash !/bin/bash 定义同步目录 HTML_DIR="/data/wordpress/html" MYSQL_DIR="/data/wordpress/mysql" 定义Server B的内网IP SERVER_B_IP="Server B的内网IP" 同步WordPress html数据 rsync -avz --delete --exclude '.log' $HTML_DIR root@$SERVER_B_IP:$HTML_DIR 同步WordPress mysql数据前需停止两台服务器的mysql容器 ssh root@$SERVER_B_IP "cd /data/wordpress && docker compose stop mysql" cd /data/wordpress && docker compose stop mysql 同步mysql数据 rsync -avz --delete --exclude '.log' $MYSQL_DIR root@$SERVER_B_IP:$MYSQL_DIR 启动两台服务器的mysql容器 cd /data/wordpress && docker compose start mysql ssh root@$SERVER_B_IP "cd /data/wordpress && docker compose start mysql" ```

注意:请将“Server B的内网IP”替换为实际的内容,之后保存退出vim。

5.3 给脚本添加执行权限并测试

```bash chmod +x /data/wordpress/sync.sh 测试同步脚本 /data/wordpress/sync.sh ```

5.4 设置每日定时同步任务

编辑定时任务:

```bash crontab -e ```

添加以下内容,设置每日凌晨2点同步:

```bash 0 2 /data/wordpress/sync.sh >> /var/log/wordpress-sync.log 2>&1 ```

保存退出vim,查看定时任务是否生效:

```bash crontab -l ```

六、故障验证

验证方法:手动关闭Server A的Docker服务,访问SLB公网IP或网站域名,确认仍能正常打开WordPress:

```bash Server A执行 systemctl stop docker ```

验证完成后重启Server A的Docker服务:

```bash systemctl start docker cd /data/wordpress docker compose up -d ```
标签 运维方案

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图