Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2226424
  • 博文数量: 533
  • 博客积分: 8689
  • 博客等级: 中将
  • 技术积分: 7046
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 10:00
文章分类

全部博文(533)

文章存档

2024年(2)

2023年(4)

2022年(16)

2014年(90)

2013年(76)

2012年(125)

2011年(184)

2010年(37)

分类: LINUX

2010-11-26 13:36:37

NameVirtualHost 202.83.209.66:80
    ServerAdmin webmaster@
    DocumentRoot "/var/www/html"
    ServerName
    
            AllowOverride None
            Options None
            Order allow,deny
            Allow from all
                
    #ServerAlias
    #ErrorLog "logs/dummy-host.localhost-error_log"
    #CustomLog "logs/dummy-host.localhost-access_log common"

    ServerAdmin webmaster@so.abc.cn
    DocumentRoot "/var/so"
    ServerName so.abc.cn
    
            AllowOverride None
            Options None
            Order allow,deny
            Allow from all
                
    #ServerAlias so.febay.cn
    #ErrorLog "logs/dummy-host.localhost-error_log"
    #CustomLog "logs/dummy-host.localhost-access_log common"










LAMP编译安装(详细教程)

LAMP安装

一、安装一些下来要用到的包!
1
、安装OpenSSL
tar zxvf openssl-0.9.8e.tar.gz
cd openssl-0.9.8e
./config --prefix=/usr/local/openssl shared
make
make install
修改(此步骤非常重要,至少对于现有的软件版本)
vi /etc/ld.so.conf 
添加一行/usr/local/openssl/lib/
/sbin/ldconfig

2
、安装Curl
   # tar -zxf curl-7.15.0.tar.gz 
     
进入解压后的目录
   # ./configure --prefix=/usr/local/curl
   # make; make install

3
、安装expat
cd /usr/local/src
tar -zxvf expat-2.0.0.tar.gz
cd expat-2.0.0
./configure --prefix=/usr/local/expat
make;make install


4
、安装libxml2
#
解压,并进入解压后的目录
#./configure --prefix=/usr/local/libxml2
#make;make install

5
、安装zlib(默认安装,请勿自作主张修改)
#
解压
#
进入解压后的目录,./configure
#make;make install

6
、安装jpeg
# tar zxvf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# mkdir /usr/local/jpeg
# mkdir /usr/local/jpeg/bin
# mkdir /usr/local/jpeg/lib
# mkdir /usr/local/jpeg/include
# mkdir /usr/local/jpeg/man
# mkdir /usr/local/jpeg/man/man1
# ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
# make;make install

7
、安装libpng

#解压

#进入解压后的目录,./configure
#make;make install


8
、安装freetype
#
解压 
#
进入解压后的目录 ./configure --prefix=/usr/local/freetype
#make;make install

9
、安装gd
# tar zxvf gd-2.0.33.tar.gz 
# cd gd-2.0.33 
# ./configure --prefix=/usr/local/gd --with-jpeg=/usr/local/jpeg --with-freetype=/usr/local/freetype --with-png --with-zlib  
//
编译过程中会看到如下信息
** Configuration summary for gd 2.0.33:
   Support for PNG library:          yes
   Support for JPEG library:         yes
   Support for Freetype 2.x library: yes
   Support for Fontconfig library:   no
   Support for Xpm library:          no
   Support for pthreads:             yes
//
可以看到png  jpeg  freetype都已经安装上了
# make 
# make install

10
、安装 libxslt
   # tar -zxf libxslt-1.1.15.tar.gz
   # cd libxslt-1.1.15
   # ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2
   # make; make install

