Linux/CentOS服务器下docker/compose安装wordpress并指定数据路径(可导入原迁移数据)

2021-12-16 509点热度 0人点赞 0条评论

前言

最近重装了一下自己的VPS,发现原来的方式搭建一个wordpress还是挺费劲的,需要安装PHP环境、配置php-fpm、安装MySQL等等;然后想到使用docker会不会简单一些,实践下来确实要方便很多。下面记录下

实现

首先安装Docker-ce

详见:https://blog.terrynow.com/2021/12/15/centos-install-latest-docker-ce-simple-steps/

  • 安装Docker-compose

因为我们要安装的是wordpress,还需要有mysql环境,升级可能还需要phpmyadmin(可选),所以利用Docker-compose可以达到部署多个docker应用,然后这些应用之前还能互相访问(例如wordpress和phpmyadmin可以访问mysql)

# 安装 docker-compose
yum install docker-compose

# 查看版本
docker-compose version
  • 编写/opt/docker-compose.wordpress.yml

以上路径可以随意,内容如下:

version: '3.3'

services:
  db:
   image: mysql:5.7
   volumes:
     - /var/lib/mysql:/var/lib/mysql
   ports:
     - "3306:3306"
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: somewordpress
     MYSQL_DATABASE: wordpress
     MYSQL_USER: wordpress
     MYSQL_PASSWORD: wordpress

  wordpress:
   depends_on:
     - db
   image: wordpress:latest
   volumes:
     - /var/www/wordpress/wp-content:/var/www/html/wp-content
   ports:
     - "8000:80"
   restart: always
   environment:
     WORDPRESS_DB_HOST: db:3306
     WORDPRESS_DB_USER: wordpress
     WORDPRESS_DB_PASSWORD: wordpress

volumes:
  dbdata:
  wp-content:

以上把mysql的数据路径,映射到了本机的/var/lib/mysql,并且把wordpress的wp-content的路径,映射到了/var/www/wordpress/wp-content,如果你之前有需要迁移的wordpress,可以把内容放到/var/www/wordpress/wp-content,或者你自己修改docker-compose.wordpress.yml里的路径(:前面的部分)

同样主机的 /var/lib/mysql 下,如果你有待迁移的mysql数据,也可以直接复制过来(当然也可以用mysql的dump工具dump下来再导入进去)

数据库的root密码设置成了somewordpress,wordpress的用户名和密码都是wordpress,可以根据自己的需要修改上面的配置。

强烈建议把这些需要映射的路径,都映射到主机上,方便后续的备份和维护
另外需要注意的是上面MySQL服务(3306端口)默认是防火墙全部打开的,有安全问题的话,需要想办法防火墙屏蔽掉对外访问,例如port映射的时候,可以指定host:- "127.0.0.1:3306:3306",或者查看其他防火墙的设置:

https://blog.terrynow.com/2022/01/03/docker-container-port-iptables-firewall-settings/

对外访问的端口我映射成了8000,如果你的wordpress直接非https对外,那么可以直接映射成端口80,我是因为需要再用nginx做一次https访问,nginx配置如下:

location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

如果还需要phpmyadmin,只需要在/opt/docker-compose.wordpress.yml 增加如下:

phpmyadmin:
  depends_on:
    - db
  image: phpmyadmin/phpmyadmin
  restart: always
  ports:
    - '8080:80'
  environment:
    PMA_HOST: db
    MYSQL_ROOT_PASSWORD: somewordpress
  • 安装/卸载
# 安装workpress和其他附属服务
docker-compose -f /opt/docker-compose.wordpress.yml up -d

# docker ps下看是否两个container都起来了
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9fecbf5a816b wordpress:latest "docker-entrypoint.s…" 27 hours ago Up 18 hours 0.0.0.0:8000->80/tcp, :::8000->80/tcp opt_wordpress_1
e8e0c8f0e5cf mysql:5.7 "docker-entrypoint.s…" 27 hours ago Up 18 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp opt_db_1

# 停止并删除服务(数据路径如果是映射的,不影响数据的)
docker-compose -f /opt/docker-compose.wordpress.yml down
  • 导入数据(可选)
# 例如把wordpress的数据库导出
mysql -h192.168.1.2 --databases wordpress -uwordpress -p < /path/to/wordpress.sql 

# 查看docker的mysql的containId
docker ps 
# 导入数据
docker exec -i containId mysql -uroot wordpress < /path/to/wordpress.sql;
  • 访问URL

http://ip:8000

 

以上就是我用docker安装wordpress的过程,比起之前的非docker方式的,省去很多配置,很方便。

如果遇到导入数据后无法上传附件问题,详见:https://blog.terrynow.com/2021/12/19/docker-wordpress-can-not-upload-attach-file-solved/

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论