LAMMP架構的企業級應用

              LAMMP架構的企業級應用php

=========================================html

LAMMP是什麼mysql

LAMMP的實現linux

LAMMP適用的生產環境web

==========================================sql

1、LAMMP是什麼數據庫

     LAMMP,是幾個英文單詞首字母的縮寫。apache

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

     A是Apache的縮寫,Apache是一款提供Web服務器的開源軟件,Apache是一個極具穩定安全、高度模塊化、支持模塊動態擴展的Web服務器,是搭建Web服務器的首選之一,據統計全球有50%左右的Web服務器是用Apache搭建的。http://www.netcraft.com/ 這個網站,是對全球web服務器的排名。vim

      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的縮寫,是一種面向對象的編程語言。


LAMMP的架構拓撲圖:

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

此架構中各服務器的工做

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

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

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

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

用戶的請求資源到獲取資源的過程

     一、當用戶只須要請求web服務器的html頁面時,Apache直接響應請求,所通過的過程爲1--->8

     二、當用戶需請求一個web服務器的動態的頁面時,Apache把用戶請求的php執行程序發送給FastCGI服務器執行,FastCGI把執行的結果返回給Apache服務器,服務器把程序生成的的靜態頁面響應給客戶端。所通過的過程1--->2--->7--->8

     三、當用戶須要請求的web服務器資源中須要數據時,Apache把用戶請求的php執行  程序給FastCGI執行,執行過程當中須要對數據進行操做時且Memcached中沒有緩存時,FastCGI去請求Mysql服務器的資源,mysql服務器把數據響應給FastCGI,若是此數據須要緩存則FastCGI把數據緩存到Memcached服務器上,而後把數據響應給Apache,Apache生成靜態的頁面響應給客戶端。所通過的過程1--->2--->5--->6[--->3]--->7--->8(若是須要緩存則會通過3過程)

     四、當用戶須要請求的web服務器資源中須要數據時,Apache把用戶請求的php執行程序給 FastCGI執行,執行過程當中須要對數據進行操做時Memcached中有緩存時,Memcached直接把 數據響應給FastCGI,而後把數據響應給Apache,Apache生成靜態的頁面響應給客戶端。所通過的過程1--->2--->3--->4--->7--->8


2、LAMMP的實現

Apache服務器所需的軟件包

     apr-1.4.6.tar.bz2

http://mirror.esocc.com/apache/apr/apr-1.4.6.tar.bz2

    apr-util-1.5.2.tar.bz2  

http://mirror.esocc.com/apache/apr/apr-util-1.5.2.tar.bz2

    httpd-2.4.6.tar.bz2(提供Web服務器的軟件包)

http://mirror.esocc.com/apache/httpd/httpd-2.4.6.tar.bz2

    因爲httpd-2.4的包linux系統中的apr版本不夠新,因此須要下載更新的apr相關的包,直接下載源碼包進行安裝。

FastCGI服務器所需的軟件包

          libmcrypt  

http://mirrors.sohu.com/fedora-epel/6Server/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm

        libmcypt-devel

http://mirrors.sohu.com/fedora-epel/6Server/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

          xcache-3.0.3.tar.bz2 (緩存php執行好的代碼,加速opcode)

http://xcache.lighttpd.net/pub/Releases/3.0.3/xcache-3.0.3.tar.bz2

          php-5.4.19.tar.bz2  (提供php-fpm(FastCGI)服務的軟件包)

http://downloads.php.net/stas/php-5.4.19.tar.bz2

          memcache-2.2.7.tgz  (FastCGI鏈接Memcache服務器的軟件包)

http://pecl.php.net/get/memcache-2.2.7.tgz

Memcached服務器所需的軟件包

         libevent-2.0.21-stable.tar.gz

http://nchc.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.21-stable.tar.gz

         memcached-1.4.15.tar.gz (安裝Memcached服務器的軟件包)

http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz

Mysql服務器所需的軟件包

       mysql-5.5.33-linux2.6-x86_64.tar.gz