11
、安装libmcrypt(不然登录phpmyadmin时提示缺少mcrypt*
#
解压,并进入解压后的目录
#mkdir /usr/local/libmcrypt
#./configure --prefix=/usr/local/libmcrypt
#make;make install

一、mysql安装(mysql-standard-5.0.27-linux-i686-glibc23.tar.gz)
安装文件放到了/usr/local/src目录
1
tar zxvf mysql-standard-5.0.27-linux-i686-glibc23.tar.gz
2
mv mysql-standard-5.0.27-linux-i686-glibc23.tar.gz /usr/local/mysql
3
groupadd mysql mysql
4
useradd -g mysql mysql 新增mysql用户,并添加到mysql
5
cd /usr/local/mysql
6
scripts/mysql/mysql_install_db --user=mysql 创建mysql授权表,如果是mysql用户登录可省--user=mysql
7
chown -R root .     当前目录下的文件的所有属性改为root用户
8
chown -R mysql data  data数据目录的所有属性改为mysql用户
9
chgrp -R mysql .     将组属性改为mysql
10
bin/mysqld_safe --user=mysql &
11
bin/mysqladmin -u root password '1qaz2wsx'  设置密码
12
cp support-files/my-medium.cnf /etc/my.cnf
数据库目录默认(/usr/local/var)
13
vi /etc/rc.d/rc.local 添加 /usr/local/mysql/bin/mysqld_safe --user=mysql &

附:mysql.servermysqld_safe脚本和Mac OS X Startup Item可以用来手动启动服务器,或自动启动系统。mysql.serverStartup Item还可以用来停止服务器。
mysql.server
脚本可以被用来启动或停止服务器,通过用startstop参数调用它: 
shell> mysql.server start
shell> mysql.server stop
mysql.server stop
通过向服务器发出一个信号停止它。你可手动执行mysqladmin shutdown关闭服务器。
要想在服务器上自动启动和停止MySQL,应在“/etc/rc * 文件中适当的地方增加启动、停止命令。
要想手动安装mysql.server(/usr/local/mysql/support-files),用名称mysql将它复制到/etc/init.d目录,然后将它变为可执行文件。只需要将位置更改为mysql.serveris所在并执行这些命令的相应目录:
shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql
shell> chkconfig --level 345MySQL on
也可以在一个全局“/etc/my.cnf”文件中增加mysql.server的选项。一个典型的“/etc/my.cnf”文件可能看起来像这样:
[mysql.server]
basedir=/usr/local/mysql

 

##########MYSQL 我装的是5。5。2的。。 安装方法如下:


./configure --prefix=/usr/local/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-innodb
make
make install






源代码编译安装mysql

MySQL5.0.18的安装 

Yum install ncurses-devel(不安装的话后面编译mysql的时候会报错!!!)

 

# cp mysql-5.0.18.tar.gz /home/mysql

# tar zxvf  mysql-5.0.18.tar.gz

# cd /home/mysql/mysql-5.0.18

# groupadd mysql

# useradd mysql -g mysql

 

# ./configure --prefix=/usr/local/mysql   //*指定安装目录

--without-debug    //*去除debug模式

--with-charset=gb2312   //*添加gb2312中文字符支持

--enable-assembler    //*使用一些字符函数的汇编版本

--without-isam    //*去掉isam表类型支持 现在很少用了 isam表是一种依赖平台的表

--without-innodb  //*去掉innodb表支持 innodb是一种支持事务处理的表,适合企业级应用

--with-pthread    //*强制使用pthread(posix线程库)

--enable-thread-safe-client   //*以线程方式编译客户端

--with-client-ldflags=-all-static

--with-mysqld-ldflags=-all-static   //*以纯静态方式编译服务端和客户端

 

#    

 

//*可以通过./configure help 查看关于此命令的一些参数

# make

# make install

# scripts/mysql_install_db --user=mysql   //*生成mysql用户数据库和表文件

# cp support-files/my-medium.cnf /etc/my.cnf 

//*copy配置文件,large,medium,small三个环境下的,根据机器性能选择,如果负荷比较大,可修改里面的一些变量的内存使用值

# cp support-files/mysql.server /etc/init.d/mysqld   //*copy启动的mysqld文件

# chmod 700 /etc/init.d/mysqld

# cd /usr/local

# chmod –R 750 mysql

# chgrp -R mysql mysql

# chown –R mysql mysql/var

# cd /usr/local/mysql/libexec

# cp mysqld mysqld.old

# strip mysqld

# chkconfig --add mysqld

# chkconfig --level 234 mysqld on

# service mysqld start

# netstat -atln

看看有没有3306的端口打开,如果mysqld不能启动,看看/usr/local/mysql5/var下的出错日志,一般都是目录权限没有设置好的问题

# mysqladmin -uroot password "youpassword" #设置root帐户的密码

# mysql –u root -p

输入你设置的密码

mysql>use mysql;

mysql>delete from user where password=""; #删除用于本机匿名连接的空密码帐号

mysql>flush privileges;

mysql>quit


14
Apache安装
1
、解压,mkdir /usr/local/apache2 
2
、进入解压后的目录(菜鸟请严格按下面的参考)
./configure --prefix=/usr/local/apache --with-mysql=/usr/local/mysql  --enable-cgi --enable-ssl --with-ssl=/usr/local/openssl --enable-so --enable-rewrite --enable-modules=all --enable-mods-shared=all --enable-cache --enable-disk-cache  --enable-mem-cache --enable-deflate=shared
make 
make install 
设置成开机自启动 
/etc/rc.d/rc.local文件中加入一行 
/usr/local/apache/bin/apachectl start 
这样每次重新启动系统以后,apache也会随系统一起启动
(
注解:
./configure //
配置源代码树
--prefix=/usr/local/apache2 //Apache
的安装目录。
--enable-module=so //
打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
--enable-deflate=shared //
支持网页压缩
--enable-expires=shared //
支持 HTTP 控制
--enable-rewrite=shared //
支持 URL 重写
--enable-cache //
支持缓存
--enable-file-cache //
支持文件缓存
--enable-mem-cache //
支持记忆缓存
--enable-disk-cache //
支持磁盘缓存
--enable-static-support //
支持静态连接(默认为动态连接)
--enable-static-htpasswd //
使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
--enable-static-htdigest //
使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
--enable-static-rotatelogs //
使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序
--enable-static-logresolve //
使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名
--enable-static-htdbm //
使用静态连接编译 htdbm - 操作 DBM 密码数据库
--enable-static-ab //
使用静态连接编译 ab - Apache HTTP 服务器性能测试工具
--enable-static-checkgid //
使用静态连接编译 checkgid
--disable-cgid //
禁止用一个外部 CGI 守护进程执行CGI脚本
--disable-cgi //
禁止编译 CGI 版本的 PHP
--disable-userdir //
禁止用户从自己的主目录中提供页面
--with-mpm=worker // 
apacheworker方式运行
--enable-authn-dbm=shared // 
对动态数据库进行操作。Rewrite时需要。
)

15
、安装php
# tar zxvf php-5.2.6.tar.gz

我的编译参数为:


./configure --prefix=/usr/local/php  --with-apxs2=/usr/local/apache/bin/apxs --with-openssl-dir=/usr/local/openssl  --with-jpeg-dir=/usr/local/jpeg --with-png --with-freetype-dir=/usr/local/freetype --with-gd=/usr/local/gd  --enable-trace-vars  \
--with-mysql=/usr/local/mysql  --with-pdo-mysql=/usr/local/mysql  --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-sqlite-utf8 --enable-pdo  \
--with-libxml-dir=/usr/local/libxml2 --enable-dba --with-zlib --enable-mbstring --with-iconv --enable-memory-limit --enable-sockets --enable-force-cgi-redirect \
--disable-debug --with-config-file-path=/etc --enable-fastcgi --enable-zip





# cd php-5.2.6mkdir /usr/local/php 
# ./configure --prefix=/usr/local/php  --with-apxs2=/usr/local/apache/bin/apxs --with-freetype-dir=/usr/local/freetype --with-mysql=/usr/local/mysql --with-zlib-dir=/usr/lib --with-libxml-dir=/usr/local/libxml2 --enable-shared --with-curl=/usr/local/curl --with-iconv --enable-mbstring --with-gd=/usr/local/gd --enable-gd-native-ttf --enable-gd-jis-conv --with-jpeg-dir=/usr/local/jpeg  --with-png-dir=/usr/lib --enable-ftp  --enable-soap --with-mcrypt=/usr/local/libmcrypt  --enable-sockets  --enable-force-cgi-redirect --enable-inline-optimization --disable-debug --with-libexpat-dir=/usr/local/expat --with-xsl=/usr/local/libxslt --with-openssl=/usr/local/openssl --enable-calendar --with-config-file-path=/usr/local/php/etc  --disable-ipv6  --enable-fastcgi
make;make install
cp php.ini-dist  /usr/local/php/etc/php.ini 
vi /usr/local/php/etc/php.ini
查找safe_mode=Off,更改为safe_mode=On 
1
)查找max_execution_time = 30,更改为max_execution_time = 600   
2)查找max_input_time = 60,更改为max_input_time = 600 
3)查找memory_limit = 8M ,更改为memory_limit = 20M 
4)查找display_errors = On,更改为display_errors = Off 
5)查找register_globals = Off,更改为register_globals = On 
6)查找post_max_size = 8M,更改为post_max_size = 20M 
7)查找upload_max_filesize = 2M,更改为upload_max_filesize = 20M 
8)查找session.auto_start = 0,更改为session.auto_start = 1 
执行:wq!命令保存后退出,从而完成了php.ini文件的配置工作。 
更改apache的配制文件:得加几行,目的是让apache能解释php程序。 
查找AddType application/x-tar .tgz  行,在下面添加 
AddType application/x-httpd-php .php 
AddType application/x-httpd-php .php3 
AddType application/x-httpd-php .phtml 
AddType application/x-httpd-php-source .phps 
找到下面一行在后面加上index.php,这表示网站的默认页也能够为index.php 
DirectoryIndex index.html index.html.var index.php 
现在apache就能够运行php,写个文件测试一下,/usr/local/apache/htdocs目录下,新建一个phpinfo.php文件,
文件中只有一行代码:

