讓你的WordPress小站搭上WebP的快車

Google家開源的WebP圖形編碼格式出來已經好幾年了,瀏覽器支援率現在也是非常高的了(現代瀏覽器就Safari不支持)。相比於常用的JPEG和PNG,使用WebP可以節省高達80%的空間(在今天行動網路的時代,這意味着更快的載入)。

當然了,還是不想拋棄堅守Internet Explorer和蘋果家Safari的用戶,所以我們需要一個聰明的外掛程式,在支援WebP的瀏覽器上使用WebP圖形,不支援的話則提供JPEG或者PNG檔案。隨便Google到的一個頗爲流行的免費開源程式WebP Express就是這輛帶我們上路的快車。

在WordPress後臺Plugins頁面搜尋下載好WebP Express並啓用。如果你使用的是Apache,它開箱即可用。如果你使用的是nginx,則需要按照說明稍微配置一下。這裏用的是nginx,而我選的是簡單的CDN Friendly選項,然後批量將全部圖形檔案轉換成了WebP(原始檔案是不會動的)。Alter HTML那個選項一定要開啓不然什麼也不會發生……

用此前的日本兩京遊記做了一下對比,未啓用掛件的時候頁面大小爲1.8MB,加載用時4.32秒。啓用掛件後頁面大小減少到了1.4MB,加載用時3.52秒。對比提升效果還算明顯,當然了,那篇文章裏面照片很多,一般的文章頁面效果估計甚微。

WireGuard初體驗

工作和生活很忙的緣故,一直沒有好好維護Shadowsocks的Qt/C++分支,最近下定決心索性聲明好放棄維護了。偶然看到關於WireGuard的新聞,宣稱是一款現代、快速、安全的VPN工具,今天總算抽出來一點時間來試驗一番,下面來分享一下WireGuard之初體驗。

首先,在伺服器和客戶端安裝好WireGuard,官方文檔寫的很詳細。

然後在伺服器和客戶端都創建好一套密鑰文件,命令如下:

Continue reading “WireGuard初體驗”

修復WordPress更新出現的Inconsistent Permission錯誤

最近部落格的WordPress更新頻頻提示出現錯誤,log就簡單地說一句inconsistent permission error,就這樣在網路上搜尋了一會兒才發現,同樣的錯誤提示很可能是有不同的underlying issue,比如可能文件與目錄的權限有被人為修改過(文件必須是644,而目錄必須是755,可以用find指令批量更改),又或者可能是owner和group不一致(chown -R批量更改)。而發生在我的VPS的卻是第三種情況,SELinux導致某些文件無法寫入……

甄別此情況很簡單,在WordPress目錄下執行ls -Z(注意是大寫Z)查看一下WordPress目錄和其內文件,比如被我強制用unzip解壓最新的WordPress替換過的目錄就顯示:

drwxr-xr-x. nginx nginx unconfined_u:object_r:user_home_t:s0 wordpress

我們關心的是第四列SELinux的標籤設定,這樣的權限是不夠的,在終端執行下面這條語句把WordPress目錄和其內容遞歸性地更新好便解決了問題!

chcon -R -t httpd_sys_rw_content_t wordpress

知其然還需知其所以然,繼續Google了一下,在Red Hat的文檔庫找到配置Apache HTTP Server的權限管理文章,裡面有提到httpd_sys_rw_content_t標籤(以及其他標籤),任何有此標籤的文件都可以被有httpd_sys_script_exec_t標籤的腳本修改,但不能被其他腳本修改。

libQtShadowsocks项目介绍和备忘

shadowsocks应该是继各种VPN和GoAgent之后,目前最受欢迎的代理协议了。VPN不灵活,而且能够被防火墙识别特征,能够轻松封锁,GoAgent则面临可用IP越来越少的困境。懒得介绍原项目了,不知道shadowsocks的自己去Google查吧。

libQtShadowsocks就像名字暗示的一样,是一个Library(库),用Qt(C++)写的,实现了shadowsocks的各项功能。

