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服務器的配置安裝:
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
##一、解壓下載的軟件包######
[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)服務器的配置安裝:
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
###一、解壓下載的源碼包
[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服務器的配置安裝
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
###一、解壓下載的軟件
[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服務器的配置安裝:
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
###一、解壓下載的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服務器的操做
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)測試結果
二、解決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架構的搭建」。