日度归档:2009年11月27日

ubuntu下编译安装nginx+php5+mysql5+pdo mysql+xcache+memcache

此方法适用 ubuntu/debian 及centos等相关平台(主要是因为采用lnmp,lnmp目前支持的这些平台)

先采用LNMP自动编译安装好nignx+php+mysql+zend optimizer+eaccelerator

然后编译安装最新版的xcache及memcache软件

因为lnmp安装脚本默认没有安装pdo-mysql模块

所以后面采用编译相关模块的方法添加php5所需的模块

php-pdo、php xcache、php memcache模块

转载请加上文章来源及本博的地址http://www.phpd.cn

安装方法:

(1)下载LNMP自动编译基本服务 详细方法:http://blog.licess.cn/lnmp-debian-ubuntu/

重启nginx : kill -HUP ‘cat /usr/local/nginx/logs/nginx.pid’

重启php-cgi : /usr/local/php/sbin/php-fpm restart      [注start\stop(启动和停止)]

(2)安装memcache

下载

libevent(当前最新稳定版本1.4.13)  wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz

memcache(当前最新稳定版本 1.4.3)  wget http://memcached.googlecode.com/files/memcached-1.4.3.tar.gz

先安装libevent

tar zxvf libevent-1.4.13-stable.tar.gz

cd libevent-1.4.13-stable

./configure –prefix=/usr

make

make install

再安装memcache

tar zxvf memcached-1.4.3.tar.gz

cd memcached-1.4.3.tar.gz

./configure –with-libevent=/usr

make

make install

安装完成后会把memcached放到 /usr/local/bin/memcached

启动memcache

/usr/local/bin/memcached -d -m 128 -u root -l 192.168.1.9 -p 1111 -c 256 -P /tmp/memcached.pid

-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.1.9,
-p是设置Memcache监听的端口,我这里设置了1111,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

 关闭memcache

kill ‘cat /tmp/memcached.pid’

(3)安装相关php模块 [pdo-mysql、php xcache模块(二种方式,一是单独运行二是做为zend插件运行)、php memcache客户端模块]

1、下载相关软件

pdo-mysql (当前最新稳定版本1.0.2) wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

xcache (当前最新稳定版本1.3.0) wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz

php-memcache(当前最新稳定版本) wget http://pecl.php.net/get/memcache-2.2.5.tgz

2、安装pdo-mysql

tar zxvf PDO_MYSQL-1.0.2.tgz

cd PDO_MYSQL-1.0.2

/usr/local/php/bin/phpize

./configure –with-php-config=/usr/local/php/bin/php-config

make

make install

安装完成后的最终位置是 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/pdo_mysql.so

3、安装xcache

tar zxvf xcache-1.3.0.tar.gz

cd xcache-1.3.0.tar.gz

/usr/local/php/bin/phpize

./configure –with-php-config=/usr/local/php/bin/php-config  –enable-xcache –enable-optimizer

安装完成后的最终位置是 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so

4、安装php memcache客户端模块

tar zxvf memcache-2.2.5.tgz

cd memcache-2.2.5.tgz

/usr/local/php/bin/phpize

./configure –enable-memcache –with-php-config=/usr/local/php/bin/php-config –with-zlib-dir

make

make install

安装完成后的最终位置是 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/memcache.so

5、修改php.ini文件,添加模块支持

vi /usr/local/php/etc/php.ini   在后面添加

extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"

extension=pdo_mysql.so

extension=memcache.so

如果xcache做单独模块的话:

extension=xcache.so

如果xcache做为zend插件的话:

[xcache-common]
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache.admin]
; Change xcache.admin.user to your preferred login name
xcache.admin.user = "admin"
; Change xcache.admin.pass to the MD5 fingerprint of your password
; Use md5 -s "your_secret_password" to find the fingerprint
;密码是’123456’的md5
xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e" 
[xcache]
; Change xcache.size to tune the size of the opcode cache
xcache.size = 16M
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
; Change xcache.var_size to adjust the size of variable cache
xcache.var_size = 8M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = On
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = On
xcache.coveragedump_directory = ""

6、最后需要重启php-fpm(php-cgi)进程

/usr/local/php/sbin/php-fpm restart

 

ok了,最终环境配置成功,可以上传一个phpinfo();进行测试,看是否软件都全部正常工作

也可以测试一下memcache是否自动工作

vi /home/wwwroot/memcache.php

PHP代码
  1. <?php   
  2. $memcache=new Memcache;   
  3. $memcache->connect("192.168.1.9",1111) or die("Memcache could not connect");   
  4. $v=$memcache->getVersion();   
  5. echo ‘Memcache Version : ‘.$v.‘<br />’;   
  6. echo ‘Memcache set Val<br />’;   
  7. $memcache->set("name","test memcache!");   
  8. echo ‘echo memcache val (name):’.$memcache->get("name");   
  9. ?>  

解决局域网内windows mysql服务器ubuntu端php远程连接迟缓的问题

公司的开发环境是

数据库主服务器 (windows平台 ip 192.168.1.8)

测试服务器         (虚拟机 ubuntu server 安装 nginx、php5、xcache、memcache)

开发平台             (ubuntu 9.04 桌面版、及windows)

碰到的问题是当ubuntu平台php采用远程方法连接到数据库服务器192.168.1.8时,读取数据迟缓严重,可达5秒左右

最后搜索google得知应该是ip解析的问题

试过的方法:

在ubuntu端的mysql中的my.cnf 配置文件中的[mysqld]后面添加skip-name-resolve 此方法无效

最终的解决方法是:在windows端的mysql服务器的配置文件my.cnf [mysqld]后添加skip-name-resolve 完美解决