LAMMP架構的企業級應用
LAMMP架構的企業級應用
=========================================
LAMMP是什麼
LAMMP的實現
LAMMP適用的生產環境
==========================================
一、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的縮寫,是一種物件導向的程式語言。
LAMMP的架構拓撲圖:
此LAMMP架構是分別搭建在不同的伺服器上面,在生產環境中,更是應該如此,一臺伺服器提供多種應用,伺服器會很消耗資源,提供服務的效能也會降低。
此架構中各伺服器的工作
Apache在此架構中,響應回覆使用者html的請求
FastCGI是把php程式執行的結果響應給Apache
Memcached是根據使用者請求的動態網頁檔案中是否需要Memcached伺服器快取資料,Memcached是把資料儲存在記憶體中的,速度可想而知了。
Mysql是響應使用者是否需寫入查詢資料
使用者的請求資源到獲取資源的過程
1、當使用者只需要請求web伺服器的html頁面時,Apache直接響應請求,所經過的過程為1—>8
2、當使用者需請求一個web伺服器的動態的頁面時,Apache把使用者請求的php執行程式傳送給FastCGI伺服器執行,FastCGI把執行的結果返回給Apache伺服器,伺服器把程式生成的的靜態頁面響應給客戶端。所經過的過程1—>2—>7—>8
3、當使用者需要請求的web伺服器資源中需要資料時,Apache把使用者請求的php執行 程式給FastCGI執行,執行過程中需要對資料進行操作時且Memcached中沒有快取時,FastCGI去請求Mysql服務器的資源,mysql伺服器把資料響應給FastCGI,如果此資料需要快取則FastCGI把資料快取到Memcached伺服器上,然後把資料響應給Apache,Apache生成靜態的頁面響應給客戶端。所經過的過程1—>2—>5—>6[—>3]—>7—>8(如果需要快取則會經過3過程)
4、當使用者需要請求的web伺服器資源中需要資料時,Apache把使用者請求的php執行程式給 FastCGI執行,執行過程中需要對資料進行操作時Memcached中有快取時,Memcached直接把 資料響應給FastCGI,然後把資料響應給Apache,Apache生成靜態的頁面響應給客戶端。所經過的過程1—>2—>3—>4—>7—>8
二、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的通用二進位制程式包,此軟體包解壓之後就可以使用
思路:
1、每個伺服器的安裝操作都是獨立,但是最後需要建立關係
2、解決WEB怎麼連線PHP-FPM(FastCGI)
3、解決PHP-FPM(FastCGI)怎麼連線Memcached
4、解決PHP-FPM(FastCGI)怎麼連線Mysql
Apache伺服器的配置安裝:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
[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
##1、解壓下載的軟體包###### [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
###2、安裝開發庫,和依賴性包###### [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 ####3、編譯安裝apr軟體####### [root@jie1 ~] # cd apr-1.4.6
[root@jie1 apr-1.4.6] # ./configure --prefix=/usr/local/apr && make && make install
###4、編譯安裝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
####5、編譯安裝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
###6、需要改動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 ] ###7、使系統能識別原始碼包安裝的軟體############ [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)伺服器的配置安裝:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
[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
###1、解壓下載的原始碼包 [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
###2、安裝開發包和安裝依賴性包,由於我的編譯引數只指定了這些,所以只需這些依賴性包,如果指定的引數不一樣,則需要的依賴性包也不盡相同 [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
###3、建立php的配置檔案,此配置檔案在php的解壓包中 [root@jie2 php-5.4.19] # cp php.ini-production /etc/php.ini
[root@jie2 php] #cd /usr/local/php/
###4、使系統能夠識別原始碼包安裝的軟體 [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
###5、建立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
###6、建立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
###7、把服務指令碼加執行許可權,開啟服務,把服務加到開機自啟動列表中 [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
###8、安裝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/
#編譯安裝完成後最後為提示這樣一句 ###=================================================================#### ###9、在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
###10、安裝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/
#編譯安裝完成後最後為會提示這樣一句 ###=================================================================#### ###11、建立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伺服器的配置安裝
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
[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
###1、解壓下載的軟體 [root@jie3 ~] # tar xf libevent-2.0.21-stable.tar.gz
[root@jie3 ~] # tar xf memcached-1.4.15.tar.gz
###2、編譯安裝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/
###3、使系統識別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/`
###4、編譯安裝memcached軟體包 [root@jie3 ~] #cd memcached-1.4.15
[root@jie3 ~] #./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ && make && make install
###5、建立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
#################################################################### ###6、把服務指令碼給予執行許可權,然後把服務加到開機啟動列表中 [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伺服器的配置安裝:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
[root@jie4 ~] # ls
anaconda-ks.cfg install .log.syslog
install .log mysql-5.5.33-linux2.6-x86_64. tar .gz
###1、解壓下載的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
###2、建立存放資料庫的檔案,生產環境資料庫存放在獨立的建LVM的硬碟上面 [root@jie4 local ] # mkdir -pv /mysql/data
mkdir : created directory ` /mysql `
mkdir : created directory ` /mysql/data `
###3、建立使用者,和設定檔案的屬主和許可權 [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/
###4、建立mysql的配置檔案 [root@jie4 support-files] # cp my-large.cnf /etc/my.cnf
cp : overwrite ` /etc/my .cnf`? y
###5、建立mysql的systemV服務指令碼 [root@jie4 support-files] # cp mysql.server /etc/rc.d/init.d/mysqld
[root@jie4 ~] # vim /etc/my.cnf
###6、修改mysql的配置檔案,修改或新增這兩行 #############vim /etc/my.cnf############### thread_concurrency = 4 datadir = /mysql/data
########################################### ###7、初始化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
###8、開啟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/
###9、使系統能識別原始碼包安裝的軟體############ ####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
####10、建立登入資料庫的使用者的密碼 [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伺服器的操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
[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伺服器的操作
1
2
3
4
5
|
[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)測試結果
2、解決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伺服器。
3、解決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分別搭建在不同的伺服器上且可以協同工作已經完成。
三、LAMMP適用的生產環境
由於memcached只是把資料快取到記憶體中,當memcached伺服器當機之後,memcached儲存的資料就丟失了,所以在電商站點對session的資料要求嚴格是memcached伺服器不能適用於此生成環境,如果不是電商站點,只是想加快客戶訪問自己的網站的速度,那memcached所能提供的速度還是很大的,因為資料時直接快取在記憶體中了,那速度就可以而知,“盡情期待能儲存電商站點的session回話中的資料之Redis架構的搭建”。
相關文章
- MicrosoftNet企業級應用架構設計(中)ROS應用架構
- 使用 Angular 打造微前端架構的 ToB 企業級應用Angular前端架構
- 企業應用平臺架構架構
- .NET應用架構設計—重新認識分層架構(現代企業級應用分層架構核心設計要素)應用架構
- SOA重塑證券企業應用架構應用架構
- 總結 - 設計模式,企業應用架構模式,架構模式設計模式應用架構
- 企業應用架構研究系列三:應用系統整合應用架構
- [轉]企業應用開發架構談(一)架構
- 企業應用開發架構談(一) (轉)架構
- 企業應用開發架構談(二) (轉)架構
- 企業應用開發架構談(三) (轉)架構
- 打造企業級微服務平臺架構,分散式應用場景管理微服務架構分散式
- 使用Memcached改進Java企業級應用效能(1):架構和設定Java架構
- 企業應用架構的基本模式之分離介面應用架構模式
- 企業應用架構的基本模式之入口模式應用架構模式
- 快速構建企業級應用的開發平臺
- 企業內應用區域網傳輸架構架構
- TOGAF企業架構與軟體架構的對應圖架構
- .NET企業級系統架構設計架構
- H5-APP在企業系統中的架構應用H5APP架構
- 企業架構 - 企業架構成熟度模型(EAMM)架構模型
- Oracle開發:構建強大企業級應用的關鍵Oracle
- 軟體中國_企業級應用
- 第五天-《企業應用架構模式》-併發應用架構模式
- 企業應用架構研究系列十九:Docker開發環境應用架構Docker開發環境
- 撼動企業應用架構的十大技術趨勢應用架構
- SOA實踐應先從企業級IT架構設計上著手架構
- SOA架構實踐首先從企業級IT架構設計著手架構
- 企業級大資料架構設計【2】大資料架構
- 企業級大資料中臺架構實戰大資料架構
- 企業級BPM之微服務架構演進微服務架構
- iOS應用千萬級架構開篇iOS架構
- iOS應用千萬級架構:MVVM框架iOS架構MVVM框架
- 傳統應用系統架構向微服務應用架構升級的實戰案例微服務應用架構
- 採用 TOGAF標準的企業架構和企業敏捷性架構敏捷
- 企業應用架構演化探討:從微服務到Service Mesh應用架構微服務
- 第七天-《企業應用架構模式》-分佈策略應用架構模式
- 企業應用架構研究系列二:MSF&Scrum 專案管理應用架構Scrum專案管理