由于公司需求,小菜首次做项目:
程序架构: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
接下来启动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
编译Xcache
# tar -xf xcache-3.1.0.tar.gz
# cd xcache-3.1.0
# ls
是不是没有configure脚本,要执行phpize程序检测一下,就可以configure了。
# /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
编译完成
# cd src
# make install
# 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
现在可以启动redis了,启动成功后,程序会监听在6379端口。
# ./bin/redis-server etc/redis.conf
编译安装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
使用 # ./memcached -d -u daemon 启动memcached
启动后,程序会监听在tcp11211端口和udp11211端口
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
add keyname flag timeout datasize
检测能不能设置缓存
用add命令也可以
安装memcache,php连接memcached驱动。
# tar -xf memcache-2.2.4.tgz
# cd memcache-2.2.4
# /usr/local/php-fpm/bin/phpize
检测完成之后,可以开始configure
# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config --enable-memcache
# make && make install
安装完成!
整合进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();
我们测试下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.";
?>
我们再telnet登陆到memcached看看,也是有值的,看来数据确实缓存到memcached里面了。
使用memadmin,提供一个Web接口,管理和监控你的memcached。
下载地址:http://www.junopen.com/memadmin/
过程很简单:
先解压程序,然后建一个虚拟主机,把程序移过去,再访问就出现如下页面:
默认账号密码:admin
今天就到这里了,有问题欢迎与我交流QQ:1183710107