LAMMP環境搭建

LAMMP,是以下幾個單詞的首字母:

      L是Linux的縮寫,Linux操作系統,Linux以穩定、安全、且開源著稱的操作系統,適用於做  服務器。

      A是Apache的縮寫,Apache是一款提供Web服務器的開源軟件,Apache是一個極具穩定安全、高度模塊化、支持模塊動態擴展的Web服務器,是搭建Web服務器的首選之一,據統計全球有50%左右的Web服務器是用Apache搭建的。

      M是Mysql的縮寫,Mysql是數據庫管理系統,數據庫管理軟件,也是開源軟件。

      M是Memcached的縮寫,Memcached是一款開源、高性能、分佈式內存對象緩存系統,可應用各種需要緩存的場景,其主要目的是通過降低對Database的訪問來加速web應用程序。它是一個基於內存的“鍵值對”存儲,用於存儲數據庫調用、API調用或頁面引用結果的直接數據,如字符串、對象等。

      P是PHP的縮寫,是一種面向對象的編程語言。

LAMMP主要的優點是解決了應用程序與數據庫之間的瓶頸問題,有效提高了訪問速度,這就是LAMMP架構。

wKioL1L4N9-RNYOIAACOLNkwS9E560.png

LAMMP架構是分別搭建在不同的服務器上面,在工作中,更是應該如此,一臺服務器提供多種應用,服務器會很消耗資源,提供服務的性能也會降低。

此架構中各服務器的工作

     http在此架構中,響應回覆用戶html的請求

     php是把php程序執行的結果響應給http

     Memcached是根據用戶請求的動態網頁文件中是否需要Memcached服務器緩存數據,Memcached是把數據存儲在內存中的,速度可想而知了。

     Mysql是響應用戶是否需寫入查詢數據

   1、當用戶只需要請求web服務器的html頁面時,http直接響應請求,所經過的過程爲1--->8
   2、當用戶需請求一個web服務器的動態的頁面時,http把用戶請求的php執行程序發送給php服務器執行,php把執行的結果返回給http服務器,服務器把程序生成的的靜態頁面響應給客戶端。所經過的過程1--->2--->7--->8
   3、當用戶需要請求的web服務器資源中需要數據時,http把用戶請求的php執行發送給php服務器,執行過程中需要對數據進行操作時且Memcached中沒有緩存時,php去請求Mysql服務器的資源,mysql服務器把數據響應給php,如果此數據需要緩存則php把數據緩存到Memcached服務器上,然後把數據響應給http,http生成靜態的頁面響應給客戶端。所經過的過程1--->2--->5--->6[--->3]--->7--->8(如果需要緩存則會經過3過程)
   4、當用戶需要請求的web服務器資源中需要數據時,http把用戶請求的php執行程序給 php服務器執行,執行過程中需要對數據進行操作時Memcached中有緩存時,Memcached直接把 數據響應給php服務器,然後把數據響應給http,http生成靜態的頁面響應給客戶端。所經過的過程1--->2--->3--->4--->7--->8


http服務器的配置


安裝環境

[root@localhost httpd-2.4.6]# yum install pcre-devel   openssl-devel -y

安裝apr

[root@localhost ]# tar -zxvf apr-1.4.6.tar.bz2  -C /usr/local/src

[root@localhost ]# cd /usr/local/src/apr-1.4.6