http://downloads.skysql.com/archives/mysql-5.5/mysql-5.5.33-linux2.6-x86_64.tar.gz

    安裝的是mysql的通用二進制程序包,此軟件包解壓以後就可使用


思路:

一、每一個服務器的安裝操做都是獨立,可是最後須要創建關係

二、解決WEB怎麼鏈接PHP-FPM(FastCGI)

三、解決PHP-FPM(FastCGI)怎麼鏈接Memcached

四、解決PHP-FPM(FastCGI)怎麼鏈接Mysql


Apache服務器的配置安裝:

[root@jie1 ~]# ls
anaconda-ks.cfg    apr-util-1.5.2.tar.bz2  install.log
apr-1.4.6.tar.bz2  httpd-2.4.6.tar.bz2     install.log.syslog
##一、解壓下載的軟件包######
[root@jie1 ~]# tar xf apr-1.4.6.tar.bz2
[root@jie1 ~]# tar xf apr-util-1.5.2.tar.bz2
[root@jie1 ~]# tar xf httpd-2.4.6.tar.bz2
###二、安裝開發庫,和依賴性包######
[root@jie1 ~]# yum -y groupinstall "Development tools" "Server Platform Development"
[root@jie1 ~]# yum -y install pcre-devel  #安裝依賴性包
[root@jie1 ~]# rpm -qa | grep httpd    #檢查系統是否安裝httpd的rpm包
httpd-tools-2.2.15-26.el6.centos.x86_64
####三、編譯安裝apr軟件#######
[root@jie1 ~]# cd apr-1.4.6
[root@jie1 apr-1.4.6]# ./configure --prefix=/usr/local/apr && make && make install
###四、編譯安裝apr-util軟件包######
[root@jie1 ~]# cd apr-util-1.5.2
[root@jie1 apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
####五、編譯安裝httpd的軟件包#####
[root@jie1 ~]# cd httpd-2.4.6
[root@jie1 httpd-2.4.6]# ./configure --prefix=/usr/local/apache  --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
[root@jie1 ~]# cp httpd-2.4.6/build/rpm/httpd.init  /etc/rc.d/init.d/httpd    #複製源碼包裏面提供的httpd的SystemV腳本
[root@jie1 ~]# vim /etc/rc.d/init.d/httpd
###六、須要改動httpd的SystemV腳本的一些內容#####
##############vim /etc/rc.d/init.d/httpd ########################
prog=httpd
httpd=${HTTPD-/usr/local/apache/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache/logs/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
RETVAL=0
# check for 1.3 configuration
check13 () {
        CONFFILE=/usr/local/apache/conf/httpd.conf
###################################################################
[root@jie1 ~]# vim /usr/local/apache/conf/httpd.conf
ServerName 172.16.22.1:80 #在配置文件中找到ServerName改爲服務器的IP:端口
#這樣啓動的時候就不會報錯
[root@jie1 ~]# service httpd start  #啓動服務
Starting httpd:                                            [  OK  ]
###七、使系統能識別源碼包安裝的軟件############
[root@jie1 apache]# echo "PATH=/usr/local/apache/bin/:$PATH" >/etc/profile.d/httpd.sh
[root@jie1 apache]# source /etc/profile.d/httpd.sh
[root@jie1 apache]# ln -sv /usr/local/apache/include/  /usr/include/httpd
[root@jie1 apache]# chkconfig --add httpd #把服務加到開機自動啓動的列表
[root@jie1 apache]# chkconfig --level 35 httpd  on

FastCGI(php-fpm)服務器的配置安裝:

[root@jie2 ~]# ls
anaconda-ks.cfg     xcache-3.0.3.tar.bz2  install.log 
memcache-2.2.7.tgz  php-5.4.19.tar.bz2   install.log.syslog
###一、解壓下載的源碼包
[root@jie2 ~]#tar xf php-5.4.19.tar.bz2
[root@jie2 ~]#tar xf memcache-2.2.7.tgz
[root@jie2 ~]#tar xf xcache-3.0.3.tar.bz2
###二、安裝開發包和安裝依賴性包,因爲個人編譯參數只指定了這些,因此只需這些依賴性包,若是指定的參數不同,則須要的依賴性包也不盡相同
[root@jie2 ~]#yum -y groupinstall "Server Platform Development" "Development tools"
[root@jie2 ~]#yum -y install libxml2-devel bzip2-devel  libmcrypt-devel
#libmcrypt-devel在光盤裏面是沒有提供相應的包,mirrors.sohu.com鏡像站點的#epel源裏面有此包,各位能夠搭建一個epel的yum源,直接安裝此包,我就是直接
#搭建的sohu的光盤yum源和epel  yum源
[root@jie2 ~]# cd php-5.4.19
###編譯參數--enable-fpm,支持FastCGI PHP模塊,此參數決定是否能把PHP安裝成#FastCGI服務器
[root@jie2 php-5.4.19]#./configure --prefix=/usr/local/php  --enable-fpm --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets  --with-mcrypt  --with-bz2 --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd && make && make install
###三、創建php的配置文件,此配置文件在php的解壓包中
[root@jie2 php-5.4.19]# cp php.ini-production   /etc/php.ini
[root@jie2 php]#cd /usr/local/php/
###四、使系統可以識別源碼包安裝的軟件
[root@jie2 php]# echo "PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH" >/etc/profile.d/php-fpm.sh
[root@jie2 php]# source /etc/profile.d/php-fpm.sh
[root@jie2 php]#cd /usr/local/php/etc
###五、創建php-fpm服務的配置文件,此配置文件的路徑 /usr/local/php/etc
[root@jie2 etc]# mv php-fpm.conf.default php-fpm.conf
##修改php-fpm服務配置文件的監聽的IP地址改成本地IP地址
 ### vim /usr/local/php/etc/php-fpm.conf####
              Listen 172.16.22.2:9000
 ############################################
[root@jie2 fpm]# pwd
/root/php-5.4.19/sapi/fpm
###六、創建php-fpm的systemV腳本,此腳本的路徑是在php解壓包的php-5.4.19/sapi/fpm路徑下
[root@jie2 fpm]# cp init.d.php-fpm /etc/rc.d/init.d/php-fpm
###七、把服務腳本加執行權限,開啓服務,把服務加到開機自啓動列表中
[root@jie2 fpm]# chmod +x /etc/rc.d/init.d/php-fpm
[root@jie2 fpm]# service php-fpm start
[root@jie2 fpm]# chkconfig --add php-fpm
[root@jie2 fpm]# chkconfig --level 35 php-fpm on
###八、安裝FastCGI與memcached服務鏈接的接口的一個軟件
[root@jie2 ~]# cd /root/memcache-2.2.7
[root@jie2 memcache-2.2.7]# /usr/local/php/bin/phpize
[root@jie2 memcache-2.2.7]# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache   && make && make install
####==============================================================######
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
#編譯安裝完成後最後爲提示這樣一句
###=================================================================####
###九、在php的配置文件裏面裝載memcache.so的模塊路徑
###vim /etc/php.ini##########
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
##########################################
[root@jie2 ~]# cd xcache-3.0.3
###十、安裝FastCGI加速opcode代碼的軟件
[root@jie2 xcache-3.0.3]# /usr/local/php/bin/phpize
[root@jie2 xcache-3.0.3]# ./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-non-zts-20100525/
#編譯安裝完成後最後爲會提示這樣一句
###=================================================================####
###十一、創建xcache的配置文件,在xcache的解壓的源碼包裏面
[root@jie2 xcache-3.0.3]# mkdir /etc/php.d
[root@jie2 xcache-3.0.3]# cp xcache.ini /etc/php.d/
##創建這個xcache的配置文件,則能夠把xcache.so的模塊裝載進去,不創建xcache的配置文件,則也能夠把xcache.so的模塊裝載到php.ini的配置文件中,裝載方法和裝載memcache.so模塊的方法同樣
[root@jie2 xcache-3.0.3]# service php-fpm restart  #重啓php-fpm服務
Gracefully shutting down php-fpm . done
Starting php-fpm  done

Memcached服務器的配置安裝

[root@jie3 ~]#yum -y groupinstall "Server Platform Development" "Development tools" #安裝開發包
[root@jie3 ~]# ls
anaconda-ks.cfg  install.log.syslog             memcached-1.4.15.tar.gz
install.log      libevent-2.0.21-stable.tar.gz
###一、解壓下載的軟件
[root@jie3 ~]# tar xf libevent-2.0.21-stable.tar.gz
[root@jie3 ~]# tar xf memcached-1.4.15.tar.gz
###二、編譯安裝libevent軟件
[root@jie3 ~]# cd libevent-2.0.21-stable
[root@jie3 libevent-2.0.21-stable]# ./configure --prefix=/usr/local/libevent && make && make install
[root@jie3 ~]# cd /usr/local/libevent/
###三、使系統識別libevent的庫文件和頭文件
[root@jie3 libevent]# echo "/usr/local/libevent/lib" >/etc/ld.so.conf.d/libevent.conf
[root@jie3 libevent]# ldconfig -v | grep libevent
/usr/local/libevent/lib:
    libevent_core-2.0.so.5 -> libevent_core.so
    libevent_openssl-2.0.so.5 -> libevent_openssl.so
    libevent_pthreads-2.0.so.5 -> libevent_pthreads.so
    libevent-2.0.so.5 -> libevent.so
    libevent_extra-2.0.so.5 -> libevent_extra.so
    libevent-1.4.so.2 -> libevent-1.4.so.2.1.3
    libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.1.3
    libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.1.3
[root@jie3 libevent]# ln -sv /usr/local/libevent/ /usr/include/libevent
`/usr/include/libevent' -> `/usr/local/libevent/'
###四、編譯安裝memcached軟件包
[root@jie3 ~]#cd memcached-1.4.15
[root@jie3 ~]#./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ && make && make install
###五、創建memcached的systemV腳本,copy下面的腳本爲服務腳本
#############vim  /etc/init.d/memcached#######################
#!/bin/bash
#
# Init file for memcached
#
# chkconfig: - 86 14
# 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"
IP="172.16.22.3"
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 -l $IP
        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
exit $RETVAL
####################################################################
###六、把服務腳本給予執行權限,而後把服務加到開機啓動列表中
[root@jie3 memcached]# chmod +x /etc/init.d/memcached
[root@jie3 memcached]# chkconfig --add memcached
[root@jie3 memcached]# chkconfig --level 35 memcached on
[root@jie3 /]# service memcached start
Starting Distributed memory caching (memcached):           [  OK  ]
[root@jie3 /]# netstat -pant | grep memcached
tcp        0      0 172.16.22.3:11211           0.0.0.0:*                   LISTEN      9802/memcached

Mysql服務器的配置安裝:

[root@jie4 ~]# ls
anaconda-ks.cfg  install.log.syslog
install.log      mysql-5.5.33-linux2.6-x86_64.tar.gz
###一、解壓下載的mysql的通用二進制軟件包
[root@jie4 ~]#tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/
[root@jie4 ~]# cd /usr/local/
[root@jie4 local]# mv mysql-5.5.33-linux2.6-x86_64/ mysql
###二、建立存放數據庫的文件,生產環境數據庫存放在獨立的建LVM的硬盤上面
[root@jie4 local]# mkdir -pv /mysql/data
mkdir: created directory `/mysql'
mkdir: created directory `/mysql/data'
###三、建立用戶,和設置文件的屬主和權限
[root@jie4 local]# useradd -r mysql
[root@jie4 local]# chown -R mysql:mysql /mysql/data
[root@jie4 local]# chmod -R 755 /mysql/data/
[root@jie4 local]# cd /usr/local/mysql/
[root@jie4 mysql]# cd support-files/
###四、創建mysql的配置文件
[root@jie4 support-files]# cp my-large.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y
###五、創建mysql的systemV服務腳本
[root@jie4 support-files]# cp mysql.server  /etc/rc.d/init.d/mysqld
[root@jie4 ~]# vim /etc/my.cnf
###六、修改mysql的配置文件,修改或添加這兩行
#############vim /etc/my.cnf###############
thread_concurrency = 4
datadir = /mysql/data
###########################################
###七、初始化mysql的腳本
[root@jie4 support-files]# cd /usr/local/mysql/scripts/
[root@jie4 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/data
###八、開啓mysql服務和把mysql的服務加入到開機自啓的列表中
[root@jie4 scripts]# service mysqld start
Starting MySQL...........                                  [  OK  ]
[root@jie4 local]# chkconfig  --add mysqld
[root@jie4 local]# chkconfig --level 35 mysqld on
[root@jie4 scripts]# cd /usr/local/mysql/
###九、使系統能識別源碼包安裝的軟件############
####1)修改環境變量PATH的路徑
####2)連接頭文件的路徑
####3)鏈接庫文件
####4)提供man幫助文檔
[root@jie4 mysql]# echo "PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysqld.sh
[root@jie4 mysql]# source /etc/profile.d/mysqld.sh
[root@jie4 mysql]# ln -sv /usr/local/mysql/include/ /usr/include/mysqld
`/usr/include/mysqld' -> `/usr/local/mysql/include/'
[root@jie4 mysql]# echo "/usr/local/mysql/lib/" >/etc/ld.so.conf.d/mysqld.conf
[root@jie4 mysql]# ldconfig -v | grep mysql
####十、建立登陸數據庫的用戶的密碼
[root@jie4 local]# mysqladmin -u root password redhat
[root@jie4 local]# mysql -u root -p
mysql> select user,password,host from mysql.user;
#查詢mysql數據庫中user表的用戶,密碼和host
+------+-------------------------------------------+-----------+
| user | password                                  | host      |
+------+-------------------------------------------+-----------+
| root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | localhost |
| root |                                           | jie4.com  |
| root |                                           | 127.0.0.1 |
| root |                                           | ::1       |
|      |                                           | localhost |
|      |                                           | jie4.com  |
+------+-------------------------------------------+-----------+
6 rows in set (0.00 sec)
#刪除數據庫的安全隱患的用戶
mysql> drop user root@'::1';
Query OK, 0 rows affected (0.00 sec)
mysql> drop user root@'jie4.com';
Query OK, 0 rows affected (0.00 sec)
mysql> drop user ''@'jie4.com';
Query OK, 0 rows affected (0.00 sec)
mysql> drop user ''@'localhost';
Query OK, 0 rows affected (0.00 sec)
#建立指定網段能訪問數據庫的用戶名和密碼
mysql> create user root@'172.16.%.%' identified by 'mypass';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,password,host from mysql.user;
+------+-------------------------------------------+------------+
| user | password                                  | host       |
+------+-------------------------------------------+------------+
| root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | localhost  |
| root |                                           | 127.0.0.1  |
| root | *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 | 172.16.%.% |
+------+-------------------------------------------+------------+
3 rows in set (0.01 sec)
mysql> flush privileges;  #重讀受權表,及時生效
Query OK, 0 rows affected (0.00 sec)
mysql> \q

   到此爲止每一個服務器獨立提供的服務已經安裝搭建完成,如今須要讓他們協同一塊兒工做,用戶的體驗就好像是工做在一臺機器上面

1)解決Apache與FastCGI的協同工做

   a)Apache服務器的操做

[root@jie1 ~]# vim /usr/local/apache/conf/httpd.conf
###########vim /usr/local/apache/conf/httpd.conf ###########
#DocumentRoot "/usr/local/apache/htdocs"  #註釋這行
LoadModule proxy_module modules/mod_proxy.so  #開啓代理的模塊
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so#開啓鏈接fastcgi的模塊
Include conf/extra/httpd-vhosts.conf #開啓讓主配置文件載入虛擬主機的配置文件
############################################################
[root@jie1 ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
#####vim  /usr/local/apache/conf/extra/httpd-vhosts.conf############
#開啓一個虛擬主機便可
<VirtualHost *:80>
    DocumentRoot "/web/htdocs/"  #Apache服務器存放網頁的目錄
    ServerName www.jie.com
   <Directory "/web/htdocs">
       AllowOverride None
       Options None
     Require all granted
   </Directory>
    ProxyRequests Off  #關閉代理請求
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.22.2:9000/website/$1
   #把接收客戶端來着php的請求,轉到FastCGI服務器上面去執行,website是指
#FastCGI服務存放php網頁的目錄
</VirtualHost>
#####################################################################
[root@jie1 ~]# mkdir -pv /web/htdocs
mkdir: created directory `/web'
mkdir: created directory `/web/htdocs'
[root@jie1 ~]# vim /web/htdocs/test.php
####vim /web/htdocs/test.php####
#測試php網頁的頁面
<?php
    phpinfo();
?>
#####################################
[root@jie1 htdocs]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[root@jie1 htdocs]#

 b)FastCGI服務器的操做

[root@jie2 ~]# mkdir /website  #創建存放網頁的目錄
[root@jie2 website]# scp 172.16.22.1:/web/htdocs/test.php  ./  #把Apache服務器上面的網頁文件copy到FastCGI服務器上面,且存放在website目錄下
[root@jie2 website]# service php-fpm restart  #重啓FastCGI服務器
Gracefully shutting down php-fpm . done
Starting php-fpm  done


   c)測試結果


二、解決PHP-FPM(FastCGI)怎麼鏈接Memcached

由於咱們以前已經在FastCGI安裝了鏈接memcached的軟件包memcache且把memcache.so模塊裝載到php的配置文件中了,這樣就實現了PH-FPM(FastCGI)鏈接Memcached。

a)在Apache服務器上網頁存放路徑下新建mem.php的測試頁面

   [root@jie1 htdocs]# cat /web/htdocs/mem.php

   <?php

   $mem = new Memcache;

   $mem->connect("172.16.22.3", 11211);

   $mem->set('key','test info');

   print_r($mem->get('key'));

   print_r($mem->getstats());

   ?>

