[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 ...

[Keepalived]Nginx 负载均衡(主备)+Keepalived

Nginx负载均衡器的优点:

实现看弹性化操作的架构,压力增大的时候可以临时添加后端Web服务器;

upstream具有负载均衡能力 (默认使用轮询) ,可以自动判断下面的机器,并且自动踢出不能正常提供服务的机器;

Keepalvied加Nginx监测脚本可保证单个nginx负载均衡器的有效性,避免单点故障

IP地址

nginx( 主LB ):192.168.1 5.132

nginx( 备LB ):192.168.15.133

VIP 地址 :192.168.15.135

Real 的 IP:192.168.1 5.128

Real 2 的 IP:192.168.1 5.130

部署整个环境用到的软件为 :

nginx-1.6.3.tar.gz

prce-8.38.tar.gz

zlib-1.2.8.tar.gz

① 2 台 Web 主机(Ubuntu)上部署环境 , 安装 Nginx+PHP-FPM+MySQL

② 分别在二台 Nginx 负载均衡器上安装 Nginx 及配置

安装GCC编译器等工具:

yum install -y gcc gcc-c++ autoconf automake libtool make openssl openssl-devel

安装 Nginx:

wget http://exim.mirror.fr/pcre/pcre-8.38.tar.gz tar -zxvf pcre-8.38.tar.gz cd pcre-8.38 ./configure make && make install wget http://zlib.net/zlib-1.2.8.tar.gz tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure make && make install wget http://nginx.org/download/nginx-1.6.3.tar.gz tar -zxvf nginx-1.6.3.tar.gz cd nginx-1.6.3/ ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/logs/nginx.pid \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ make && make install ...