部署LNMP+memcached网站平台,通过PHP页面实现对memcached服务器的数据操作,实现以下目标:
部署LNMP实现PHP动态网站架构创建PHP页面,并编写PHP代码,实现对memcached的数据操作具体操作包括增、删、改、查 方案使用2台RHEL6虚拟机,其中一台作为memcached及LNMP服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.205),如图-1所示。
图-1
在RHEL6系统中,我们使用源码的方式安装所有软件,nginx、mysql、php、memcached,注意相关依赖包软件也需要安装。另外如果希望使用PHP来操作memcached,注意必须要为PHP安装memcache扩展,都则PHP无法解析连接memcached的指令。客户端测试时需要提前安装telnet远程工具。
步骤实现此案例需要按照如下步骤进行。
步骤一:部署LNMP环境
1)使用yum安装基础依赖包
[root@svr5 ~]# yum -y groupinstall "Development Tools"
[root@svr5 ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel ncurses-devel
.. ..
2)源码安装Nginx
[root@svr5 ~]# useradd -s /sbin/nologin www
[root@svr5 ~]# tar -zxvf nginx-1.2.0.tar.gz
[root@svr5 ~]# cd nginx-1.2.0
[root@svr5 nginx-1.2.0]# ./configure \
> --prefix=/usr/local/nginx \
> --user=www --group=www \
> --with-http_ssl_module \
> --with-http_stub_status_module \
> --with-http_gzip_static_module \
.. ..
[root@svr5 ~]# make && make install
.. ..
3)源码安装cmake
新版本的MySQL需要使用cmake编译,因此安装MySQL前需要安装cmake:
[root@svr5 ~]# tar -zxvf cmake-2.8.10.2.tar.gz
[root@svr5 ~]# cd cmake-2.8.10.2
[root@svr5 cmake-2.8.10.2]# ./bootstrap --prefix=/usr/local/cmake
[root@svr5 cmake-2.8.10.2]# make && make install
[root@svr5 cmake-2.8.10.2]# /usr/local/cmake/bin/cmake --version
ncmake version 2.8.10.2
4)安装MySQL
[root@svr5 ~]# useradd –s /sbin/nologin mysql
[root@svr5 ~]# tar -zxvf mysql-5.5.13.tar.gz
[root@svr5 ~]# cd mysql-5.5.13
[root@svr5 mysql-5.5.13]# /usr/local/cmake/bin/cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/usr/local/mysql/data \
> -DMYSQL_TCP_PORT=3306 \
> -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
> -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all
[root@svr5 mysql-5.5.13]# make && make install
[root@svr5 mysql-5.5.13]# chown -R mysql.mysql /usr/local/mysql/
[root@svr5 mysql-5.5.13]# cd /usr/local/mysql
[root@svr5 mysql]#./scripts/mysql_install_db \
> --user=mysql --datadir=/usr/local/mysql/data
[root@svr5 mysql]# ls data/
mysql performance_schema test
5)安装mhash、libiconv、libmcrypt、PHP
[root@svr5 ~]# tar -zxvf mhash-0.9.9.9.tar.gz
[root@svr5 ~]# cd mhash-0.9.9.9
[root@svr5 mhash-0.9.9.9]# ./configure
[root@svr5 mhash-0.9.9.9]# make && make install
[root@svr5 ~]# tar -zxvf libiconv-1.13.tar.gz
[root@svr5 libiconv-1.13]# cd libiconv-1.13
[root@svr5 libiconv-1.13]# ./configure
[root@svr5 libiconv-1.13]# make && make install
[root@svr5 ~]# tar -zxvf libmcrypt-2.5.8.tar.gz
[root@svr5 ~]# cd libmcrypt-2.5.8
[root@svr5 libmcrypt-2.5.8]# ./configure
[root@svr5 libmcrypt-2.5.8]# make && make install
[root@svr5 libmcrypt-2.5.8]# ldconfig -v
[root@svr5 libmcrypt-2.5.8]# cd libltdl
[root@svr5 libltdl ]# ./configure --enable-ltdl-install
[root@svr5 libltdl ]# make && make install
[root@svr5 ~]# ln -sv /usr/local/lib/libmcrypt* /usr/lib/
[root@svr5 ~]# ln -sv /usr/local/lib/libmhash.* /usr/lib/
[root@svr5 ~]# ln -sv /usr/local/lib/libicon* /usr/lib/
[root@svr5 ~]# tar -zxvf php-5.4.9.tar.gz
[root@svr5 ~]# cd php-5.4.9
[root@svr5 php-5.4.9]# ./configure \
> --prefix=/usr/local/php5 \
> --with-config-file-path=/usr/local/php5/etc \
> --with-mysql=/usr/local/mysql \
> --with-mysqli=/usr/local/mysql/bin/mysql_config \
> --enable-fpm --enable-mbstring
[root@svr5 php-5.4.9]# make ZEND_EXTRA_LIBS='-liconv'
[root@svr5 php-5.4.9]# make install
[root@svr5 php-5.4.9]# cp php.ini-production /usr/local/php5/etc/php.ini
6)为PHP添加memcache扩展
[root@svr5 ~]# tar -zxvf memcache-2.2.5.tgz
[root@svr5 ~]# cd memcache-2.2.5
[root@svr5 memcache-2.2.5]# /usr/local/php5/bin/phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
[root@svr5 memcache-2.2.5]# ./configure \
> --with-php-config=/usr/local/php5/bin/php-config
> --enable-memcache
[root@svr5 memcache-2.2.5]# make && make install
[root@svr5 ~]# vim /usr/local/php5/etc/php.ini
extension_dir=“/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/”
extension=memcache.so
7)生成php-fpm配置文件
默认安装完php后,会自动生成一个php-fpm参考模板,我们需要复制该模板,并进行适当修改即可。
[root@svr5 ~]# cd /usr/local/php5/etc/
[root@svr5 etc]# cp php-fpm.conf.default php-fpm.conf
8)修改php-fpm配置文件,并启动php-fpm服务
[root@svr5 etc]# vim /usr/local/php5/etc/php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = error
daemonize = yes
[www]
user = www
group = www
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 32
pm.start_servers = 15
pm.min_spare_servers = 5
pm.max_spare_servers = 32
[root@localhost ~]# cd php-5.4.9/sapi/fpm/ //进入安装包子目录
[root@localhost fpm]# cp init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@localhost fpm]# chmod +x /etc/rc.d/init.d/php-fpm
[root@localhost fpm]# chkconfig --add php-fpm
[root@localhost fpm]# service php-fpm start
[root@localhost fpm]# ps aux | grep php-fpm
9)修改Nginx配置文件
[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
步骤二:启动服务
1)启动Nginx服务
这里需要注意的是,如果服务器上已经启动了其他监听80端口的服务软件(如httpd),则需要先关闭该服务,否则会出现冲突。
[root@svr5 ~]# service httpd stop //如果该服务存在则关闭该服务
[root@svr5 ~]# chkconfig httpd off
[root@svr5 ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@svr5 ~]# netstat -utnlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 32428/nginx
2)启动MySQL服务
[root@svr5 ~]# echo “/usr/local/mysql/lib/” >> /etc/ld.so.conf
[root@svr5 ~]# ldconfig
[root@svr5 ~]# vim /etc/profile
.. ..
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin/
export PATH
[root@svr5 mysql]# cp /usr/local/mysql/my.cnf /etc/my.cnf
[root@svr5 mysql]# cp /usr/local/mysql/support-files/mysql.server \
> /etc/init.d/mysqld
[root@svr5 mysql]# chmod +x /etc/init.d/mysqld
[root@svr5 mysql]# chkconfig add mysqld
[root@svr5 mysql]# chkconfig mysqld on
[root@svr5 ~]# service mysqld start
步骤三:创建PHP页面,使用PHP语言测试memcached服务
创建PHP首页文档/usr/local/nginx/html/index.php:
[root@svr5 ~]# vim /usr/local/nginx/html/index.php
<?php
$memcache=new Memcache; //创建memcache对象
$memcache->connect(‘localhost’,11211) or die (‘could not connect!!’);
$memcache->set(‘key’,‘test’); //定义变量
$get_values=$memcache->get(‘key’); //获取变量值
echo $get_values;
?>
步骤四:客户端测试
客户端使用浏览器访问服务器PHP首页文档,检验对memcached的操作是否成功:
[root@client ~]# firefox http://192.168.4.5