<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.6.3" -->
<rss version="0.92">
<channel>
	<title>带着心上路</title>
	<link>http://hily.me/blog</link>
	<description>新的开始，新的期待。</description>
	<lastBuildDate>Thu, 08 Jul 2010 10:54:26 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>无废话安装 Zend Debugger.</title>
		<description>下载Zend Debugger：

http://downloads.zend.com/studio_debugger/5.2.26/ZendDebugger-v5.2-linux-glibc23-i386.tar.gz

解压后将相应PHP版本目录下的ZendDebugger.so文件置于PHP扩展目录下，如：


/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/Zen
dDebugger.so



php.ini 尾部加上：

zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/Zen
dDebugger.so

考虑到安全，你还可以在php.ini尾部加上：


zend_debugger.allow_hosts=192.168.16.112
zend_debugger.expose_remotely=always


来限制某些IP的访问。


测试：

# php -m
[PHP Modules]
Core
ctype
date
dba
dom
ereg
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
memcached
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
rabbit
redis
Reflection
session
SimpleXML
soap
sockets
SPL
SQLite
sqlite3
standard
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
Zend Debugger
zlib

[Zend Modules]
Zend Debugger


注意一定要和php版本对应上，否则可能出现以下提示：
gentoo # php -m
Zend Debugger 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 Debugger.

[PHP Modules]
Core
ctype
date
...



-- EOF --

相关文章:给 Zend 6 装上 SVN 插件 ...</description>
		<link>http://hily.me/blog/2010/07/zenddebugger-quick-installation/</link>
			</item>
	<item>
		<title>无废话安装 Redis PHP C 扩展 phpredis</title>
		<description>wget http://download.github.com/owlient-phpredis-1.2.0-32-gc51f48a.tar.gz -O phpredis-1.2.0-32.tar.gz
tar zxf phpredis-1.2.0-32.tar.gz 
mv owlient-phpredis-c51f48a/ phpredis-1.2.0-32
cd phpredis-1.2.0-32
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

echo "extension = redis.so" >> /usr/local/php/etc/php.ini
以上扩展在 Redis 2.0.0 rc1 下测试正常。

-- EOF --



相关文章:无废话安装 memcache PHP 扩展 memcached无废话安装 Zend Debugger.无废话安装 dbcached </description>
		<link>http://hily.me/blog/2010/06/php-redis-installation/</link>
			</item>
	<item>
		<title>Nginx+PHP 配置漏洞：静态文件都可以当作 PHP 解析</title>
		<description>漏洞危险等级：毁灭性。

这个漏洞严格上说并不是 Nginx 和 PHP 本身的漏洞造成的，而是由配置造成的。在我之前写的许多配置中，都普遍存在这个漏洞。

简易检测方法：
打开 Nginx + PHP 服务器上的任意一张图片，如：
http://hily.me/test.png
如果在图片链接后加一串 /xxx.php （xxx为任意字符）后，如：
http://hily.me/test.png/xxx.php
图片还能访问的话，说明你的配置存在漏洞。

漏洞分析：

下面通过分析一个很常见的 Nginx 配置来解释下漏洞的成因：