保存此文件在你的浏览器中输入,你应该看到PHP的系统信息。
如果出现错误,比如提示你下载phpinfo.php,那么apache就是还无法解析php文件,那么请仔细检查以上的操作是否正确.

 

 


##########这个我是没有装的。###########

16、安装ZendOptimizer   
# tar zxvf ZendOptimizer*-i386.tar.gz
# cd ZendOptimizer*-i386
# ./install.sh
安装操作: [ok] -> [EXIT] -> [YES] -> [/httpd/zend] -> [/httpd/apache/conf] -> [yes] -> [OK] -> [OK] -> [NO]




##########这个我是没有装的。###########

17
、安装phpmyadmin
1
、解压
2
mv phpmyadmin* /usr/local/apache2/htdocs/phpmyadmin
3
、进入phpmyadmin目录,cp ./libraries/config.default.php ./config.inc.php
4
# vi config.inc.php   //修改成如下:
查找 $cfg['PmaAbsoluteUri'] 修改为你将上传到空间的phpMyAdmin的网址 如:$cfg['PmaAbsoluteUri'] = ''; 

查找 $cfg['Servers'][$i]['auth_type'] = 'config'; 
在自己的机子里调试用config;如果在网络上的空间用cookie,这里我们既然在前面已经添加了网址,就修改成cookie ,这里建议使用cookie.

