由于公司需求,小菜首次做项目:

        程序架构:Linux+Apache+Mysql+php+Xcache+Redis

编译安装apr,apr-util

# tar -zxvf apr-1.5.1.tar.gz
# ls
# cd apr-1.5.1
# ls
# ./configure --help 
# ./configure --prefix=/usr/local/apr
# make && make install
# cd ..
# tar -zxvf apr-util-1.5.3.tar.gz
# ls
# cd apr-util-1.5.3
# ls
# ./configure  --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

# make && make install
编译安装httpd2.4.9

设定编译参数:

--prefix    设置安装目录

--sysconfdir    设置配置文件目录

--enable-so    启用动态模块加载

--enable-ssl    启用SSL

--enable-cgi    启用cgi功能

--with-pcre    使用扩展的pcre库

--enable-rewrite    基于基本的URL处理

--with-apr    apr安装目录

--with-apr-util    apr-util安装目录

--enable-modules=most    启用大多数空闲分离模块

--enable-mpms-shared=all    启用MPM空闲分离模块动态装载

--with-mpm=event    给Apache选择默认进程模式

 

如果编译进程模式为work,或event,则在编译PHP的时候要加上 --enable-maintainer-zts,因为这两种模式是基于线程工作的。


# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event

# make && make install

连接头文件,导入库文件,修改PATH环境变量,这些步骤我就省略了。

编译安装PHP为fpm服务

设定编译参数:

--with-mysql=    让PHP支持mysql,指定mysql的位置。

--with-openssl    指定openssl位置

--with-mysqli=/usr/local/mysql/bin/mysql_config    指定mysql的高级接口

--with-freetype-dir    图片格式的支持

--with-jpeg-dir    图片格式的支持

--with-png-dir      图片格式的支持

--enable-mbstring    启用多字节字符串的支持

--with-zilb    压缩库

--with-libxml-dir    指定xml安装目录

--enable-xml    启用php解释XML页面程序

--enable-sockets    启用套接字通信

--with-apxs2=/usr/local/apache/bin/apxs    apache把php编译成模块的接口

--with-mcrypt    增加php加密的功能  依赖库(libmcrypt,libmcrypt-devel,mhash,mhash-devel)

--with-config-file-path=/etc    php的配置文件目录

--with-config-file-scan-dir=/etc/php.d        设置扫描配置文件的路径

--with-bz2    压缩功能

--enable-fpm    启用fpm服务

 ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2

# cp php.ini-production  /etc/php.ini

# cp /home/php-5.5.13/sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm

# cd /usr/local/php/etc

# cp php-fpm.conf.default  php-fpm.conf

# vim php-fpm.conf

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_memcached

接下来启动php-fpm

# chkconfig --add php-fpm

# service php-fpm start

编辑apache配置文件httpd.conf,以apache支持php 
 # vim /etc/httpd/httpd.conf

添加如下二行
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps

定位至DirectoryIndex index.html
修改为:

   DirectoryIndex  index.php  index.html

加载模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

配置虚拟主机支持使用fcgi:

ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_memcached_02

编译Xcache

# tar -xf xcache-3.1.0.tar.gz

# cd xcache-3.1.0

# ls

是不是没有configure脚本,要执行phpize程序检测一下,就可以configure了。

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_web_03

# /usr/local/php/bin/phpize
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install

安装结束时,会出现类似如下行:
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

整合php和xcache:
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d

# vim /etc/php.d/xcache.ini

extension =  /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

编译安装redis服务端

# tar -zxvf redis-2.8.9.rar.gz

# cd redis-2.8.9

这里直接make

# make

编译完成

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_LAMP_04

# cd src

# make install

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_LAMP_05

# mkdir /usr/local/redis/etc -pv  && mkdir /usr/local/redis/bin

# cp redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel  redis-server  mkreleasehdr.sh  /usr/local/redis/bin

# cp ../redis.conf  /usr/local/redis/etc/

# cd /usr/local/redis

# vim etc/redis.conf

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_LAMP_06

现在可以启动redis了,启动成功后,程序会监听在6379端口。

