Docker wordpress 的定期自动备份

#!/bin/bash
rm -rf /web/import/*
docker exec db sh -c 'exec mysqldump -uroot -ppassword wordpress' > /web/import/idehe.com.sql
tar -cvf /web/import/idehe.com.tar.gz /web/wp
sshpass -p password scp /web/import/idehe.com.tar.gz root@dl.web.com:/mnt/test
sshpass -p password scp /web/import/idehe.com.sql root@dl.web.com:/mnt/test
  • 删除所有现成的备份
  • 执行mysqldump导出数据库命令
  • 打包html
  • scp传输两个文件到远程备份服务器的目录,同时使用工具sshpass 传递密码给scp命令,省事。
  • 全部使用bash脚本,crontab -e 添加每12小时运行一次。
  • * 12 * * * /docker2/wp/2web/back.sh
  • 搞定。

稍微解决一下docker WordPress的文件夹权限问题

今天升级插件发现,发现docker wp 无法创建文件夹,尝试几个办法都不行:

  • 往docker-compose 添加privileged: true 没有效果
  • 往docker-compose 添加user: “33:33” 也就是代表www-data:www-data也不行。。

最后发现 wp的项目文件夹是-v 映射到容器内的,给wp-content 增加权限可以解决,但是不知道安不安全,暂时先这样吧:

chmod -R 777 wp-content
感觉还是不安全,改回来。。
chmod -R 755 wp-content

办法改为,进入wordpress 的container, 执行chown -R www-data:www-data /var/www/html

同时 wp-config 增加了一句:define(‘FS_METHOD’, ‘direct’);

Docker 化 Kodexplorer 的总结

从frantech买了storage, 价格大概是256GB 15 USD,挂载在VPS上面的。开始转移我的KOD到新的VPS上面,同时尝试用docker化运行。

思路是:

  1. 用docker 文件生成customize 的 image,其中有 两个主要的
    1. php7.1,php需要安装扩展插件,通过RUN命令搞定
    2. wyveo/nginx-php-fpm:php71 ,包括写好nginx conf配置的nginx,基本只要打开填入域名就可以了。后期可以考虑只用nginx 标准官方的。
  2. 第一次运行后,docker container cp 命令从镜像拷贝整个/etc/nginx出来,并配置default.conf 中的域名即可。
  3. 生产运行:
    1. -v 镜像kod 目录,
    2. -v 镜像我的block storage 目录/mnt/files 到nginx html里面
    3. -v log
    4. -v nginx 配置文件进去
    5. -p 80:80端口, -d daemon, -t name, 最后填上定制的image 名称
  4. 最后我的dockerfile:
FROM php:7.1-fpm
#FROM php:7.1-fpm-alpine3.4
#FROM nginx:1.17.4-alpine

# install dependencies
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libmcrypt-dev \
        libpng-dev \
        libjpeg-dev \
        libpng-dev 

#install php extension
RUN docker-php-ext-install iconv mcrypt 


#config gd and install
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ 
RUN docker-php-ext-install gd


FROM wyveo/nginx-php-fpm:php71

5. 生产运行的 docker run 命令

docker run \
-d \
-p 80:80 \
--name kod \
--volume "/kod_html/kod":/usr/share/nginx/html \
--volume "/mnt/files":/usr/share/nginx/html/files \
--volume "/kod_html/log":/var/log/nginx/ \
--volume "/kod_html/nginx":/etc/nginx/ \
kod

WP带SSL迁移到Docker一些总结

  1. HTTPS的端口是443, HTTP的端口是80,可以通过命令 netstat -tnl查看
  2. SSL用最基本的certbot就可以了,免费万岁,多捐赠
  3. SSL防止的就是很常见的中间人攻击,知乎用户举例,你出去旅游给亲人寄一个明星片,结果亲人收到,变成斯诺登的求助/威胁信,我在哪哪哪,我有危险,快打钱救我!被插广告也是类似原理。
  4. SSL证书保存在网站目录: – /web/ssl:/etc/letsencrypt
  5. 不需要备份,迁移之后直接renewal就行了
  6. 平时需要renewal, 主要通过两个命令, 都做成bash script就好了。
    • docker-compose run certbot renew 和
    • docker-compose run kill -s SIGHUP webserver 其中: kill -s SIGHUP 会reload 配置
  7. crontab -e 加入这个 bash script 每12小时运行一次。
  8. 主要过程:
    1. 修改docker-compose.yml的配置,增加端口, 数据卷,certbot服务。
    2. 其中:certbot的数据卷镜像用于nginx和cerbot共享,要不要挂载出来,问题都不大。所以用卷,不用目录。
    3. 其中:增加映射端口 443
    4. 第一次测试: 第一次获取证书运行命令用–staging, 之后用–force-renewal
    5. 第一次测试:docker-compose up -d 之后,需要检查 certbot的logs 是否成功获得了SSL证书:
    6. 方式一就是 docker-compose ps certbot 服务的状态要是 exit 0 正常退出,就应该是对了。
    7. 方式二,检查logs, 命令docker-compose logs certbot, 输出logs看看是否正确配置并且下载了证书,congradulations! bla 这些。
    8. nginx 多增加一个配置文件options-ssl-nginx.conf, 镜像到nginx里面。
    9. nginx conf 基本重写,用拷贝的就好了。 最后重启测试。
  9. 所有参考自 https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose 其中 options-ssl-nginx.conf 路径有错,注意更改。


Docker Build WordPress 思路2 – docker compose 迁移

整体的思路:

  • 备份文件过来 放到web 然后wget 就好
  • 备份文件放在新主机 /bk 目录下, 其中.sql 需要镜像进去并且导入到wordpress,这个通过共享路径操作。wp文件解压作为目录直接镜像进去也可以了。
  • git clone 下来配置文件 直接docker-compose up -d 运行启动。

以下的配置文件都可以git保存下来,同时又敏感信息,一定要私有化仓储。

我用的docker-compose.yml 文件:

version: '3.3'

services:
  db:
    image: mysql:5.7
    restart: unless-stopped
    environment:
       MYSQL_DATABASE: wordpress
       
       MYSQL_ROOT_PASSWORD: wordpress
       
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
    volumes: 
      - /web/sql:/var/lib/mysql
      - /web/import:/test

  wordpress:
    depends_on: 
      - db
    image: wordpress:5.1.1-fpm-alpine
    restart: unless-stopped
    environment:
       WORDPRESS_DB_HOST: db:3306 # host
       
       WORDPRESS_DB_NAME: wordpress # name
       
       WORDPRESS_DB_USER: wordpress # user
       WORDPRESS_DB_PASSWORD: wordpress # password
       
    ports:
       - "8000:80"   
    volumes:
      - /web/wp:/var/www/html
      
  webserver:
    depends_on:
      - wordpress
    image: nginx:1.15.12-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./wp:/var/www/html
      - ./nginx-conf:/etc/nginx/conf.d

其中volumes:

  • /web/import:/test 用于从cp文件夹复制备份的.sql到镜像,并且导入数据库, 导入到默认的wordpress数据库
  • /web/sql:/var/lib/mysql 为数据库共享数据卷
  • /web/wp:/var/www/html 为迁移的文件的目录

额外还有一个nginx.conf 位于./nginx-conf, 这个配置文件还没有配置域名的。。

server {
        listen 80;
        listen [::]:80;

        server_name example.com www.example.com;

        index index.php index.html index.htm;

        root /var/www/html;

        location ~ /.well-known/acme-challenge {
                allow all;
                root /var/www/html;
        }

        location / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass wordpress:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
        }

        location ~ /\.ht {
                deny all;
        }

        location = /favicon.ico { 
                log_not_found off; access_log off; 
        }
        location = /robots.txt { 
                log_not_found off; access_log off; allow all; 
        }
        location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
                expires max;
                log_not_found off;
        }
}

最后作为测试机,修改单独的域名,我这里直接用IP地址了。。

  • define(‘WP_HOME’, ‘http://107.172.157.152/’);
  • define(‘WP_SITEURL’, ‘http://107.172.157.152/’);

添加到wp-config.php 即可

Docker Build WordPress 的思路1

1. 首先创建mysql 的 container,通过命令行:

docker run –name wp-mysql -e MYSQL_ROOT_PASSWORD=test -d -p 3306:3306 -v /root/docker-wp/web3:/test mysql:5.7

其中 -v:

挂载主机目录 /root/docker-wp/web3 到 镜像中的/test

然后通过命令mysql 导入数据库

2. 创建wordpress 的container:

docker run -d –name wp –link wp-mysql:mysql -p 80:80 -v /root/docker-wp/web3/wp/wp:/var/www/html wordpress

名称–name wp;–link 链接wp-mysql; -p端口80;-v 挂载主文件目录 /root/docker-wp/web3/wp/wp 到镜像目录 /var/www/html

现在可以启动了,但是wp用的是新的数据库名 wordpress, 修改wp-config.php其中的db name 改成刚才导入的,我的是blogdb

3. 基本可以运行了,下一步是nginx了

吃鸡游戏要点总结篇

  • 四人局,如果队友全活胜率会很高。毕竟可以互相救。
  • 当一个合格的辅助,如果自己不厉害的话,一定要辅助好队友,比如当一个合格的司机开车转移搜刮东西。

找东西。

  • 跳伞到最后下车,飞机一半的时候,基本会跳走75人以上。越偏的地方越安全。
  • 速度一定要快,一定要有车!开车转移,找东西,继续开车转移,尽早进毒圈找好地点躺下。
  • 找东西要围着房子先开一圈,看看房门是不是被开过。司机一定要早点回到车上,计划好路线随时准备开车走人,跑毒。
  • 司机找房子应该同时寻找最高的房子侦察周边。
  • 步枪+冲锋枪标配即可。够用就尽快去躺着。

决赛

  • 决赛就是躺着,听枪声,不到万不得已不动手,躺到最后锁定枪声最后的敌人。
  • 抉择树多草高的制高点。

本人的安卓盒子设置全体验之旅

本人用的是M8S PRO L, 原生系统 android TV 7.5, 很流畅。

几个要点,不需要什么世界路由器。

首先是设置连接账户, 需要用到间接电脑上网,建议用SR桥接连接。

进入可上网状态以后单独油管还是不能用,于是装 sr

其次是可以接外接鼠标和键盘的,我的是蓝牙,即插即用的,千万不要拘泥于遥控器。。。。。。。输入SR信息的时候玩死。。

然后是可以外接USB往里面拷APP的。

国产系列的用什么 当贝TV APP市场就可以了。需要先在play store 里面下载ES浏览器,用这个安装当贝这些APK。国外的还需要安装SSSRRR这种东西。

Netflix账户可推荐,我在买SR账户一起买的,6元一个月。爽歪歪了。

香港保险的总结

对比国产傻逼洋保险

  • 假设傻逼洋固定保额50万,而HK保险每年分红,收益高,重疾险大约二十年就可以回本了,三十年翻翻,生病保额相当于到100万了。试想一下,50年你的50万还能日狗么。
  • 傻逼洋忽悠国内客户,不懂或者知识不全面,无法退保,或者只能意外伤害身故才能退全部保险金,而HK保可任何时候退保或者身故全退。相当于同时也可以所谓储蓄
  • 保的范围少,轻症保3次,重症1次,而HK是轻症不限直到你的保额上限,重症中的三大最常见病心脏病,癌症,HK 分别多次额外保障。

香港保险的优势

  • 世界第三大金融中心,意味着什么呢,投资渠道多,收益高!
  • 有美元保单,美元规避风险能力超过黄金,世界第一认可的。同时对抗国内最大的泡沫 – 狗币!
  • 保险推荐,按规模/营收 安X 1000亿 -> 保X 500亿-> 友X 250亿。
  • 比较推荐保X,储存赔偿资金高,评级高,分红承诺九成给客户,167年财报全公开,拥有瀚亚投资,四地上市接受监管。

买什么保险?

  • 重疾险 (有储蓄功能,带分红收益2-3%)
  • 医疗保险(有储蓄功能,带分红)
  • 储蓄保险 约6-8%每年收益,国内连宣传最高也是不超过4%,保×多款产品20年的平均收益都是6.9左右。保证真正的可以富国三代。参考这篇文章。 前提是300万也不是小数目啊。

重疾险

  • 一旦确诊即可按保额全陪。人生应该的第一份保险。
  • 保终身,意味着什么呢。一般死于癌症的人约1/4. 80岁的时候癌症发病率大约是30岁的时候的十倍。其他还有中风,心脏病发病率也很高。三种疾病加起来占到重症的九成以上。
  • 而多死于癌症的转移,这也就是为什么需要多重保障!

 

 

 

 

 

 

储蓄保险

  • 不算做财产,无需交税,遗产税。不受牛逼国法律的限制。

医疗保险

  • 消费型保险,消费多少赔多少。这个只能一年一年的保。
  • 国内社保只提供最低医疗保障,还有各种限制,最主要不能保进口药。以下附加一些问题答案来自于知乎问题,香港医疗水平怎么样。

android 模拟器 比较好用的

总结一下,因为一个游戏,需要经常挂机,偶尔看看。而且是国外的,那么就是部落战争了。偶尔玩玩。

从最近游戏更新以后之前用的MUMU就用不了了,闪退,当然以国内的技术实力是解决不了的。

  • MUMU 稳定版 闪退
  • MUMU什么优先版,连Google都下载不了。他的稳定版可以修改WIFI的代理设置,可以用梯子, 这个却用不了,懒得折腾了。
  • android x86, 原生的,就是慢,太慢了。。
  • bluestack 不支持梯子,好像是不支持socks5的原因。需要设置VPN或者全局FQ的办法,类似proxifer,太麻烦,而且proxifer收费。
  • genymontion 最后就是这个了,开始以为要收费,原来只要注册就行了。下载下来再直接选择要下载的机型就行了,安装开机。
    • 要注意的就是右上角安装Gapps,就有Google家电动工具多件套了。
    • 还有就是梯子,下载机型的时候在软件里面设置。而连接Google的时候,和mumu一样,设置wifi的连接代理。就行了!
    • 最好下载更加快的机型,不然速度会慢。。
    • 更新: 可以设置每个机型,比如选择nexus 5之后, 内核选择1G,内存1024,分辨率尽量小600*1024*150DPI,挂机就好啦