查找 $cfg['Servers'][$i]['user'] = 'root';root去掉 // MySQL usermysql用户名,自己机里用root;) 
查找 $cfg['Servers'][$i]['password'] = ''; // MySQL password (mysql用户的密码,自己的服务器一般都是mysql用户root的密码
查找 $cfg['Servers'][$i]['only_db'] = ''; // If set to a db-name, only(你只有一个数据就设置一下;如果你在本机或想架设服务器,那么建议留空) 
查找 $cfg['DefaultLang'] = 'zh'; (这里是选择语言,zh代表简体中文的意思,这里不知道填gbk对否) 
设置完毕后保存 
 果出现配置文件现在需要绝密的短语密码(blowfish_secret)”那么请在$cfg['blowfish_secret'] = ' ';的等号里面设置你网站的cookie,例如:$cfg['blowfish_secret'] = '任意字符';这是因为你的“$cfg['Servers'][$i]['auth_type'] = 'cookie'的原因。 



18
、安装webmin
1
、解压并进入解压目录
2
./setup.sh /usr/local/webmin



19
、安装eAccelerator
#tar -jxvf ./eaccelerator-0.9.5-beta2.tar.bz2
#cd eaccelerator-0.9.5-beta2
#export PHP_PREFIX="/usr/local" 
(把PHP安装目录导入到环境变量,FreeBSD默认是/usr/local
#$PHP_PREFIX/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
#make
#make install

/usr/local/php5/etc/php.ini文件的[Zend]下添加
先查找extension_dir,改路径为"/usr/local/php5/lib/php/extensions/"

extension="eaccelerator.so"

eaccelerator.shm_size="32"    
解释:eaccelerator可使用的共享内存大小(单位为MB)

eaccelerator.cache_dir="/tmp/eaccelerator"  
解释:缓存路径

eaccelerator.enable="1"  
解释:打开或者关闭eaccelerator"1"指打开,"0"指关闭。默认值为"1"

eaccelerator.optimizer="1"  
解释:打开或者关闭代码优化,开启可以加快代码的执行速度。"1"指打开,"0"指关闭。默认值为"1"

eaccelerator.check_mtime="1" 
解释:当打开此项时,eaccelerator会在每次请求时检查php文件的修改时间,看其是否被修改过,这会耗费一点时间,如果php文件被修改 过,eaccelerator会重新编译缓存该php文件。当关闭此项时,如果php文件被修改,则需要手工删eaccelerator缓存,才能显示被 修改的php文件。"1"指打开,"0"指关闭。默认值为"1"

eaccelerator.debug="0"  
解释:打开或者关闭 调试记录。当打开时,eaccelerator会将对一个缓存文件的每次请求都写进 log。打开此项只对调试eaccelerator是否有BUG时有益处。"1"指打开,"0"指关闭。默认值为"0"

eaccelerator.log_file="/usr/local/apache2/logs/eaccelerator_log"  
日志文件

eaccelerator.filter=""     
解释:决定哪些PHP文件应该被缓存。可以指定一个范围(比如"*.php *.phtml"),这样被指定的文件就会被缓存。如果该范围以!开头,被指定的文件就不会被缓存。默认值为"",表示缓存所有的PHP文件。 

eaccelerator.shm_max="0"   
解释:一个用户使用例如eaccelerator_put之类的函数能够往共享内存中加载的最大数据。默认值为"0",表示不限制。(单位为字节)

eaccelerator.shm_ttl="0"   
解释:当没有足够的空闲共享内存去尝试缓冲一个新脚本时,将删除至少在shm_ttl秒之前没有被访问过的文件。默认值为"0",表示不尝试从共享内存中删除任何旧的脚本。(单位为秒)

eaccelerator.shm_prune_period="0"  
 释:当没有足够的空闲共享内存去尝试缓冲一个新脚本时,将删所有旧脚本,前提是这个尝试在超过shm_prune_period秒之前被执行过。默认值 "0",表示不尝试从共享内存中删除任何旧的脚本。(单位为秒)

eaccelerator.shm_only="0"  
解释:打开或者关闭在磁盘上缓存编译过的脚本。这个参数对会话数据和内容缓存没有效果。默认值为"0",表示使用磁盘和共享内存来缓存。
  

eaccelerator.compress="1"  
解释:打开或者关闭缓存内容压缩。"1"指打开,"0"指关闭。默认值为"1"

eaccelerator.compress_level="9"  
解释:内存压缩的级别。默认值为"9",表示最大压缩。


mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

 

 

 

 

 

#####################   安装过程遇到的错误   ##############################

 

1checking for termcap functions library… configure: error: No curses/termcap library found

网上大都说是缺少ncurses,我rpm -qa |grep ncurses了一下发现已经安装了ncurses

后来发现原来少的是:ncurses-devel

到光盘里找到

rpm -ivh ncurses-devel-5.5-24.20060715.i386.rpm

发现不在提示上述错误了

2/root/lamp/php-5.2.6/sapi/cli/php: error while loading shared libraries: /usr/local/lib/libpng12.so.0: cannot restore segment prot after reloc: Permission denied

/root/lamp/php-5.2.6/sapi/cli/php: error while loading shared libraries: /usr/local/lib/libpng12.so.0: cannot restore segment prot after reloc: Permission denied

make: [test] Error 127 (ignored)

 

上网查找原因,说是selinux的原因,服务器确实开着selinux的,更改selinux的配置文件将其设为disabled,可我不想重启服务器,有以下解决办法:

执行命令:setenforce 0

就可以不重启关闭selinux了!







mcrypt以及mhash扩展的安装!

该站下载
2.先安装Libmcrypt
     #tar -zxvf libmcrypt-2.5.8.tar.gz
     #cd libmcrypt-2.5.8
     #./configure
     #make
     #make install
   说明:libmcript默认安装在/usr/local
3.安装mhash
    #tar -zxvf mhash-0.9.9.9.tar.gz
     #cd mhash-0.9.9.9
     #./configure
     #make
     #make install
4.安装mcrypt
     #tar -zxvf mcrypt-2.6.8.tar.gz
      #cd mcrypt-2.6.8
      #LD_LIBRARY_PATH=/usr/local/lib ./configure
      #make
      #make install
    说明:由于在配置Mcrypt时,会找不到libmcrypt的链接库,导致无法编译,因为Libmcrypt的链接库在/usr/local/文件夹下。
        因此在配置mcrypt时要加入LD_LIBRARY_PATH=/usr/local导入键接库
5.安装PHP
      在配置PHP是加入:
      #./configure --with-mcrypt --with-mhash
      或者通过php的phpize动态添加的方式,到源码的ext/的相应目录,执行
      /usr/bin/phpize
      ./configure --with-php-config=/usr/bin/php-config
      make
      make install
      然后把生成的.so文件在php.ini文件里引用后重启apache就可以了!















Memcache的部署和使用

Memcache的部署和使用

一、memcache简介

Memcachedanga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。

Memcache官方网站:

 

二、memcache的安装

1、  下载源文件(目前最新稳定版本是memcached-1.4.5.tar.gz

wget

由于Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,

Libevent的官网为,最新稳定版本为:1.4.14b

wget

2、  安装memcache

1)、安装libevent

# tar xzvf libevent-1.4.14b-stable.tar.gz

# cd libevent-1.4.14b-stable

# ./configure --prefix=/usr

# make && make install

# cd ..

# ls -al /usr/lib | grep libevent (查看是否安装成功)

2)、安装memcache