b)在FastCGI服務器上面copy mem.php的測試頁面

[root@jie2 website]# scp 172.16.22.1:/web/htdocs/mem.php  ./

c)測試結果


在生產環境中是否要用memcached服務器緩存數據,取決於客戶請求的php程序,當用戶請求的php程序中,開發人員將此程序開發須要請求memcached服務器則會用到memcached服務器來緩存客戶的數據。在此僅供測試FastCGI服務器是否能鏈接memcached服務器。


三、解決PHP-FPM(FastCGI)怎麼鏈接Mysql

PHP-FPM鏈接mysql,在編譯的時候能夠加這三個參數,而後PHP-FPM服務器上也能夠不用安裝mysql也能夠鏈接mysqld服務器。

--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

a)在Apache服務器上網頁存放路徑下新建testdb.php的測試頁面

       [root@jie1 htdocs]# cat testdb.php

       <?php

       $link=mysql_connect('172.16.22.4','root','mypass');

       if($link) echo "mysql test success!!";

       else echo "mysql test failed!!!";

       mysql_close();

       ?>

b)在FastCGI服務器上面copy testdb.php的測試頁面

    [root@jie2 website]# scp 172.16.22.1:/web/htdocs/testdb.php  ./

c)測試結果

    自此,已經解決WEB怎麼鏈接PHP-FPM(FastCGI),解決PHP-FPM(FastCGI)怎麼鏈接Memcached,解決PHP-FPM(FastCGI)怎麼鏈接Mysql,LAMMP分別搭建在不一樣的服務器上且能夠協同工做已經完成。

3、LAMMP適用的生產環境

    因爲memcached只是把數據緩存到內存中,當memcached服務器宕機以後,memcached保存的數據就丟失了,因此在電商站點對session的數據要求嚴格是memcached服務器不能適用於今生成環境,若是不是電商站點,只是想加快客戶訪問本身的網站的速度,那memcached所能提供的速度仍是很大的,由於數據時直接緩存在內存中了,那速度就能夠而知,「盡情期待能保存電商站點的session回話中的數據之Redis架構的搭建」。

相關文章
相關標籤/搜索