LAMMP搭建

一、简介

LAMMP,是几个英文单词首字母的缩写。

L是Linux的缩写,Linux操作系统,Linux以稳定、安全、且开源著称的操作系统,适用于做服务器。

A是Apache的缩写,Apache是一款提供Web服务器的开源软件,Apache是一个极具稳定安全、高度模块化、支持模块动态扩展的Web服务器,是搭建Web服务器的首选之一,据统计全球有50%左右的Web服务器是用Apache搭建的。http://www.netcraft.com/这个网站,是对全球web服务器的排名。

M是Mysql的缩写,Mysql是数据库管理系统,数据库管理软件,也是开源软件。

M是Memcached的缩写,Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。

Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件。其设计哲学思想主要反映在如下方面:

1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;

2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;

3. 各服务器间彼此之间不互相通信:不在服务器间进行数据同步;服务器宕机,存储的数据立即丢失

4. O(1)的执行效率

5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长。

P是PHP的缩写,是一种面向对象的编程语言。

二、软件包

Apache服务器

apr-1.4.6.tar.bz2

apr-util-1.5.1.tar.bz2 下载地址:http://apr.apache.org/

 httpd-2.4.4.tar.bz2      下载地址:http://httpd.apache.org/

php

php-5.5.8.tar.bz2      

下载地址:http://www.php.net/downloads.php

xcache-3.1.0.tar.gz

http://xcache.lighttpd.net/wiki/Release-3.1.0

memcache-2.2.7.tgz


mysql服务器

mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz

http://dev.mysql.com/downloads/mysql/

memcached服务器

memcached-1.4.15.tar.gz

http://code.google.com/p/memcached/downloads/list

libevent-2.0.16-stable.tar.gz

三、拓扑结构

wKioL1L4HUai0feVAAJhkfzVqgA610.jpg


三、安装配置

   1、安装Apache服务

1)先将打包的HTTP软件包解压到/usr/local/src目录下。使用如下命令:

tar -jxvf httpd-2.4.4.tar.bz2 -C /usr/local/src    

注意软件包使用的是什么格式的打包压缩,这里使用的是tar+bzip2,要使用相对应的参数。

2)接下来就要安装,一般源文件里都提供有install文件或readme文件,在源文件中找到INSTALL文件,用less INSTALL 命令查询具体方法。找到之后,首先我们要明确的是将软件安装的什么路径下,这里也有一些指令说明:

./configure --prefix=PREFIX  这是指明安装路径的命令,

如下指令

./configure --prefix=/usr/local/apache //apache是自己定义的目录

但是在执行命令中是要检测编译环境时会报错:

checking for APR... no

configure: error: APR not found.

需要我们安装APR软件包。我们已经有了安装包,那就解压到对应目录,鉴于方便我们这里也直接将apr-util软件包也解压了。然后我们要先安装apr

./configure  --prefix=/usr/local/apr

然后执行命令 make  &&  make install  该命令是有两条命令的组合命令,第一条make命令是针对apr安装生成的makefile文件来操作的,mak主要对makefile文件中定义的一些规则来进行编译,主要生成二进制文件,手册,头文件,库文件。make install命令是将生成的那四类文件进行性存放,必须要存放在指定的目录里,这与在./configure命令的设置的选项有关。

3)在生成的lib文件中存放着安装的库文件,但是你想要系统访问到,能找到你的库文件,那就要将你的lib文件放在/etc/ld.so.conf.d/ 目录下,目录下你要建一个conf文件,例:apr.conf  就可以了。注意:要ldconfig命令更新缓存之后,你再查看能在系统缓存中找你的库文件。

4)接下来就是include文件,系统想要访问头文件就要创建头文件的链接,如下:

ln -s /usr/local/apr/include/apr-1  apr

lrwxrwxrwx. 1 rootroot 28 Dec 16 00:26 apr -> /usr/local/apr/include/apr-1

5)安装apr-util 其步骤大致和上述一致。

注意一点,在安装时需要指明apr的路径,因为apr-utilapr的工具,当然要找到apr的位置,如下指令:

./configure--prefix=/usr/local/apr-util  --with-apr=/usr/local/apr/bin/apr-1-config

6)继续安装HTTP

  ./configure --prefix=/usr/local/apache \

                                     --sysconfdir=/etc/httpd  \

                                     --enable-so \

                                     --enable-rewrite \

                                     --with-apr=/usr/local/apr/bin/apr-1-config \

                                     --with-apr-util=/usr/local/apr-util/bin/apu-1-config\

                                     --with-pcre \

                                     -with-z  \

                                     --enable-mpms-shared=all \

--with-mpm=event //指明Apache服务与php的连接是使用event类型

指定之后继续执行,但是有时候还是会遇到问题比如:checking for pcre-config... false configure: error: pcre-config for libpcre not found. PCRE is requiredand available from http://pcre.org/这是缺少pcre-config,我们到光盘目录下包含pcre-config文件的包,安装就可以了。

