使用All in One WP Migration插件为WordPress快速搬家

安装步骤:

  • 以管理员身份登陆您的旧的Wordpress站点。
  • 从左侧菜单中选择“插件>添加新的”。
  • 在右上角的搜索字段中搜索“All in one WP Migration”,然后在从ServMask中找到正确的插件时单击“立即安装”。
  • 单击“启用”以激活插件。
  • 找到“All-in-One WP Migration”菜单(在左侧栏中的“Tool”下),然后选择“Export”。
  • 单击“Export To”,然后选择“File”选项。
  • 插件运行后,单击弹出窗口中的按钮下载文件。 下载的文件将以扩展名.wpress结尾。 更改此扩展名将导致迁移失败,因此请保持原样。
  • 在您的新WordPress安装上重复步骤1-4。 (简而言之,请确保您在接收站点上安装了插件。)
  • 在新的WordPress站点上,选择“All in One WP Migration”菜单下的“Import”。
  • 将从原始站点下载的.wpress文件拖到拖放窗口中以开始导入。
  • 文件导入完成后,单击“Continue”。 由于这是一个新安装,因此您无需担心被覆盖的任何内容。
  • 在左侧菜单中,选择“设置>永久链接”,然后单击“保存更改”。 无需编辑任何默认的永久链接结构信息。
  • 现在请退出仪表板,然后重新登录。不要忘记,您已导入旧网站的所有数据,其中包括您的用户名和旧密码。
  • 完成而已! 现在去检查您的新网站,确保一切正常。
  • ...

    [WP-CLI]使用 WP-CLI 高效便捷化管理 WordPress

    介绍

    WP-CLI 是一个强大的 PHP 命令行拓展,可以在不使用 WP后台 的情况下,仅通过命令行就可以完成 WP、主题、插件的安装、升级、使用等等,非常的强势,并且安装插件都是以最佳的姿势进行,如果一些插件需要课外进行什么复杂的设置,那么使用 WP-CLI 就可以便捷的完成安装,并且规避新手随意设置权限带来的安全风险。

    因为 WP-CLI 的运行要求较高,所以一般只存在于高级虚拟主机和服务器中。

    环境

    • Unix-like 环境(OS X, Linux,FreeBSD,Cygwin)
    • PHP 5.3.29 或更新
    • WordPress 3.7 或更新

    安装

    curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
    php wp-cli.phar --info
    chmod +x wp-cli.phar
    sudo mv wp-cli.phar /usr/local/bin/wp
    wp --info
    

    可选

    由于 WP-CLI 是为了安全的 WP 操作而生的,所以如果直接使用 root 账户操作,会提示不安全。所以我们要创建一个账户

    useradd wp-cli
    // 'wp-cli' 是换成你想要的账户名称,然后输入两次密码即可
    

    然后我们通过 'wp-cli' 登入 SSH,再使用 WP 命令进行操作即可。 不过需要确保新建账户对相关 WP 目录拥有操作权限。 一般来说 /home/wp-cli/ 目录是肯定有权限的。后续需要 root 权限的操作,使用 sudo 即可。

    注: 如果不想新建账户,那么我们在命令后加上 --allow-root 即可。
    例如:

    wp --allow-root core download --version=4.6.1
    ...

    Let’s Encrypt 免费通配型证书申请

    主要步骤:

    1. 安装 acme.sh
    2. 生成证书
    3. copy 证书到 nginx/apache 或者其他服务
    4. 更新证书
    5. 更新 acme.sh
    6. 出错怎么办, 如何调试

    下面详细介绍.

    1. 安装 acme.sh

    安装很简单, 一个命令:

    curl  https://get.acme.sh | sh
    

    普通用户和 root 用户都可以安装使用.
    安装过程进行了以下几步:

    1. 把 acme.sh 安装到你的 home 目录下:
    ~/.acme.sh/
    

    并创建 一个 bash 的 alias, 方便你的使用: acme.sh=~/.acme.sh/acme.sh

    2). 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.

    更高级的安装选项请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-install

    安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

    2. 生成证书

    acme.sh 实现了 acme 协议支持的所有验证协议.
    一般有两种方式验证: http 和 dns 验证.

    1. http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了.

    acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/
    

    只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.

    如果你用的 apache服务器, acme.sh 还可以智能的从 apache的配置中自动完成验证, 你不需要指定网站根目录:

    acme.sh --issue  -d mydomain.com   --apache
    

    如果你用的 nginx服务器, 或者反代, acme.sh 还可以智能的从 nginx的配置中自动完成验证, 你不需要指定网站根目录:

    acme.sh --issue  -d mydomain.com   --nginx
    

    注意, 无论是 apache 还是 nginx 模式, acme.sh在完成验证之后, 会恢复到之前的状态, 都不会私自更改你本身的配置. 好处是你不用担心配置被搞坏, 也有一个缺点, 你需要自己配置 ssl 的配置, 否则只能成功生成证书, 你的网站还是无法访问https. 但是为了安全, 你还是自己手动改配置吧.

    如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:

    acme.sh  --issue -d mydomain.com   --standalone
    

    更高级的用法请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert

    2. dns 方式, 在域名上添加一条 txt 解析记录, 验证域名所有权.

    这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证.
    坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

    acme.sh --issue --dns -d mydomain.com
    ...

    [Redis/PHP]Redis实现动态页面缓存提高网站访问速度

    Redis是一个开源、支持网络、基于内存、键值对存储数据库,使用ANSI C编写。Redis提供了持久化存储,重启了服务器后Redis依赖快照进行持久化,即使服务器刚开机启动也不会导致负载陡增。Redis缓存比较适合大流量的Wordpress。

    1、安装Redis

    [[email protected] ~]# cd /tmp/
    [[email protected] /tmp]# wget -c `curl -s http://redis.io/download | awk -F”‘” ‘/2.8.*.tar.gz/{print $4}’`
    [[email protected] /tmp]# tar xf 2.8.*.tar.gz
    [[email protected] /tmp]# cd redis-2.8.*
    [[email protected] /tmp/redis-2.8.20]# if [ `getconf WORD_BIT` == 32 ] && [ `getconf LONG_BIT` == 32 ];then sed -i ‘1i\CFLAGS= -march=i686’ src/Makefile && sed -i ‘[email protected]^OPT=.*@OPT=-O2 [email protected]’ src/.make-settings;fi
    [[email protected] /tmp/redis-2.8.20]# make
    [[email protected] /tmp/redis-2.8.20]# mkdir -p /usr/local/redis/{bin,etc,var}
    [[email protected] /tmp/redis-2.8.20]# cp -af src/{redis-benchmark,redis-check-aof,redis-check-dump,redis-cli,redis-sentinel,redis-server} /usr/local/redis/bin/
    [[email protected] /tmp/redis-2.8.20]# cp -a redis.conf /usr/local/redis/etc/
    [[email protected] /tmp/redis-2.8.21]# echo “export PATH=/usr/local/redis/bin:\$PATH” > /etc/profile.d/redis2.8.sh
    [[email protected] /tmp/redis-2.8.21]# . /etc/profile.d/redis2.8.sh
    [[email protected] /tmp/redis-2.8.20]# sed -i ‘[email protected]*@pidfile /var/run/[email protected]’ /usr/local/redis/etc/redis.conf
    [[email protected] /tmp/redis-2.8.20]# sed -i “[email protected]*@logfile /usr/local/redis/var/[email protected]” /usr/local/redis/etc/redis.conf
    [[email protected] /tmp/redis-2.8.20]# sed -i “[email protected]^dir.*@dir /usr/local/redis/[email protected]” /usr/local/redis/etc/redis.conf
    [[email protected] /tmp/redis-2.8.20]# sed -i ‘[email protected] [email protected] [email protected]’ /usr/local/redis/etc/redis.conf
    [[email protected] /tmp/redis-2.8.20]# [ -z “`grep ^maxmemory /usr/local/redis/etc/redis.conf`” ] && sed -i ‘[email protected] <bytes>@maxmemory <bytes>\nmaxmemory [email protected]’ /usr/local/redis/etc/redis.conf
    [[email protected] /tmp/redis-2.8.20]# wget http://www.dwhd.org/script/Redis-server-init-CentOS -O /etc/init.d/redis-server
    [[email protected] /tmp/redis-2.8.20]# chmod +x /etc/init.d/redis-server
    [[email protected] /tmp/redis-2.8.20]# chkconfig –add redis-server
    [[email protected] /tmp/redis-2.8.20]# chkconfig redis-server on
    [[email protected] /tmp/redis-2.8.20]# chkconfig –list redis-server
    redis-server    0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
    [[email protected] /tmp/redis-2.8.21]# service redis-server start
    正在启动 redis-server:                                    [确定]
    [[email protected] /tmp/redis-2.8.20]# ss -tnlp | grep 6379
    LISTEN     0      511                       *:6379                     *:*      users:((“redis-server”,48900,5))
    LISTEN     0      511                      :::6379                    :::*      users:((“redis-server”,48900,4))
    [[email protected] /tmp/redis-2.8.20]# redis-cli
    127.0.0.1:6379> info
    # Server
    redis_version:2.8.21
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:6b4aad3fc4312fc
    redis_mode:standalone
    os:Linux 2.6.32-504.12.2.el6.x86_64 x86_64
    arch_bits:64
    multiplexing_api:epoll
    gcc_version:4.4.7
    process_id:13457
    run_id:dbece81080ec83837419cf7f157ed12772e52e65
    tcp_port:6379
    uptime_in_seconds:2412
    uptime_in_days:0
    hz:10
    lru_clock:7507826
    config_file:/usr/local/redis/etc/redis.conf

    # Clients
    connected_clients:1
    client_longest_output_list:0
    client_biggest_input_buf:0
    blocked_clients:0

    # Memory
    used_memory:1216912
    used_memory_human:1.16M
    used_memory_rss:4407296
    used_memory_peak:1216912
    used_memory_peak_human:1.16M
    used_memory_lua:36864
    mem_fragmentation_ratio:3.62
    mem_allocator:jemalloc-3.6.0

    # Persistence
    loading:0
    rdb_changes_since_last_save:2
    rdb_bgsave_in_progress:0
    rdb_last_save_time:1433570558
    rdb_last_bgsave_status:ok
    rdb_last_bgsave_time_sec:0
    rdb_current_bgsave_time_sec:-1
    aof_enabled:0
    aof_rewrite_in_progress:0
    aof_rewrite_scheduled:0
    aof_last_rewrite_time_sec:-1
    aof_current_rewrite_time_sec:-1
    aof_last_bgrewrite_status:ok
    aof_last_write_status:ok

    # Stats
    total_connections_received:59
    total_commands_processed:92
    instantaneous_ops_per_sec:0
    total_net_input_bytes:437180
    total_net_output_bytes:1030842
    instantaneous_input_kbps:0.00
    instantaneous_output_kbps:0.00
    rejected_connections:0
    sync_full:0
    sync_partial_ok:0
    sync_partial_err:0
    expired_keys:0
    evicted_keys:0
    keyspace_hits:57
    keyspace_misses:7
    pubsub_channels:0
    pubsub_patterns:0
    latest_fork_usec:212

    # Replication
    role:master
    connected_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0

    # CPU
    used_cpu_sys:0.85
    used_cpu_user:0.36
    used_cpu_sys_children:0.00
    used_cpu_user_children:0.00

    # Keyspace
    db0:keys=1,expires=0,avg_ttl=0
    127.0.0.1:6379>
    [[email protected] /tmp/redis-2.8.21]#

    2、用Predis.php作为Redis的PHP客户端

    1
    2
    3
    4
    5
    #进入你的wordpress根目录
    [[email protected] /tmp/redis-2.8.20]# cd /home/wwwroot/www.dwhd.org/
    [[email protected]]# wget http://www.dwhd.org/script/phpredis -O predis.php
    [[email protected]]# chmod www.www predis.php

    3、安装Redis前端缓存的PHP脚本

    1
    2
    3

    [[email protected]]# mv index.php index.php_backup_`date +%F`
    [[email protected]n100]# wget http://www.dwhd.org/script/index-with-redis -O index.php
    [[email protected]]# chown www.www index.php

    4、Wordpress删除Redis页面缓存的方法
    1)、删除某一个页面的缓存:发表评论、按下F5刷新、在URL后面加上?r=y回车。
    2)、删除整站页面缓存:登录到Wordpress后台,在任意URL后面加上?r=y回车。
    3)、更新文章时自动刷新首页缓存:在你的Wordpress的Function.php中加入以下代码

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    // 更新文章时自动刷新首页缓存 redis
    function newPostRefresh() {
            $temp=file_get_contents(“http://hhvm.linuxwang.com/?r=y”);//网址换成自己的
    }
    add_action(‘publish_post’, ‘newPostRefresh’);
    add_action(‘edit_post’, ‘newPostRefresh’);
    add_action(‘delete_post’, ‘newPostRefresh’);
    add_action(‘comment_post’, ‘newPostRefresh’);
    add_action(‘edit_comment’, ‘newPostRefresh’);
    add_action(‘delete_comment’, ‘newPostRefresh’);
    add_action(‘wp_set_comment_status’, ‘newPostRefresh’);
    add_action(‘switch_theme’, ‘newPostRefresh’);

    设置首页定时刷新

    1

    [[email protected]]# echo “*/5 * * * * `which curl` http://hhvm.linuxwang.com/?r=y  >/dev/null 2>&1” /var/spool/cron/root