# ./bin/redis-server etc/redis.conf

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_memcached_07

编译安装phpredis,方法与安装Xcache有点类似。

# tar -zxvf  phpredis-master.tar.gz

# cd phpredis-master

# /usr/local/php/bin/phpize
# ./configure --enable-redis  --with-php-config=/usr/local/php/bin/php-config
# make && make install

安装结束时,会出现类似如下行:
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

整合php和redis:
# vim /etc/php.d/redis.conf

extension =  /usr/local/php/lib/php/extensions/no-debug-zts-20100525/redis.so

然后重启php就可以识别到redis了。

Memcached 安装配置:

由于Memcached要依赖于libevent,所以先安装libevent。

安装libevent:

# tar -xf libevent-2.0.21-stable.tar.gz 

# cd libevent-2.0.21-stable
# ls
# ./configure  --prefix=/usr/local/libevent
# make && make install
# cd /usr/local/libevent
# ls

# ln -sv /usr/local/libevent/include/ /usr/include/libevent
# vim /etc/ld.so.conf.d/libevent.conf

# ldconfig

安装Memcached
# cp ~/Desktop/memcached-1.4.20.tar.gz  .

# tar -xf memcached-1.4.20.tar.gz 

# cd memcached-1.4.20
# ./configure --help
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/

# make && make install

# cd /usr/local/memcacheds

# ln -sv /usr/local/memcached/include/ /usr/include/memcached
# cd bin/
# ./memcached -h

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_web_08

使用 # ./memcached -d -u daemon  启动memcached

启动后,程序会监听在tcp11211端口和udp11211端口

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_web_09

 Memcached提供了为数不多的几个命令来完成与服务器端的交互,这些命令基于memcached协议实现。

存储类命令:set, add, replace, append, prepend
获取数据类命令:get, delete, incr/decr
统计类命令:stats, stats items, stats slabs, stats sizes
清空缓存: flush_all

set    设置一个缓存;

add    新增;

replace    替换;

append    在一个已有的缓存后面附加值;

prepend    在缓存前面加值;

get    获取数据;

delete    清除;

incr    在当前缓存的值加1;

decr    在当前缓存减去值;

stats    

stats items    查看缓存了多少数据;

stats slabs     查看slab占用情况;

stats sizes     查看空间的使用情况;
# telnet 127.0.0.1 11211

# starts

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_lammp_10

add keyname  flag  timeout  datasize

检测能不能设置缓存

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_lammp_11

用add命令也可以

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_web服务器配置_12

安装memcache,php连接memcached驱动。

# tar -xf memcache-2.2.4.tgz

# cd memcache-2.2.4

# /usr/local/php-fpm/bin/phpize

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_lammp_13

检测完成之后,可以开始configure

# ./configure  --with-php-config=/usr/local/php-fpm/bin/php-config  --enable-memcache

# make && make install

安装完成!

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_memcached_14

整合进php

# vim /etc/php-fpm/php.d/memcache.ini

 写入:extension = /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20121212/memcache.so

然后重启php-fpm

# /etc/init.d/php-fpm restart

再访问下phpinfo();

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_memcached_15

我们测试下Memcached:

建立一个虚拟主机,添加一个index.php页面文件,把以下代码贴进去,再访问这个文件。

<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211)  or die("Could not connect");

$version = $mem->getVersion();
echo "Server's version: ".$version."<br/>\n";

$mem->set('hellokey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";

$get_result = $mem->get('hellokey');
echo "$get_result is from memcached server.";        
?>

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_lammp_16

我们再telnet登陆到memcached看看,也是有值的,看来数据确实缓存到memcached里面了。

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_memcached_17

使用memadmin,提供一个Web接口,管理和监控你的memcached。

下载地址:http://www.junopen.com/memadmin/

过程很简单:

先解压程序,然后建一个虚拟主机,把程序移过去,再访问就出现如下页面:

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_memcached_18

默认账号密码:admin

项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。_web服务器配置_19

 

今天就到这里了,有问题欢迎与我交流QQ:1183710107