星期一, 四月 19, 2010, 10:16 PM
有了php,一个加速器也是需要的。
所谓加速器,就是通过缓存方式把已编译好php字节码放在内存里,以便提高程序的执行、响应效率.
总之,速度是绝对上去了。
我选择的是开源的eAccelerator,而不是广泛使用的Zend Optimizer.
首先,下载最新的svn snapshots 版本,http://snapshots.eaccelerator.net/
解压,进入目录.
运行 phpize,生成安装文件.
我的configure:
$ ./configure --prefix=/usr/local/eaccel --bindir=/usr/local/bin --sbindir=/usr/local/sbin --sysconfdir=/etc/sysconfig --enable-eaccelerator
更多参数见:http://www.eaccelerator.net/wiki/CompileConfiguration
如果系统里安装有多个php版本,可能要指定php-config 路径
检查依赖没有问题,之后 make && make install.OK了
eAccelerator安装成功.
然后,打开源码目录下的 eaccelerator.ini,把里面的内容通通复制到 php.ini 里面.
稍加编辑,如
; eAccelerator extension.
extension="eaccelerator.so"
(作为php 扩展安装)
;zend_extension="/usr/lib/php/modules/eaccelerator.so"
(作为Zend 扩展安装)
;zend_extension_ts="/usr/lib/php/modules/eaccelerator.so"
(作为Zend 扩展安装,适用于 php 的线程安全版)
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
更多设置见:http://www.eaccelerator.net/wiki/Settings
保存之后,确保 php 对缓存目录/tmp/eaccelerator 有读写权限后.
chmod 0777 /tmp/eaccelerator
重启php-cgi 进程 或者 web server,即可启用加速器了.
运行 php -v 查看版本,
有 "by eAccelerator" 字样说明启用成功.
如:
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
更多介绍见:http://www.eaccelerator.net/wiki/InstallFromSource
[ ] ( 2328 次浏览 ) 永久链接 ( 3 / 2497 )
编译安装 PHP 5.3.2 + php-fpm 通过
星期一, 四月 19, 2010, 04:12 AM
真的是好事成双。
刚刚写完上一篇文章,就收到了PHP Bug Database的提醒,我提交的问题被解决了
原来是因为 我既启用了 php 内置的 mysqli,又自己编译了mysqli扩展.
导致php 遭遇Segmentation fault....
以后这个问题要注意呀,呵呵
为什么要用php-fpm ,因为fastcgi已经很久不更新了.
而且从 php 5.3.x 分支开始,php-fpm 已经成为了php内部项目了。
可见其前景无限.
下载 php 5.3.2源码包,解压,进入目录.
检出php-fpm 源码:
svn co http://svn.php.net/repository/php/php-src/trunk/sapi/fpm sapi/fpm
并重新生成configure文件,
./buildconf --force
我的configure:
$ ./configure --prefix=/usr/local/php --bindir=/usr/local/bin --sbindir=/usr/local/sbin --sysconfdir=/etc/sysconfig --enable-embed=static --enable-fpm --enable-debug --enable-safe-mode --enable-sigchild --enable-magic-quotes --enable-fd-setsize=100 --enable-calendar --enable-dba=shared --enable-exif --enable-ftp --enable-gd-native-ttf --enable-intl --enable-mbstring --enable-pcntl --disable-phar --enable-shmop --enable-soap --enable-sockets --enable-wddx --enable-zip --enable-zend-multibyte --with-libxml-dir --with-libevent-dir=/usr/local/libevent --with-fpm-user=http --with-fpm-group=web --with-config-file-path=/etc --with-exec-dir=/usr/local/bin --with-openssl --with-kerberos --with-pcre-regex --with-zlib --with-bz2 --with-curl --with-gd --with-mhash --with-imap --with-imap-ssl --with-ldap --with-ldap-sasl --with-mcrypt --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-mysqli=/usr/local/bin/mysql_config --with-pdo-mysql=/usr/local/bin/mysql_config --with-xmlrpc --without-pear
检查依赖,报错:
configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing
yum install libc-client-devel.i386
解决.
接下了,make && make install.
如果编译通过,make 报错,make: *** [ext/phar/phar.php] Error 139
那是因为没有禁用掉 phar.
这是个php已知的bug(http://bugs.php.net/bug.php?id=51216),只有等下一个版本修复了.
安装OK后,复制源码包下sapi/fpm/php-fpm.conf 到 /etc/sysconfig/ 下,
稍加编辑,即可
运行 php-fpm,成功跑起来.
[ ] ( 2626 次浏览 ) 永久链接 ( 3 / 2379 )
星期一, 四月 19, 2010, 03:25 AM
这几天搞php搞得头昏,已经把遇到的问题提交到了 http://bugs.php.net/,等回答了
故决定先把php放一放。
于是便寻思着去为即将问世的web server 做一个缓存系统.
因为我的VPS流量是1TB,说大不大,说小也不小。所以搞个缓存机制也是可行的。
于是便瞄准了squid-cache 这个工具.
下载最新的3.1.1版本,解压,进入源码包
我的configure:
It was created by Squid Web Proxy configure 3.1.1, which was
generated by GNU Autoconf 2.62. Invocation command line was
$ ./configure --prefix=/usr/local/squid --bindir=/usr/local/bin --sbindir=/usr/local/sbin --sysconfdir=/etc/sysconfig --enable-icmp --enable-delay-pools --enable-esi --enable-icap-client --enable-ecap --enable-cachemgr-hostname=PowerPC --enable-arp-acl --enable-ssl --enable-cache-digests --enable-follow-x-forwarded-for --enable-stacktraces --with-default-user=cache
可能会要求安装iptables,不过那台linux系统里没有呢?
有个安装cppunit的警告,只要不需要 make check,该依赖不是必须的。
检查依赖通过,make && make install
安装成功.
完了之后,编辑/etc/sysconfig/squid.conf 文件.
因为我这个squid 只是用来做web 缓存的,所以只需要设置反向代理即可.
在配置文件顶上面加入下面几行:
http_port 80 accel defaultsite=184.82.15.110 vhost
#由于暂时没有域名指向,直接用ip
cache_peer 184.82.15.110 parent 81 0 no-query originserver name=myAcce
#我lighttpd 的端口是81
cache_peer_access myAccel allow all
#暂时没有接入规则
更多设置见:http://wiki.squid-cache.org/ConfigExamples/
保存退出后。
运行 squid -z 生成缓存数据 (确保squid uid 对目录有读写权限)
最后,运行 squid,启动缓存.
访问下 http://184.82.15.110,看看返回体。
HTTP/1.0 200 OK
Content-Type: text/html
Content-Length: 5794
Date: Mon, 19 Apr 2010 10:28:33 GMT
Server: lighttpd/1.4.26
X-Cache: MISS from PowerPC
X-Cache-Lookup: MISS from PowerPC:80
Via: 1.0 PowerPC (squid/3.1.1)
Connection: keep-alive
果然squid 开始工作了
___________________
访问 http://184.82.15.110:81/,返回体
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 5794
Date: Mon, 19 Apr 2010 10:53:29 GMT
Server: lighttpd/1.4.26
无缓存.
[ ] ( 1647 次浏览 ) 永久链接 ( 3 / 2399 )
<< <上一页 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 下一页> >>