好好活就是有意义的事,有意义的事就是好好活
使用docker-compose来搭建WordPress (二)
使用docker-compose来搭建WordPress (二)

使用docker-compose来搭建WordPress (二)

前言

前几天, 出了一篇文章:

这个博文, 主要是参考了, docker-compose的官方文档中的教程! 比较的简陋.

这几天, 为了契合我的需求, 进行了改进, 主要是添加了Nginx的反向代理, 添加了https的配置等等.

开始搭建

下载安装docker和docker-compose

大家最好参考官网的方法, 只需要一个脚本就可以了!

创建一个目录

这是为了, 我们把所有的内容都放到一起.

mkdir wordpress && cd wordpress && touch docker-compose.yml && mkdir volumes

创建yaml文件

yaml文件, 将指导如何创建容器:

version: "3.9"
services:
  db:
    image: mysql
    volumes:
      - ./volumes/database:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: kingdo
      MYSQL_PASSWORD: password
  phpmyadmin:
    image: phpmyadmin
    depends_on:
      - db
    ports:
     - "8081:80"
    environment:
      PMA_HOST: db
  wordpress:
    depends_on:
      - db
    image: wordpress
    volumes:
      - ./volumes/html:/var/www/html
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress
  nginx:
    depends_on:
      - wordpress
    image: nginx
    volumes:
      - ./volumes/nginx/html:/usr/share/nginx/html
      - ./volumes/nginx/conf.d:/etc/nginx/conf.d
    links:
      - wordpress
    ports:
      - "80:80"
      - "443:443"
    restart: always

在这个yaml中, 我们启动了四个容器:

  1. mysql, 数据库
  2. phpmyadmin, 数据库管理软件
  3. wordpress, 网站站点
  4. nginx, 反向代理

配置nginx

我们需要在./volumes/nginx/conf.d中准备两个文件:

一个是htts的证书文件, 我是在腾讯云中申请的, 过程并不复杂, 就不展开了!

一个是Nginx的配置文件, 我的配置是:

server {
        listen       80;
        listen  [::]:80;
        server_name  kingdo.club;
        client_max_body_size 1024M;
        sendfile on;
        location / {
                return 301 https://$host$request_uri;
        }
        location ^~ /xsfw/ {
                root   /usr/share/nginx/html;
                add_header content-type "text/html";
                index  index.html index.htm;
        }
}
server {
        listen 443 ssl;
        server_tokens off;
        keepalive_timeout 5;
        root /usr/share/nginx/html;
        index index.html;
        server_name kingdo.club;
        ssl_certificate /etc/nginx/conf.d/certs/kingdo.club_bundle.crt;
        ssl_certificate_key /etc/nginx/conf.d/certs/kingdo.club.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        client_max_body_size 1024M;
        sendfile on;

        location / {
                proxy_pass http://wordpress;
                proxy_http_version    1.1;
                proxy_cache_bypass    $http_upgrade;

                proxy_set_header Upgrade            $http_upgrade;
                proxy_set_header Connection         "upgrade";
                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;
                proxy_set_header X-Forwarded-Host    $host;
                proxy_set_header X-Forwarded-Port    $server_port;
        }
        location = /MP_verify_V6hDvkp9FnFJLodc.txt {
                root   /usr/share/nginx/html;
        }
        location ^~ /xsfw/ {
                root   /usr/share/nginx/html;
                add_header content-type "text/html";
                index  index.html index.htm;
        }

        location ^~ /resources/ {
                root   /usr/share/nginx/html;
                index  index.html index.htm;
        }

        location ^~ /BigXXY/ {
                root   /usr/share/nginx/html;
                index  index.html index.htm;
        }

        location ^~ /3D-Photo-Album/ {
                root   /usr/share/nginx/html;
                index  index.html index.htm;
        }
}

这里面有一写比较重要的配置. 首先我们定义了两个server, 分别监听80和443端口, 表示http和tpps.

http中, 除uri以/xsfw/ 开头之外, 全部转发到https中! 因为这个/xsfw/ 是我给女朋友写的, 而这个必须是http的, 因此我保留了这个配置!

https中, 前面一大部分属于配置ssl, 需要将路径修改称自己的! 其他的不需要动, 也可以不需要懂, 反正是我抄的!

后面两个配置是增大nginx的上传文件大小限制, 这个非常重要, 不然你上传大文件的时候, 会失败, 因为我们是通过nginx进行反向代理, 因此我们需要同时修改nginx和worepress的上传文件限制.

后面的location /是方向代理的部分, 将流量转发到wordpress中!

再后面的几个location就是静态资源了.

启动容器

docker-compose up -d

-d表示在后台运行.

这个时候就会启动两个容器. 这样就完成了, 我们只需要访问https://IP就能进入wordpress的界面. 访问https://IP:8081进入phpmydamin的管理界面

修改文件大小

我们除去在nginx中, 修改了上传文件的大小配置, 还需要修改wordpress的, 这个修改比较容易, 只需要修改wordpress根目录中的.htaccess即可:

修改站点的地址

迁移

一劳永逸, 你所有的数据都会保存在我们指定的文件中, 你只需要将文件放到任意一个服务器上, 然后再执行一次docker-compose, 就可以恢复你的网站, 这样的话, 我们就可以轻松的实现迁移和备份.

但是, 迁移之后, 需要注意, 需要保证Wordpress根目录的所属用户以及用户组保持不变, 否则安装插件, 主题等都会出现错误!

后记

我的网站目前就是这样搭建起来的:

2条评论

  1. Pingback:使用用doocckeerr–coompose来搭建WordPress – MyNotes

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注