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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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

        程序架构: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

wKioL1OhNCOxTmQJAAN7uIt9sgk477.jpg

接下来启动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

wKiom1OhOSzhCyUiAADmqGycxYA903.jpg

编译Xcache

# tar -xf xcache-3.1.0.tar.gz

# cd xcache-3.1.0

# ls

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

wKiom1OhOpCSRBS-AAFXdmgmp3k665.jpg

# /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

编译完成

wKioL1OhPZ7BXC8BAAEPeCnT67M220.jpg

# cd src

# make install

wKioL1OhPdPywk_AAADQFRpLhZk749.jpg

# 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

wKiom1OhQAfzYimeAAGgkEd0BMU341.jpg

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

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

wKioL1OhQNvBK2K3AAGd3Y9Vo9Q812.jpg

编译安装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

wKioL1OhYgyiWDN9AAYPplQdy7Y838.jpg

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

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

wKiom1OhZr7zWE3pAAQczOgfiS4826.jpg

 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

wKiom1Ohakry5XHAAAJ1uqqecUk077.jpg

add keyname  flag  timeout  datasize

检测能不能设置缓存

wKioL1OhalyBYYOuAABW_r5p5NA613.jpg

用add命令也可以

wKioL1Ohas6jTkWsAABaYAYoYI0454.jpg

安装memcache,php连接memcached驱动。

# tar -xf memcache-2.2.4.tgz

# cd memcache-2.2.4

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

wKioL1OhbA6i6WdnAAGH2YwW-WM043.jpg

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

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

# make && make install

安装完成!

wKioL1OhbKXzal_vAAJypkGL8xg621.jpg

整合进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();

wKioL1OhbcDjRNL-AAGdIH6hF18401.jpg

我们测试下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.";         
?>

wKiom1OiVVWBTsPuAAE-gMCW8Co684.jpg

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

wKiom1OiVdvgC01ZAACdm8qLAfA966.jpg

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

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

过程很简单:

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

wKioL1OiXdrQn9LJAAGXeW_uHJ4809.jpg

默认账号密码:admin

wKiom1OiYqChlq4IAARlRzbMnLk220.jpg

 

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



本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1425053

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
NoSQL Java Redis
Springboot从2.x升级到3.x以后redis默认配置调整
Springboot从2.x升级到3.x以后redis默认配置调整
46 0
|
2月前
|
NoSQL Redis
若依管理系统去掉Redis相关配置
若依管理系统去掉Redis相关配置
|
1月前
|
NoSQL Linux Redis
Linux系统中安装redis+redis后台启动+常见相关配置
Linux系统中安装redis+redis后台启动+常见相关配置
|
27天前
|
NoSQL 关系型数据库 MySQL
LAMP+Redis详解(一)——基本原理
LAMP+Redis详解(一)——基本原理
13 1
|
1月前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
204 0
|
1月前
|
NoSQL 算法 数据管理
【Redis】Redis配置参数详解:优化过期删除机制
【Redis】Redis配置参数详解:优化过期删除机制
68 0
|
1月前
|
NoSQL Redis
Redis企业项目实战--登录校验拦截器
Redis企业项目实战--登录校验拦截器
|
1月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
|
1月前
|
负载均衡 NoSQL 容灾
|
2月前
|
缓存 NoSQL Redis
如何在Python中使用Redis或Memcached进行缓存?
如何在Python中使用Redis或Memcached进行缓存?
28 2

热门文章

最新文章