如:yum installpcre-devel --disablerepo=\* --enablerepo=c6-media

继续安装HTTP,成功之后,继续执行make  make install 指令。然后指定头文件位置:

cd  /usr/include/   ln -s /usr/local/apache/include/    apache

安装后形成的bin目录下有许多可执行文件,但是我们执行时不能总到bin目录下执行,不方便,这时需要我们修改环境变量,在/etc/profile 环境变量文件中修改,加上PATH=$PATH:/usr/local/apache/bin ,这是在其追加上bin目录。

注意:有时候在安装之后man手册不能使用,那是就要将man手册的路径加到/etc/man.config文件中,加上MANPATH  /usr/local/apahe/man


编写控制脚本:

/etc/init.d/目录下编写控制脚本。

#!/bin/bash

prog=/usr/local/apache/bin/httpd

lockfile=/var/lock/subsys/httpd


start () {

     if [ -e $lockfile ];then

    echo "the httpdserver is started"

    else

    echo -n "the httpdserver is starting......"

    sleep 1

    $prog  -k start&& echo -e"[\033[32mOK\033[0m] " && touch $lockfile ||echo"failer"

   fi


}

stop () {

      if [  !-e $lockfile ];then

    echo "the httpdserver is stoped"

    else

    echo -n "the httpdserver is stoping......"

    sleep 1

   $prog –k stop  && echo "OK" && rm-rf $lockfile || echo "failer"

 fi

}

status (){


     if [ -e $lockfile ];then

       echo "the httpdis running..."

        else

        echo "the httpdis stop "


       fi

}

case "$1" in


start)

   start

   ;;

stop)

   stop

   ;;

restart)

stop

start

  ;;

status)

status

  ;;

*)

echo "USAGE:start|stop|restart"

esac

service httpd start//启动服务


   2、mysql安装(二进制文件安装)

[root@ahao1 local]# tar -zxvfmysql-5.6.15-linux-glibc2.5-x86_64.tar.gz -C /usr/local //因为是二进制文件安装直接解压就可以了

[root@ahao1 local]# yum --disablerepo=\* --enablerepo=c6-mediaremove mysql-server  //在安装之处系统就安装有mysql服务工具,我们想要使用自己安装的,所以要卸载系统自身的

[root@ahao1 local]# ln -s mysql-5.6.15-linux-glibc2.5-x86_64/mysql  //创建链接

安装配置如下:

                              shell>groupadd mysql  //用户名为mysql的账号和组已经在系统中添加过。

                              shell> useradd-r -g mysql mysql

shell> cd /usr/local/mysql

                              shell> chown-R mysql .

                              shell> chgrp-R mysql .

                              shell>scripts/mysql_install_db --user=mysql //这里会出现错误缺少libaio异步IO接口

                              [root@ahao1 mysql]#yum --disablerepo=\* --enablerepo=c6-media install libaio

                              shell> chown-R root .

                              shell> chown-R mysql data

                              # Next command isoptional

                              shell> cpmy.cnf   /etc/my.cnf

                              shell> cpsupport-files/mysql.server /etc/init.d/mysqld

                              chmod a+x  /etc/init.d/mysqld

                              chkconfig--add  mysqld  //加入chconfig管理

                                       chkconfig  mysqld on

因为这次我们的mysql服务安装在不同的主机上,所以在我们通过客户机访问的时候,按照默认的是不能访问的,所以我们更改默认配置:

[root@ahao1 mysql]# /usr/local/mysql/bin/mysql -u root –p//登录

mysql> grant all privileges on *.* to root@'%' identified by'123';

Query OK, 0 rows affected (0.05 sec)  //更改为任意地址都能完全访问,mysql,并设置密码为123

mysql> flush privileges; //刷新配置


      3、php安装

      [root@ahao~]# tar -jxvf php-5.5.8.tar.bz2 -C /usr/local/src

      [root@ahao~]# mkdir -pv /etc/php /etc/php5.d

[root@ahao php-5.5.8]# yum --disablerepo=\*--enablerepo=c6-media install libxml2-devel //安装缺少的软件包

[root@ahao php-5.5.8]# ./configure     --prefix=/usr/local/php   --enable-fpm     --enable-sockets    --with-mysql=mysqlnd --with-mysqli=mysqlnd--with-pdo-mysql=mysqlnd --enable-mbstring --enable-xml  --with-jpeg-dir--with-zlib  --with-freetype-dir--with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php5.d

[root@ahao php-5.5.8]# make && make install

[root@ahao php-5.5.8]# cp php.ini-development /etc/php/php.ini

[root@ahao php-5.5.8]# cp sapi/fpm/init.d.php-fpm/etc/init.d/php-fpm  //创建启动脚本程序

[root@ahao php-5.5.8]# cd /usr/local/php/etc

[root@ahao etc]# cp php-fpm.conf.default  php-fpm.conf

//创建配置文件

[root@ahao etc]# service php-fpm start  //启动服务