# tar xzvf memcached-1.4.5.tar.gz

# cd memcached-1.4.5

# ./configure --with-libevent=/usr

# make && make install

# ls -al /usr/local/bin/mem*   (查看是否生成memcached可执行程序文件)

3、  启动memcache

# 通过/usr/local/bin/memcached –h查看命令选项帮助

[root@Centos2 memcached-1.4.5]# /usr/local/bin/memcached -h

memcached 1.4.5

-p       TCP port number to listen on (default: 11211)

-U       UDP port number to listen on (default: 11211, 0 is off)

-s      UNIX socket path to listen on (disables network support)

-a      access mask for UNIX socket, in octal (default: 0700)

-l   interface to listen on (default: INADDR_ANY, all addresses)

-d            run as a daemon

-r            maximize core file limit

-u assume identity of (only when run as root)

-m       max memory to use for items in megabytes (default: 64 MB)

-M            return error on memory exhausted (rather than removing items)

-c       max simultaneous connections (default: 1024)

#启动命令如下

# /usr/local/bin/memcached -d -m 10  -u root -l 172.28.5.2 -p 12000 -c 1024 –P /tmp/memcached.pid

####相关选项说明

-d   表示启动一个守护进程

-m 是分配给memcached使用的内存

-u   运行memcached的用户