[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/httpd/apr

[root@localhost apr-1.4.6]# make && make install

安裝apr-util

[root@localhost ]#  tar -zxvf apr-util-1.5.2.tar.bz2   -C /usr/local/src

[root@localhost ]# cd /usr/local/src/apr-util-1.5.2

[root@localhost apr-util-1.5.2]# ./configure --prefix=/usr/local/httpd/apr-util --with-apr=/usr/local/httpd/apr/

[root@localhost apr-util-1.5.2]# make && make install

安裝http

[root@localhost ]# tar -zxvf httpd-2.4.6.tar.bz2   -C /usr/local/src

[root@localhost ]# cd /usr/local/src/httpd-2.4.6

[root@localhost httpd-2.4.6]# ./configure --prefix=/usr/local/httpd/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/httpd/apr --with-apr-util=/usr/local/httpd/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event

[root@localhost httpd-2.4.6]# make && make install

編寫http的控制腳本

腳本在/etc/rc.d/init.d/httpd

#!/bin/bash

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

lockfile=/var/lock/subsys/httpd

start(){

     if [ -e $lockfile ];then

     echo "httpd server isstarted"

     else echo -n "httpd server isstarting... "

     sleep 1

     $prog –k start &>/dev/null  && echo  "[ ok ]" && touch $lockfile||echo "[ failer ]"

     fi

}

stop(){

     if [ ! -e $lockfile ];then

     echo "httpd server is stoped"

     else echo -n "httpd server isstoping... "

     sleep 1

     $prog –k stop &>/dev/null&& echo "[ ok ]" && rm -rf $lockfile ||echo "[failer ]"


     fi

}

status(){

     if [ -e $lockfile ];then

     echo "httpd server isstarted"

     else echo "httpd server nofound"

     fi

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

status)

status

;;

*)

echo"USAGE:start|stop|restart|status"

;;

esac


爲此腳本賦予執行權限

1[root@localhost init.d]# chmod +x /etc/rc.d/init.d/httpd


將httpd加入服務列表

1[root@localhost init.d]# chkconfig --add httpd


啓動httpd服務

1[root@localhost init.d]# service httpd  start

wKioL1L4d_PyEW6-AAASd_J3ijY602.png



php服務器的配置

[root@localhost ]# tar -zxvf php-5.4.19.tar.bz2  -C /usr/local/src

[root@localhost ]# cd /usr/local/src/php-5.4.19

[root@localhost php-5.4.19]# ./configure --prefix=/usr/local/httpd/php --with-mysql=mysqlnd --with-openssl --with-mysqli=mysqlnd --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

[root@localhost php-5.4.19]# make && make install


配置php文件

[root@localhost php-5.4.19]# cp php.ini-production /etc/php.ini

[root@localhost php-5.4.19]# cp /usr/local/httpd/php/etc/php-fpm.conf.default/usr/local/httpd/php/etc/php-fpm.conf


配置php-fpm腳本,並添加到開機啓動項裏

[root@localhost php-5.4.19]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm[root@localhost php-5.4.19]# chmod +x /etc/rc.d/init.d/php-fpm

[root@localhost php-5.4.19]# chkconfig --add php-fpm

[root@localhost php-5.4.19]# chkconfig php-fpm on


編輯php-fpm配置文件

[root@localhost php-5.4.19]# vim /usr/local/httpd/php/etc/php-fpm.conf

listen = 172.16.10.2:9000#設置本機IP監聽9000端口

pm.max_children = 50# 設置生成子進程數(設置併發量)                                            

pm.start_servers = 5#設置開機啓動進程數

pm.min_spare_servers = 2#設置最小空閒進程數

pm.max_spare_servers = 5#設置最大空閒進程數

pid = /usr/local/httpd/php/var/run/php-fpm.pid     #指定pid文件

error_log = log/php-fpm.log                        #開啓日誌功能


啓動php-fpm

[root@localhost php-5.4.19]# service php-fpm start

wKiom1L4d-nDEIMUAAAqnHTyvKo792.png


wKioL1L4eOHDBDDBAABaG24Bb-w816.png



mysql服務器配置



[root@localhost ]#groupadd -r mysql

[root@localhost ]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql

[root@localhost ]#chown -R mysql:mysql /mydata/data

[root@localhost ]# tar -zxvf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/src

[root@localhost ]# mv mysql-5.5.33-linux2.6-x86_64 /usr/local/

[root@localhost ]#cd /usr/local/

[root@localhost local]# ln -s mysql-5.5.33-linux2.6-x86_64/ mysql

[root@localhost local]#cd mysql

[root@localhost mysql]# chown -R mysql  .

[root@localhost mysql]# chgrp -R mysql  .

