WordPress迁移到docker教程

WordPress迁移到docker教程

去年的差不多这时候买了个服务器把我的博客从github上搬到了这里用上了wordpress,当时也没考虑多就直接在安装在服务器上,后来经人提醒最好是使用docker安装wordpress,一来是日后容易迁移,二来是wordpress被日了也不会影响到服务器。拖了大半年时间,寒假在家没事就鼓捣一下吧。

备份

首先是wordpress的备份,这里使用了一款插件 All-in-One WP Migration

image-20220210170501007

选项默认直接导出到文件即可,这样就完成了备份操作得到一个wpress文件。

image-20220210170645555

docker部署wordpress

接下来就直接在docker部署wordpress,需要docker-compose,没有安装的自行百度。docker已经有wordpress的官方镜像供我们直接使用,因此还需要一个 mysql 数据库即可。

这里推荐在用户目录下建一个wordpress文件夹用来存储文件,首先新建一个 docker-compose.yml 文件:

version: '3.3'

services:
  db:
    image: mysql:5.7
    container_name: db_example
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: test     # 随便起
      MYSQL_DATABASE: test       # 这三行设定需要和下面一致
      MYSQL_USER: test
      MYSQL_PASSWORD: test

  wp:
    depends_on:
      - db
    image: wordpress:latest
    container_name: example_site
    ports:
      - "80:80"
      - "443:443"      # 可以根据需要改成其他端口,但下文的实例将使用1234
    restart: always
    links:
      - db:mysql
    environment:
      WORDPRESS_DB_NAME: test
      WORDPRESS_DB_USER: test
      WORDPRESS_DB_PASSWORD: test
    volumes:
     - ./src:/var/www/html  
     - ./ssl:/ssl
volumes:
    db_data:
  • ports 指令这里需要注意提前把443端口也开出来,为后面的HTTPS协议准备
  • volumes 指令是将容器中的文件夹内容映射到本机上,如 ./src:/var/www/html就是将容器的 /var/www/html 路径下的文件映射到本机的 ./src 中,当我们需要修改容器中的内容时就可以直接在本机上修改,省去了进入容器的步骤,十分方便。
  • link 指令将 mysql 容器和 WordPress 联系起来,这样 WordPress 实例就可以访问数据库了。请注意,虽然我们用 Docker-compose 可以协调多个 Docker 容器之间的合作,但每个容器之间仍然是互相独立的。也就是说,除非是你把 Docker 容器暴露给外部世界(通过 portvolumes 等指令映射),它们是完全“绝缘”的。当然我们也可以给 MySQL 实例创建端口映射(一些教程也是这么做的),但在我们这个范例中是完全没必要的。毕竟,端口开得越多一个,安全威胁就多一分。

然后执行:

$ docker-compose up -d
  • -d 是后台静默运行

等待docker拉取镜像和开启容器,完成后请注意wordpress容器有没有把443端口也映射出来,访问 IP:80就应该能看到wordpress的5分钟安装界面了。

快速安装一遍然后使用 All-in-One WP Migration 插件进行还原。这里会遇到上传文件大小限制在2M以下的问题,根据插件的提示,我们应该修改wordpress容器的 .htaccess 文件,添加以下内容:

php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

由于建立镜像的时候我们已经把容器的 /var/www/html 路径下的文件映射到本机的 ./src 中,因此这里我们就能直接享受这种好处,直接修改 ./src下的 .htaccess 文件即可。

还原后就能看到原来熟悉的网站啦!!

部署HTTPS

接下来就是部署HTTPS来加强网站安全性问题了

开启ssl模块

首先进入wordpress容器,加载apache的ssl模块,修改证书和私钥路径。

  • 进入容器
$ docker exec -it example_site bash
  • 开启ssl模块
# a2enmod ssl

编辑容器中的ssl文件

vim /etc/apache2/sites-available/default-ssl.conf

找到SSLCertificateFile和SSLCertificateKeyFile这两个配置项,改成把私钥和证书挂载进容器里面后的路径,这里需要提前把证书和密钥放到本机的 /ssl/ 目录下。

image-20220210173636789

在容器中或许不能使用vi/vim,可以将文件从容器中拷贝出来改,再拷贝进去

  • 导出到本机
$ docker cp example_site:/etc/apache2/sites-available/default-ssl.conf default-ssl.conf
  • 修改后再导回去
$ docker cp default-ssl.conf example_site:/etc/apache2/sites-available/default-ssl.conf 
  • 完成后重启容器即可
$ docker restart example_site

这时候访问 https://域名 就可以看到安全的小锁了。

强制http请求转到https

最后一步是将HTTP协议的请求跳转到HTTPS协议,编辑 /etc/apache2/sites-available/000-default.conf,找到<VirtualHost *:80> </VirtualHost>标签中增加下面的配置:

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]
image-20220210175209016

这里同样是用不了 vim,因此还是用docker cp复制出来在放回去的方法,修改后保存重启容器就大功告成了。

参考资料

Docker安装WordPress并添加https访问

将 WordPress 整体迁移到 Docker 容器

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