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 ./
在生產環境中是否要用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架構的搭建」。