-l     memcached监听的ip

-p    memcached监听的端口

-c    memcache运行的最大并发连接数

-P    是设置memcachepid文件

 

三、Phpmemcache扩展的安装

1、  windows平台memcache扩展的安装

下载相应版本的php_memcache.dll文件,然后将该文件放到D:\AppServ\php5\ext目录下(路径根据php安装的位置不同请自行设置),然后更改相应的php.ini的设置,创建php文件,访问这个文件看memcache模块是否起作用。

2、  linux平台memcache扩展的安装

wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz

tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
cd ../

修改php.ini文件

查找/usr/local/php/etc/php.ini中的 extension_dir = "./"修改为extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"

并在此行后增加一行,然后保存:

extension = "memcache.so"

创建php文件aaa.php,内容如下:

Phpinfo();

?>

保存,然后访问看是否能显示memcache模块的信息!

 

四、Memcache的使用

//使用部分是转载的,原文地址:http://blog.csdn.net/heiyeshuwu

[ 接口介绍 ]
服务器端和客户端都安装配置好了,现在我们就来测试以下我们的成果。Memcache客户端包含两组接口,一组是面向过程的接口,一组是面向对象的接口,具体可以参考PHP手册 “LXXV. Memcache Functions” 这章。我们为了简单方便,就使用面向对象的方式,也便于维护和编写代码。Memcache面向对象的常用接口包括:

