本博客文章已转移到独立博客,请点击做最好的三三查看全文。
2
13
2013
0

更换服务器对lnmp、eac、xc和mc的折腾记录

以前在HelloHost的凤凰城的空间访问速度越来越不理想了,跑个Discuz都卡掉渣的。空间也略神奇,发邮件时不时要抽一下两下的。偶尔可以sendmail,有时候只能smtp。UC也时不时要抽一下,不过总体来说还是物有所值的,对速度要求不高的,或者有CDN的可以买来试试看。不过我既没有CDN,也没法忍受那样的速度于是就想着换个地方来的。和ivmm(via 米饭维谷)交流了一阵子。后来他推荐给我LocVPS(via LocVPS|无推介链接)家的VPS,说是洛杉矶机房,和大陆线路是直连的。于是回来以后就买下了LocVPS的Xen 512M方案,使用军哥的LNMP自动脚本(via LNMP一键安装包)搭建的LNMP环境。

环境搭建起来以后要考虑的主要还是安全问题。默认的php.ini禁止了一些函数,比如fsocksopen之类的,我给解开了;然后有一些函数没有禁用,比如popen(进程管理,容易被webshell利用执行命令)等,我给禁用了。我的php.ini中的disable_functions大概是这个样子的(为了看清楚,做了换行处理):

disable_functions = passthru,exec,system,chroot,chgrp,chown,
shell_exec,proc_open,proc_get_status,ini_alter,ini_set,
ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,
stream_socket_server,passthru,popen

而另外一些“公认”比较危险的函数,比如opendir,scandir之类的函数,由于有一些特殊需要,就没有禁止了。这样设定起来的参数相对而言比较宽松。

然后就是跨站的问题了。在前一篇文章中提到的LNMP防跨站方法(via LNMP下防跨站、跨目录安全设置,仅支持PHP 5.3.3以上版本)是相当有用的,尤其是在enable_dl=Off和dl被加入disable_functions的时候,要攻破的几率就不很大了。

我对上面文章的一些设定做了一些小小的改动。默认情况下php.ini里是没有限定open_base_dir的。按照上面的方法设定的话,有可能会有某些极端情况(手动编辑vhost让docroot改到其它目录下)导致对目录的open_base_dir限定无效,还在php.ini的[PHP]节加入了这样的设定使它应用到默认的情况下:

open_basedir = ./:/tmp/

这样在添加了虚拟主机或者修改了路径以后,不会带来潜在的安全隐患。这样处理了以后安全性应该是比原来好一些了。上传了一个phpspy做测试,还算符合要求。

最后要考虑的还有效率问题。说道效率问题就想到了eaccelerator,xcache和memcache(当然还有APC等)。我的习惯是安装eac和mc。但是经过ivmm介绍后,我决定把eac抛弃转而使用xc作为编译缓存,数据缓存保留xcache和memcache两种方式(有的程序只支持其一)。可是不管我怎么折腾,eac,xc,mc还有pdo_mysql都一直没有办法安装成功。正在无可奈何之际留意到php-fpm重启时的提示消息:

Starting php-fpm Zend Optimizer requires Zend Engine API version 220060519.
The Zend Engine API version 220090626 which is installed, is newer.
Contact Zend Technologies at http://www.zend.com/ for a later version of Zend Optimizer.

本来一直以为这是和php -v一样输出的一些版本号,没有在意。仔细一看才发现这是一条报错消息。到php.ini里查看,才发现因为从php5.2升级php5.3.21后恢复了备份的php.ini,导致Zend Optimizer所加载的还是老版本的ZendOptimizer.so,而不是php5.3.x应该加载的ZendGuardLoader.so(在php5.3之后,Zend Optimizer升级改名为了Zend Guard Loader并且不完全向下兼容)。找到问题根源以后就好办了,把php.ini中的Zend改为正确的名字,重新加入mc和xc的配置文件,重启php-fpm,打开phpinfo,一切正常。上传xcache的管理文件查看,发现命中率还是很高的,可见Xcache还是比较有效的。

本博客文章已转移到独立博客,查看本文请点击做最好的三三查看全文。
Category: PHP | Tags: php lnmp xcache memcache eaccelerator

Host by is-Programmer.com

Power by Chito 1.3.1 beta

| Theme: Aeros 2.0 by TheBuckmaker.com