1 安装
1.1 blog-compose.yml
version: '3.6'
services:
mysql:
image: mysql:5
ports:
- "3306:3306"
volumes:
- "mysql-data:/var/lib/mysql"
- "mysql-conf:/etc/mysql"
# - "mysql-log:/var/log/mysql"
environment:
MYSQL_ROOT_PASSWORD: 123456
# networks:
# - blognet
deploy:
placement:
constraints:
- node.role == manager
wordpress:
image: wordpress
ports:
- "80:80"
volumes:
- "wordpress:/var/www/html"
environment:
WORDPRESS_DB_PASSWORD: 123456
depends_on:
- mysql
# networks:
# - blognet
deploy:
placement:
constraints:
- node.role == manager
volumes:
wordpress:
mysql-data:
mysql-conf:
# mysql-log:
# 经测试 swarm 方式部署 wordpress 和 mysql,不需要设置 networks,因为Docker在单台host上默认使用的就是 bridge network。
#networks:
# blognet:
# driver: overlay
# attachable: true
下面开始部署服务:
$ docker stack deploy -c /home/ec2-user/blog-compose.yml blog
服务起来后,直接在浏览器中输入:http://192.168.1.220:80 就可以访问wordpress页面了。
1.2 备份
对于备份,我们只需要备份 volumns 下的 wordpress和 mysql数据目录就可以了。下面提供个 linux shell 备份脚本,仅仅是打包所有文件。
blog_backup.sh
#!/bin/bash
curdate=$(date +%Y%m%d%H%M)
backupDir=/home/ec2-user/blog-backup
# 注意:CentOS7安装7zip时,必须先安装 epel 源,否则无资源
#yum install epel-release
#yum install p7zip p7zip-plugins unzip
# 解压命令
#unzip xxx.zip
#将 attachments 目录下的内容打包到 attachments.zip,这里 -r 表示递归压缩子目录下所有文件,必须加上。(直接用 centos自带的 tar打包如果打包的文件名中有中文,打包后的名称是乱码)
sudo 7za a ${backupDir}/blog_${curdate}.zip /var/lib/docker/volumes/blog_*
sudo chown ec2-user:ec2-user ${backupDir}/blog_${curdate}.zip
1.3 还原
对于还原,我”瞎忙活”了一天,经测试其实备份的mysql和wordpress文件没任何问题,弄清楚几点几点就OK:
- 有时候执行
swarm blog-compose.yml启动时,mysql服务若启动的慢,wordpress服务会先起来,导致连不上mysql,结果网站无法访问。查看日志docker service logs -f xxx可以看到这点。如果一开始就执行docker service ls,也可以看到是wordpress服务先起来的,mysql等一会儿才起来。有的朋友可能会问,我们不是在compose文件里设置了depends_on吗?没错,但我想说,这个设置仅针对docker容器层面的,管不到docker容器里的应用。解决办法是执行docker container rm -f xxx,以便让wordpress自动再重启。 - 有时候mysql、wordpress容器的启动都没问题,但是chrome就是打不开,需要清理下缓存,我就遇到过多次了。
- 有时候清理chrome缓存都不管用,老是重定向,把8080 端口吃掉了(即改用80了)。解决办法是:url后面加 “wp-admin/”就好了,如:http://192.168.1.230:8000/wp-admin/
2 插件与配置
2.1 主题
- GeneratePress
- StartWP
2.2 文章设置
- 字体格式:默认
- 一、二、三级标题字体分别是:24px、20px、16px
2.3 插件
| Akismet Anti-Spam | 过滤垃圾评论,中招过所以一定要用,可以配置免费使用 |
| Limit Login Attempts Reloaded | 登录次数限制 |
| WordPress Captcha Plugin by Captcha Bank | 验证码、黑白名单,实际测试图片出不来目前用了他的算术验证 |
| Google Captcha (reCAPTCHA) by BestWebSoft | 防垃圾邮件等,我用v2版本可以,支持注册内网IP,但一直报错”You have entered an incorrect reCAPTCHA value”所以没用 |
| Yoast SEO | SEO 优化 |
| Table of Contents Plus | 目录索引 |
| Enlighter | 常用主题 MooTools、Classic、Atomic |
| Advanced Ads | 管理和优化广告 |
| TinyMCE Advanced | 对Wordpress自带编辑器TinyMCE的增强插件,但是其插件设置中添加了支持Markdown的选项 |
| WP Statistics | 分析和统计工具 |
| WP Editor.md | Markdown文档编辑器 |
3 使用域名
3.1 使用自己购买的域名

3.2 使用花生壳免费提供的动态域名
在centos7上安装好花生壳的linux版后,我发现不能使用之前已有的账号登录,也就不能使用之前固定的花生壳域名。花生壳会随机给你生成一个SN码,用这个SN码来登录花生壳后台,并设置内网穿透。这种方式重启花生壳服务,域名可能会发生变化,这不是我想要的,因此我们放弃使用这种免费的方式。
花生壳 3.0 for Linux 相关安装使用文档:http://service.oray.com/question/4287.html
linux版花生壳安装好后,出来下面信息,然后用SN码和默认密码从官网登录:
+--------------------------------------------------------+ | Oray PeanutHull Linux 3.0 | +--------------------------------------------------------+ | SN: ORAYc0e4e8a01ce8 Default password: admin | +--------------------------------------------------------+ | Usage: phddns(start|status|stop|restart|reset|version) | +--------------------------------------------------------+ | Remote Management Address http://b.oray.com | +--------------------------------------------------------+
4 更换新域名、替换URL的方法
4.1 第一步:修改MySql里的URL
格式:UPDATE '表名' SET '字段' = REPLACE( '字段', '待替换内容', '替换值' );
下面是更新脚本例子:
#由于我是映射到域名上的,使用了80端口,因此下面的更新可以不在乎端口,只要更新地址。 UPDATE wp_options SET option_value = REPLACE(option_value,'http://192.168.1.202','http://blog.blueappleblog.com'); # 文章中的图片、附件都是绝对路径,迁移后会不起作用,这里更新后就没问题了 UPDATE wp_posts SET post_content = REPLACE(post_content,'http://192.168.1.202','http://blog.blueappleblog.com'); UPDATE wp_posts SET guid = REPLACE(guid,'http://192.168.1.202','http://blog.blueappleblog.com'); UPDATE wp_posts SET pinged = REPLACE(pinged,'http://192.168.1.202','http://blog.blueappleblog.com'); UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url,'http://192.168.1.202','http://blog.blueappleblog.com');
说明:
表 wp_posts 里面的 post_content (文章内容)
表 wp_posts 里面的guid(WordPress默认链接结构)
表 wp_posts 里面的pinged (ping内容)
表 wp_comments 里面的comment_author_url (留言作者URL地址 )
4.2 第二步:修改 wp-config.php
在 wp-config.php中,添加下面内容:
define('RELOCATE',true);
登录后台,将自动更新 SITEURL,因此只要手动修改 HOME 地址即可。具体位置“设置->常规”。保存成功后一定要删除上面添加的内容。
5 在WPS上部署遇到的问题
5.1 安装插件,需要填写 FTP 信息
解决办法:编辑 wp-config.php,在 “define(‘WP_DEBUG’, false);” 的下面添加一行
define(‘FS_METHOD’, “direct”);
5.2 解决了FTP的问题,接着又跳出“无法创建目录”的错误
解决办法:直接去 wordpress 根目录添加所有权限 chmod -R 777 blog_wordpres