打开主配置文件修改如下内容

[root@localhost ~]# vim /etc/httpd/httpd.conf

wKiom1L4HZbx-QzzAAH05ePaqAY053.jpg

添加Apache与php结合使用的模块

wKiom1L4HZiR-Y6lAAEEBqdqGC8242.jpg

添加php默认页面

wKioL1L4HXGAho9wAABfbSlJK2g037.jpg

添加实现反向代理的页面

wKioL1L4HXLgyVovAAFXgbCZnhw576.jpg

[root@localhost ~]#  service httpd restart //重新启动服务

4、memcached安装

安装libevent

[root@ahao ~]#tar –zxvf  libevent-2.0.16-stable.tar.gz–C /usr/local/libevent

[root@ahao1 libevent-2.0.16-stable]# ./configure--prefix=/usr/local/libevent

[root@ahao1 libevent]# make && make install

[root@ahao1 libevent]# vim /etc/ld.so.conf.d/libevent.conf

      //将libevent的库文件存放在系统能访问的地方

写入/usr/local/lievent/lib


安装memcached

[root@ahao1 memcached-1.4.15]# tar -zxvf memcached-1.4.15.tar.gz-C /usr/local/src

[root@ahao1 ~]# cd /usr/local/src/memcached-1.4.15/

[root@ahao1 memcached-1.4.15]# ./configure--prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/

[root@ahao1 memcached-1.4.15]# make && make install

[root@ahao1 memcached-1.4.15]# cd /usr/local/memcached/bin

[root@ahao1 bin]# ./memcached -u nobody -m 512m -d –vv //启动memcached

[root@ahao1 bin]# telnet 127.0.0.1 11211//试验一下是否memcached可以运行,

set foo 0 0 3     (保存命令)

bar               (数据)

STORED            (结果)

get foo           (取得命令)

VALUE foo 0 3     (数据)

bar              

//telnet之后就进行后续的测试,如果安装成功是可以正常运行的


5、安装xcache实现缓存

[root@ahao ~]# tar -zxvf xcache-3.1.0.tar.gz  -C /usr/local/src

[root@ahao ~]# cd /usr/local/src/

[root@ahao src]# cd xcache-3.1.0/

[root@ahao xcache-3.1.0]# /usr/local/php/bin/phpize

      //生成xcache动态链接库

[root@ahao xcache-3.1.0]# ./configure --enable-xcache--with-php-config=/usr/local/php/bin/php-config

[root@ahao xcache-3.1.0]# make && make install

[root@ahao xcache-3.1.0]# cp xcache.ini /etc/php5.d/

[root@ahao xcache-3.1.0]# cd /etc/php5.d

[root@ahao php5.d]# vimxcache.ini  //添加xcache的动态链接库

wKioL1L4HdTBtwGFAAKYUai0sOY327.jpg

[root@ahao php5.d]# service php-fpm restart

[root@ahao php5.d]# vim /usr/local/apache/htdocs/index.php   //写一个小的测试页面、包含了phpinfo函数。

现在可以在浏览器中测试一下:

在浏览器地址中输入http://192.168.1.199/index.php

wKiom1L4Hguy6kaiAANolgl2GB8598.jpg

证明xcache缓存实现成功了


6、安装memcache客户端

[root@ahao ~]# tar -zxvf memcache-2.2.7.tgz  -C /usr/local/src

      [root@ahao~]# cd /usr/local/src/memcache-2.2.7/

      [root@ahaomemcache-2.2.7]# /usr/local/php/bin//phpize

[root@ahao memcache-2.2.7]# ./configure--with-php-config=/usr/local/php/bin/php-confiig  --enable-memcache

      [root@ahaomemcache-2.2.7]# make && make install

      [root@ahaomemcache-2.2.7]# vim /etc/php5.d/xcache.ini

加上memcache的动态链接库

wKioL1L4Hf-g-S6eAAJ6qtvayEE134.jpg

在浏览器地址中输入http://192.168.1.199/index.php

wKiom1L4HlfBVL4PAAO_hYC_0aA006.jpg

      Memcache也安装成功、


四、测试

   [root@ahaomemcache-2.2.7]# vim /usr/local/apache/htdocs/index1.php

   //写入以下代码

<?php

             error_reporting(E_ALL& ~E_NOTICE);


             $mc= new memcache;

             $mc->addServer("192.168.1.139",11211);


             $mc->set("foo","Hello!");

             $mc->set("bar","Memcached...");


             $arr= array(

                 $mc->get("foo"),

                 $mc->get("bar")

             );

             var_dump($arr);

             ?>

在浏览器地址中输入http://192.168.1.199/index1.php

wKioL1L4HlLCbwPHAAHVJdXR0bw824.jpg

显示为成功。

我们可以到memcached服务器上查看是否有这两个字符串。

wKiom1L4HozhujwQAAFhnDVg0LQ217.jpg

这样就表示成功了,这我们的LAMMP的环境就搭建好了。