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