LNMP+memcached

    xiaoxiao2025-05-06  8

    LNMP+memcached 问题

    部署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

     

    最新回复(0)