Continue reading “libQtShadowsocks项目介绍和备忘”

即日起提供Google学术搜索反向代理服务

Google在大陆是彻底沦陷了,虽然鄙人马上就肉翻了,但是不能置广大同胞于水深火热之中啊,特别是目前无可替代的Google学术搜索(有关部门也真是弱智,居然一口气直接封*.google.com……)。并不是每个人都会爬墙出去的,所以临走前送一个小福利,让大家能顺利访问Google学术搜索,助力科研!

先上普罗大众小白都能看懂的使用指南,技术部分在文章后半段。

Continue reading “即日起提供Google学术搜索反向代理服务”

IPv6开启转发并保持自动获取PPP提供的IPv6地址

标题想了好久……请不要吐槽晦涩难懂

先说一下应用场景:

  • 一台Linux-based box(ARM开发板如ODROID U3、Raspberry Pi,或者OpenWRT神马的)当作Host + Router,通过有线网卡连接交换机Hub作为局域网网关和服务器,再通过PPPoE拨号连接外网(PPPoE能自动配置并获取IPv6地址)。
  • 局域网PC配置好本地的IPv6地址透过局域网网关(上面那台Linux Box)连接外网,要求能以IPv4和IPv6协议访问Internet,但是获得的IPv4和IPv6地址都是内网地址

Continue reading “IPv6开启转发并保持自动获取PPP提供的IPv6地址”

让Shadowsocks服务器同时监听IPv4和IPv6端口

中国电信的天翼校园宽带客户端简直令人发指,现在封锁越发厉害了,已经无法使用系统自带的PPPoE拨号了(所以刚买几天用来作服务器的ODROID-U3暂时下岗了……)。还好,学校有免费的IPv6网络,速度虽然不快,但是至少免费不限流量。正好我的VPS有IPv6地址,于是寻思着怎么利用VPS每月500G的流量来供我上网……一开始看了L2TP、OpenVPN等VPN的办法,发现让它们支持IPv6很麻烦。转念一想,不是还有Shadowsocks嘛!!!Shadowsocks支持IPv4/IPv6协议,但是一开始发现连上去显示套接字连接失败。

Continue reading “让Shadowsocks服务器同时监听IPv4和IPv6端口”

Nginx监听IPv6地址端口的正确操作方法

先在终端下输入以下指令,看看输出结果有没有–with-ipv6,没有的话就需要重新编译带有ipv6支持的nginx了。

nginx -V

编译nginx就不在这里说了,下面讲一下正确地配置nginx让其同时监听IPv4和IPv6的端口(包括http协议的80和https协议的443端口),同时介绍一下只监听IPv6和特定IPv6地址的方法。

Continue reading “Nginx监听IPv6地址端口的正确操作方法”

Apache服务器启用SPDY协议加快传输本博客内容

Apache确实占用资源比较多……嗯,不过博客访问量也不大,还能应付过来。今天看到SPDY的已获得Chrome、Firefox、Opera、IE等众多浏览器的支持,于是萌生念头让博客的https访问使用SPDY协议(不用担心,不支持的会自动fallback到普通https协议)!嗯,没错,SPDY协议是一个全新的加密层传输协议,你的站点得先有SSL证书并能顺利通过普通https访问上!

Apache、Nginx都支持SPDY协议,Apache是通过mod_spdy这个模块来实现的,但是博客使用的是WordPress(PHP内容),需要禁用mod_php改用mod_fcgid来确保PHP的线程安全。下面分享一下做法。

Continue reading “Apache服务器启用SPDY协议加快传输本博客内容”

MySQL数据引擎InnoDB和MyISAM互相转换

MySQL(或者社区开源fork的MariaDB)5.5以上支持InnoDB引擎,并将其作为默认数据库引擎。InnoDB带来很多改进,但是对系统资源占用明显增加,对于还在128MB~512MB内存VPS挂WordPress博客的筒子们来说,InnoDB是不合适的,还是得换回MyISAM这批老马!

Continue reading “MySQL数据引擎InnoDB和MyISAM互相转换”