一些坑爹的事 = =

前段时间嘛一直在折腾 WordPress

有天看到某舰娘群里萌萌的 KB 说要上 PHP 7 ,方才想起我的 PHP 5.5.9 了 = =。在提及了我的版本号以后, KB 聚聚推荐我升级到 PHP 5.6。

升级 PHP


关于这事,本来我都打算去 clone 源码自编译了,这时候群里的 HJC 聚聚提醒说 Ubuntu 下应该优先找找 PPA。

Google 了一番过后,发现这玩意可以免去自编译的痛苦。于是在此记录一下加入 PHP 5.6 PPA 的步骤。

sudo apt-get purge php* //卸载原有的 PHP

sudo apt-get update

sudo apt-get install python-software-properties //必要依赖

sudo add-apt-repository ppa:ondrej/php5-5.6

sudo apt-get update && sudo apt-get upgrade

sudo apt-get install php5

好了,经过以上步骤过后, PHP 就升级到 5.6 了。

重新配置 uWSGI


升级完 PHP 过来,紧接着我发现另一个更加重要的问题,那就是我的神奇 PHP 后端 uWSGI 启动失败了 = = Orz

一直以来都是用 supervisor 启动的我决定手动debug。

在看到error log以后,发现是 php-plugin.ini 调用的依赖没了 = =

Ubuntu 源自带的东西比较旧了,这插件也是基于 PHP 5.5.9 编译的 = = Orz

好吧,找到问题所在,接下来就要想办法解决了 = =

我们先来升级一下 uWSGI ,步骤如下

sudo apt-get purge uwsgi*
sudo apt-get install build-essential python
sudo apt-get install python-dev
sudo apt-get install python-pip
sudo pip install uwsgi

这样我们就会在萌萌的 /usr/local/bin/ 里头看到一个 uwsgi(隐患)

接下来是编译并且安装 PHP 处理插件

uwsgi --build-plugin https://github.com/unbit/uwsgi-phpsgi

没错就这么简单,然而我当时却绕了不少的弯子 – –

配置 Supervisor 启动 uWSGI


这玩意可是坑了我好久好久,但是我不打算把思考过程发出来了 = =

直接上配置方法

写入 /etc/supervisor/conf.d/uwsgi.conf:

[program:uwsgi-php]
directory = /usr/local/bin/
command=uwsgi
--plugin php
--master
--socket :3030
--processes 6
--php-allowed-ext .php
--php-allowed-ext .inc
stopsignal=QUIT
user=www-data
autostart=true
autorestart=true
stdout_logfile=/home/XXX/error.log  //XXX代表你的用户名
redirect_stderr=true

最后依次运行

sudo service nginx restart
sudo service supervisor restart

 

替换 WordPress 默认的 Gravatar 服务器地址

今天在尝试优化 WordPress 打开速度的时候,发现总是有图片是没法加载的。后来才发现 WordPress 默认使用 Gravatar 头像,而 Gravatar 在国内的情况是大家都懂的,经常出现无法加载的情况。Google 一番过后终于找到解决方法,同时也有了此文。

解决思路


Gravatar 无法访问的原因不在于 Gravatar 服务器,是你国功夫网和谐了人家,查证后发现只是污染了 HTTP ,而 HTTPS 仍是存活的,所以解决思路是使用 Gravatar 的 HTTPS 线路,或者使用其他 Gravatar 反代 CDN。

实现方法


源代码来自 http://www.dmeng.net/wordpress-replace-gravatar-host.html ,感谢原作者的无私奉献。

此处我将源代码中的 secure.gravatar.com 替换成由通天塔提供的 Gravatar 反代 CDN

把代码添加到主题目录下的 functions.php 文件最后即可

function lawrence_get_https_avatar($avatar){
$avatar = str_replace(array("www.gravatar.com", "0.gravatar.com", "1.gravatar.com", "2.gravatar.com", "secure.gravatar.com"), "gravatar.loli.net", $avatar);
return $avatar;
}
add_filter('get_avatar', 'lawrence_get_https_avatar');