server {
    listen       80;
    server_name  test.local;

    access_log  /work/www/logs/test.access.log  main;
    error_log  /work/www/logs/test.error.log;

    location / ...</description>
		<link>http://hily.me/blog/2010/05/nginx-php-configure-security-problem/</link>
			</item>
	<item>
		<title>无废话安装 dbcached</title>
		<description># 安装 qdbm 和 nmdb
dbcached 作分布式需要用到这两个


emerge libevent
emerge qdbm
wget http://blitiri.com.ar/p/nmdb/files/0.22/nmdb-0.22.tar.gz
tar zxvf nmdb-0.22.tar.gz
cd nmdb-0.22/
make BACKEND=qdbm ENABLE_TIPC=0 ENABLE_SCTP=0 install



# 安装 dbcached


wget http://dbcached.googlecode.com/files/dbcached-1.0.beta2.tar.gz
tar zxvf dbcached-1.0.beta2.tar.gz
cd dbcached-1.0.beta2/
./configure --prefix=/usr/local/dbcached --with-libevent=/usr
make && make install



# 启动 nmdb


/usr/local/bin/nmdb -d /var/dbcached.db -t 26010 -T 127.0.0.1 -u 26010 -U 127.0.0.1 -c 1024



# 启动 dbcached


/usr/local/dbcached/bin/memcached -d -m 16 -l 127.0.0.1 -p 11211 ...</description>
		<link>http://hily.me/blog/2010/05/dbcached-quick-installation/</link>
			</item>
	<item>
		<title>无废话安装 memcache PHP 扩展 memcached</title>
		<description>wget http://launchpad.net/libmemcached/1.0/0.40/+download/libmemcached-0.40.tar.gz
tar zxf libmemcached-0.40.tar.gz
cd libmemcached-0.40
./configure
make && make install

wget http://pecl.php.net/get/memcached-1.0.2.tgz
tar zxf memcached-1.0.2.tgz
cd memcached-1.0.2
/usr/local/php/bin/phpize
./configure  --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/
make && make install

echo "extension = memcached.so" >> /usr/local/php/etc/php.ini


-- EOF --

相关文章:PHP 的两个 memcache 扩展：memcache 和 memcached无废话安装 Redis PHP C 扩展 phpredis无废话安装 dbcached </description>
		<link>http://hily.me/blog/2010/05/php-memcached-quick-installation/</link>
			</item>
	<item>
		<title>PHP 的两个 memcache 扩展：memcache 和 memcached</title>
		<description>从手册上明显可以看到这两个扩展：
http://php.net/manual/en/book.memcache.php
http://php.net/manual/en/book.memcached.php

在Q群里问了下，没有人能分辨出它们的差别，甚至有人怀疑我说的 Memcached 是 Memcached 服务器（守护进程）。

从手册上看，memcached 会比 memcache 多几个方法，使用方式上都差不多。

看看严谨的老外们怎么说的：
http://stackoverflow.com/questions/1442411/using-memcache-vs-memcached-with-php


Memcached client library was just recently released as stable. It is being used by digg ( was developed for digg by Andrei Zmievski, now no longer with digg) and implements much more of the memcached protocol than the older memcache client. 

memcached 实现了更多的 ...</description>
		<link>http://hily.me/blog/2010/05/php-memcache-vs-memcached/</link>
			</item>
	<item>
		<title>安装 php-rabbit: RabbitMQ 的 PHP 扩展</title>
		<description>RabbitMQ 官方提供了三种 PHP 可用的扩展，分别是：
php-amqp
http://code.google.com/p/php-amqp/
php-rabbit
http://code.google.com/p/php-rabbit/
php-amqplib
http://code.google.com/p/php-amqplib/

这里我选择使用 php-rabbit，因为这个项目的 Activity 比较高，名字也比较权威 :)

安装步骤：

下载 RabbitMQ-C 客户端库 librabbitmq：
http://hg.rabbitmq.com/rabbitmq-c/
下载 RabbitMQ 协议代码生成工具：
http://hg.rabbitmq.com/rabbitmq-codegen/

注意 librabbitmq 的版本号，使用最新版本可能会导致下面编译 php-rabbit 时出错：

/bin/sh /work/setup/php-rabbit/libtool --mode=compile cc  -I. -I/work/setup/php-rabbit -DPHP_ATOM_INC -I/work/setup/php-rabbit/include -I/work/setup/php-rabbit/main -I/work/setup/php-rabbit -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -I/usr/local/include  -DHAVE_CONFIG_H  -g -O2   -c /work/setup/php-rabbit/rabbit.c -o rabbit.lo 
mkdir .libs
 cc -I. -I/work/setup/php-rabbit ...</description>
		<link>http://hily.me/blog/2010/05/php-rabbit-installation/</link>
			</item>
	<item>
		<title>RabbitMQ: 消息交换模块 Exchange</title>
		<description>RabbitMQ 中的 Exchange 负责对消息进行路由。
