在路由器上架设WordPress
我的路由器是 Belkin 7231-4P 64M 版,通过 USB 口挂 1G 的 Kingston U 盘,U 盘有个 128M 的 swap 分区,剩下的空间格式化成 ext3,挂在 /opt 目录下做扩展存储,固件刷的是 OpenWRT 官方 Kamikaze 8.09.1 r16278。
安装 WordPress 的基本要求是 PHP5 + MySQL,在我的 7231 上跑 MySQL 显然是不现实的,不过刚好可以利用下另一台下载神器 — 128M 内存的 MSS,在 MSS 上安装 MySQL 也不是件容易的事情,以后有空可以专门介绍,总之经过一番折腾后可以跑 MySQL 4.1 了。
接下来在 7231 上安装 lighttpd + php,所有包都安装在 /opt 目录下,下列包是必须要安装的,通过 opkg install 安装还是很方便的,有些相关依赖的 lib 包会自动安装。
lighttpd
lighttpd-mod-fastcgi
lighttpd-mod-rewrite
php5
php5-fastcgi
php5-mod-mysql
php5-mod-pcre
php5-mod-xml
配置 lighttpd 支持 php 很容易,在 web 根目录下新建 phpinfo.php 测试文件,一切正常。这里有一点说明,因为我没有启用 OpenWRT 的 web 界面,所以 lighttpd 可以直接监听在 80 端口,否则可能还需要处理端口问题。
解析去问题就来了,细看 phpinfo.php 的显示页面,发现 MySQL 模块居然没有启用,在 php.ini 中加入 error_log 后,在 log 中发现类似下面的输出
PHP Warning: PHP Startup: Unable to load dynamic library ‘/opt/usr/lib/php/mysql.so’ – File not found in Unknown on line 0
这下郁闷了,/opt/usr/lib/php 目录下明明有 mysql.so 这个文件,怎么就说 File not found 呢?
Google 了好久都没找到满意的答案,大部分是说 OpenWRT 的这个 php5-mod-mysql 包编译有问题,也有说没有打 cross compile 补丁的,想想也有可能,干脆自己动手编译个 mysql.so 吧。
下载 kamikaze 8.09.1 源码包,安装 php5 开始编译,中间又经历无数错误,总算得到自己编译的 mysql.so,上传到 7231 上,问题依旧。想到 php5-mod-mysql 这个包是依赖 libmysqlclient 包的,干脆把 libmysqlclient.so.15 也换成自己编译的吧,反正已经编译好了。可是替换 libmysqlclient.so.15.0.0 后还是老问题。
忽然想起来,所有的包都安装在 /opt 目录下,不是系统默认路径,会不会是有些 lib 的符号链接出了问题。在 /usr/lib 目录下建立 /opt/usr/lib/libmysqlclient.so.15.0.0 的符号链接 libmysqlclient.so.15,居然成功启用了 php5 的 mysql 模块,顿时内牛满面。
有了 mysql.so 的经验,其它 php 模块的问题轻松解决,不过安装 WordPress 还是遇到了 30 秒超时的小问题,修改 php.ini 里的 max_execution_time 搞定,到这里可以告一段落了。
来源:御风飞扬 原文:在路由器上架设WordPress
呵呵,好玩