[root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

[root@localhost mysql]# chown -R root  .

[root@localhost mysql]# chown -r mysql data


配置mysql文件

[root@localhost ]# cd /usr/local/

[root@localhost local]# cd mysql

[root@localhost mysql]# cp support-files/my-large.cnf  /etc/my.cnf


加入到開機啓動項

[root@localhost mysql]#chkconfig --add  mysqld

[root@localhost mysql]#chkconfig mysql on


爲http和php配置phpmyadmin

[root@localhost ]# unzip phpMyAdmin-4.0.5-all-languages.zip

[root@localhost ]# mv phpMyAdmin-4.0.5-all-languages /web/htdoc/php

[root@localhost ]#cd /web/htdoc/php

[root@localhost php]# cp config.sample.inc.php config.inc.php

[root@localhost php]# vim config.inc.php

$cfg['Servers'][$i]['host'] = '172.16.10.3';  #指定mysql的IP


wKiom1L4fIejbRhXAADRsm4KkLg462.png


memcache服務器安裝


因爲memecache依賴於libevent,因此需要安裝libevent

[root@localhost ]# tar -zxvf libevent-2.0.21-stable.tar.gz -C /usr/local/src

[root@localhost ]# cd libevent-2.0.21-stable

[root@localhost libevent-2.0.21-stable]# ./configure --prefix=/usr/local/libevent

[root@localhost libevent-2.0.21-stable]# make && make install

[root@localhost ]# ln -s /usr/local/libevent/include/ /usr/include/libevent

`/usr/include/libevent' -> `/usr/local/libevent/include/'

[root@localhost ]# echo "/usr/local/libevent/lib/"> /etc/ld.so.conf.d/libevent.conf

[root@localhost ]# ldconf


安裝memcache

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

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

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

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

編輯腳本

[root@localhost bin]# vim /etc/init.d/memcached

#!/bin/bash

#

# Init file formemcached

#

# chkconfig: - 8614

# description: Distributed memory caching daemon

#

# processname: memcached

# config: /etc/sysconfig/memcached

. /etc/rc.d/init.d/functions

## Default variables

PORT="11211"

USER="nobody"

MAXCONN="1024"

CACHESIZE="64"

OPTIONS=""

RETVAL=0

prog="/usr/local/memcached/bin/memcached"

desc="Distributed memory caching"

lockfile="/var/lock/subsys/memcached"

start() {

echo -n $"Starting $desc (memcached): "

daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE

RETVAL=$?

[ $RETVAL -eq 0] && success && touch $lockfile || failure

echo

return$RETVAL

}

stop() {

echo -n $"Shutting down $desc (memcached): "

killproc $prog

RETVAL=$?

[ $RETVAL -eq 0] && success && rm -f $lockfile || failure

echo

return$RETVAL

}

restart() {

stop

start

}

reload() {

echo -n $"Reloading $desc ($prog): "

killproc $prog -HUP

RETVAL=$?

[ $RETVAL -eq 0] && success || failure

echo

return$RETVAL

}

case"$1"in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

condrestart)

[ -e $lockfile ] && restart

RETVAL=$?

;;

reload)

reload

;;

status)

status $prog

RETVAL=$?

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|status}"

RETVAL=1

esac


[root@localhost bin]# chmod +x /etc/init.d/memcached

[root@localhost bin]# service memcached start

Starting Distributed memory caching (memcached):           [  OK  ]



[root@localhost ]# tar -zxvf memcache-2.2.7.tar.gz -C /usr/local/src

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

[root@localhost memcache-2.2.7]# /usr/local/httpd/php/bin/phpize

Configuring for:

PHP Api Version:         20100412

Zend Module Api No:      20100525

Zend Extension Api No:   220100525

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

[root@localhost memcache-2.2.7]# make  && make install


修改php配置文件加載memcache模塊

[root@localhost memcache-2.2.7]# vim /etc/php.ini;extension=php_pspell.dll;

extension=php_shmop.dllextension=/usr/local/httpd/php/lib/php/

extensions/no-debug-non-zts-20100525/memcache.so  #添加此行,添加模塊

重啓php-fpm

[root@localhost htdoc]# service php-fpm restart

Gracefully shutting down php-fpm . done

Starting php-fpm  done

wKiom1L4gxOCcTVZAACd9wn0IbU087.png

測試memcached與php連接是否正常

[root@localhost htdoc]# pwd

/web/htdoc

[root@localhost htdoc]# cat test.php

<?php

$mem = newMemcache;

$mem->connect("172.16.10.4", 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.";

?>

再次訪問

wKiom1L4g9eB3jodAABZROPEzRQ172.png



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章