Memcache::connect -- 打开一个到Memcache的连接
Memcache::pconnect --
打开一个到Memcache的长连接
Memcache::close --
关闭一个Memcache的连接
Memcache::set --
保存数据到Memcache服务器上
Memcache::get --
提取一个保存在Memcache服务器上的数据
Memcache::replace --
替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set
Memcache::delete --
Memcache服务器上删除一个保存的项目
Memcache::flush --
刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)
Memcache::getStats --
获取当前Memcache服务器运行的状态

[ 测试代码 ]
现在我们开始一段测试代码:

//连接
$mem = new Memcache;
$mem->connect("192.168.0.200", 12000);

//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."
";

//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "
";

//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "
";

//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "
";

//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "
";

//关闭连接
$mem->close();

//添加多台memcached服务器

$b = new Memcache();
$b->addServer("10.55.38.18",11271);
$b->addServer("10.55.38.18",11272);
$b->addServer("10.55.38.18",11273);

 

 

$arrHosts = array('10.10.10.11'=>'11211','10.10.10.12'=>'11211');

$mc = new Memcache();
echo
serialize($mc)."\n";
foreach(
$arrHosts as $host=>$port) {
echo
'start '.$host."\n";
$mc->connect($host,$port);

echo serialize($mc)."\n";
$stats = $mc->getStats();
echo
$stats['pid']."\n";

}


?>


如果正常的话,浏览器将输出:
Get key1 value: This is first value
Get key1 value: This is replace value
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
Get key1 value:
Get key2 value:


基本说明我们的Memcache安装成功,我们再来分析以下上面的这段程序。


[ 程序分析 ]

初始化一个Memcache的对象:
$mem = new Memcache;

连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:
$mem->connect("192.168.0.200", 12000);

保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第三个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时间:
$mem->set('key1', 'This is first value', 0, 60);

Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出:
$val = $mem->get('key1');
echo
"Get key1 value: " . $val;

现在是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最后输出了:
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "
Get key1 value: " . $val;

同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
print_r(
$val2);

现在删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果
$mem->delete('key1');
$
val = $mem->get('key1');
echo "
Get key1 value: " . $val . "
";

最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接
$mem->flush();
$
val2 = $mem->get('key2');
echo "
Get key2 value: ";
print_r(
$val2);
echo
"
";










我的PHP。ini 配置如下:


extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension="./memcache.so"
extension="./mhash.so"




 ;extension="eaccelerator.so"
 eaccelerator.shm_size="32"
 eaccelerator.cache_dir="/tmp/eaccelerator"
 eaccelerator.enable="1"
 eaccelerator.optimizer="1" 
 eaccelerator.check_mtime="1"
 eaccelerator.debug="0"
 eaccelerator.log_file="/usr/local/apache/logs/eaccelerator_log"
 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"

[Memcache]
memcache.allow_failover = On
memcache.max_failover_attempts = 20
memcache.chunk_size = 32768
memcache.default_port = 12000
memcache.default_timeout_ms 1000
memcache.hash_strategy = "standard"
memcache.hash_function = "crc32"
























阅读(890) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~