当收到 Publisher 传递给它的消息后，Exchange 会根据路由键 routing key 决定将消息加入到哪些消息队列中。

Exchange 有三种类型：

1. 直接交换类型 Direct Exchange Type
    使用一个固定字符串作为 routing key。
    若 exchange 和 message queue 绑定的 key 和 routing key 一样时，消息会被路由到绑定的这个 message queue 中。

2. 扇形交换类型 Fanout Exchange Type
    该类型不使用 routing key，进来什么就出去什么。
   ...</description>
		<link>http://hily.me/blog/2010/05/rabbitmq-exchange/</link>
			</item>
	<item>
		<title>RabbitMQ: 批量创建节点并组成集群</title>
		<description>多核 CPU 上创建集群的好处很明显，可以充分地利用 CPU 运算能力。

之前讲的都是在单机上用命令方式逐个创建节点，然后由这些节点组成集群。

其实如果是在同一台计算机上创建多个节点，RabbitMQ 提供了一个便捷的命令来批量操作。

这个命令是：rabbitmq-multi。

命令格式：
# rabbitmq-multi start_all count
其中 count 为要创建的节点的数量。

运行该命令，将会创建 count 个节点，这些节点监听的端口从 5672 顺序开始。第一个节点名称为环境变量 RABBITMQ_NODENAME 定义的名称，之后的节点名称则以环境变量 RABBITMQ_NODENAME 定义的节点名和节点序号组成，并以下划线 _ 连接。

如：定义的节点名称为 test，创建3个节点，则3个节点的名称分别为：test、test_1、test_2。

为了让节点创建时自动装载集群配置，先创建集群配置文件 /etc/rabbitmq/rabbitmq_cluster.config。
因为是批量创建，所以配置内容与前文所述有所差别，配置内容：
['test@gentoo'].

创建3个节点：
# ./rabbitmq-multi start_all 3

查看创建的节点状态：
# ./rabbitmq-multi status
Status of all running nodes...
Node 'test_2@gentoo' with Pid 30120: running
Node 'test_1@gentoo' with Pid 30073: running
Node 'test@gentoo' with Pid 30026: running
done.

查看集群中节点状态：
# ./rabbitmqctl -n test@gentoo ...</description>
		<link>http://hily.me/blog/2010/05/rabbitmq-multi-node-cluster/</link>
			</item>
	<item>
		<title>RabbitMQ: 从配置文件创建集群</title>
		<description>

前一篇日志简单演示了下手动创建集群的过程，可能你已经发现以命令行的方式创建集群多少有些繁琐。
RabbitMQ 提供了一种创建集群的便捷方法——从配置文件创建集群。

环境变量 RABBITMQ_CLUSTER_CONFIG_FILE 指定了集群配置文件所在路径，默认为：/etc/rabbitmq/rabbitmq_cluster.config。
如果需要，可以在启动 RabbitMQ Server 前设置它来改变配置文件路径。
只需要把要组成集群的各个节点以数组的方式写在配置文件中即可，示例：
['test1@gentoo', 'test2@gentoo', 'test3@gentoo'].

清除上篇文章中创建的3个节点：
# ./rabbitmqctl -n test1@gentoo stop_app
Stopping node test1@gentoo ...
...done.
# ./rabbitmqctl -n test1@gentoo reset   
Resetting node test1@gentoo ...
...done.
# ./rabbitmqctl -n test1@gentoo stop 
Stopping and halting node test1@gentoo ...
...done.
# ./rabbitmqctl -n test2@gentoo stop_app 
Stopping node test2@gentoo ...
...done.
# ./rabbitmqctl -n test2@gentoo reset   ...</description>
		<link>http://hily.me/blog/2010/05/rabbitmq-cluster-from-configfile/</link>
			</item>
</channel>
</rss>
