本次试验主要作用:
1、利用Nginx实现LNMP动静分离;
2、利用Memcache对php查询做缓存;
大致规划:
主机 | IP | 描述 |
nginx | 192.168.0.111 | Nginx作为代理服务器实现动静分离 |
php | 192.168.0.112 | 处理动态请求 |
httpd | 192.168.0.113 | 处理静态请求 |
mariadb | 192.168.0.114 | 数据库存储 |
memcache | 192.168.0.115 | 对php查询做缓存 |
一、安装配置Nginx
下载安装包:http://nginx.org/ 目前稳定版本是1.4最新
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
[root@node1 ~]
# ls
anaconda
-
ks.cfg install.log install.log.syslog nginx
-
1.4
.
7
nginx
-
1.4
.
7.tar
.gz
[root@node1 ~]
# cd nginx-1.4.7
[root@node1 nginx
-
1.4
.
7
]
# ls
CHANGES CHANGES.ru LICENSE Makefile README auto conf configure contrib html man objs src
[root@node1 nginx
-
1.4
.
7
]
# ./configure \
>
-
-
prefix
=
/
usr \
>
-
-
sbin
-
path
=
/
usr
/
sbin
/
nginx \
>
-
-
conf
-
path
=
/
etc
/
nginx
/
nginx.conf \
>
-
-
error
-
log
-
path
=
/
var
/
log
/
nginx
/
error.log \
>
-
-
http
-
log
-
path
=
/
var
/
log
/
nginx
/
access.log \
>
-
-
pid
-
path
=
/
var
/
run
/
nginx
/
nginx.pid \
>
-
-
lock
-
path
=
/
var
/
lock
/
nginx.lock \
>
-
-
user
=
nginx \
#注意这里用的nginx用户,等下就需要创建对应用户
>
-
-
group
=
nginx \
>
-
-
with
-
http_ssl_module \
>
-
-
with
-
http_flv_module \
>
-
-
with
-
http_stub_status_module \
>
-
-
with
-
http_gzip_static_module \
>
-
-
http
-
client
-
body
-
temp
-
path
=
/
var
/
tmp
/
nginx
/
client
/
\
>
-
-
http
-
proxy
-
temp
-
path
=
/
var
/
tmp
/
nginx
/
proxy
/
\
>
-
-
http
-
fastcgi
-
temp
-
path
=
/
var
/
tmp
/
nginx
/
fcgi
/
\
>
-
-
http
-
uwsgi
-
temp
-
path
=
/
var
/
tmp
/
nginx
/
uwsgi \
>
-
-
http
-
scgi
-
temp
-
path
=
/
var
/
tmp
/
nginx
/
scgi \
>
-
-
with
-
pcre
[root@node1 nginx
-
1.4
.
7
]
# make && make install
#这些编译安装过程如果有报错提示依赖其他安装包只需按照提示安装即可
#提供一个启动脚本
[root@node1 nginx
-
1.4
.
7
]
# vim /etc/rc.d/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
.
/
etc
/
rc.d
/
init.d
/
functions
# Source networking configuration.
.
/
etc
/
sysconfig
/
network
# Check that networking is up.
[
"$NETWORKING"
=
"no"
] && exit
0
nginx
=
"/usr/sbin/nginx"
prog
=
$(basename $nginx)
NGINX_CONF_FILE
=
"/etc/nginx/nginx.conf"
[
-
f
/
etc
/
sysconfig
/
nginx ] && .
/
etc
/
sysconfig
/
nginx
lockfile
=
/
var
/
lock
/
subsys
/
nginx
make_dirs() {
# make required directories
user
=
`nginx
-
V
2
>&
1
| grep
"configure arguments:"
| sed
's/[^*]*--user=\([^ ]*\).*/\1/g'
-
`
options
=
`$nginx
-
V
2
>&
1
| grep
'configure arguments:'
`
for
opt
in
$options; do
if
[ `echo $opt | grep
'.*-temp-path'
` ]; then
value
=
`echo $opt | cut
-
d
"="
-
f
2
`
if
[ !
-
d
"$value"
]; then
# echo "creating" $value
mkdir
-
p $value && chown
-
R $user $value
fi
fi
done
}
start() {
[
-
x $nginx ] || exit
5
[
-
f $NGINX_CONF_FILE ] || exit
6
make_dirs
echo
-
n $
"Starting $prog: "
daemon $nginx
-
c $NGINX_CONF_FILE
retval
=
$?
echo
[ $retval
-
eq
0
] && touch $lockfile
return
$retval
}
stop() {
echo
-
n $
"Stopping $prog: "
killproc $prog
-
QUIT
retval
=
$?
echo
[ $retval
-
eq
0
] && rm
-
f $lockfile
return
$retval
}
restart() {
configtest ||
return
$?
stop
sleep
1
start
}
reload
() {
configtest ||
return
$?
echo
-
n $
"Reloading $prog: "
killproc $nginx
-
HUP
RETVAL
=
$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx
-
t
-
c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >
/
dev
/
null
2
>&
1
}
case
"$1"
in
start)
rh_status_q && exit
0
$
1
;;
stop)
rh_status_q || exit
0
$
1
;;
restart|configtest)
$
1
;;
reload
)
rh_status_q || exit
7
$
1
;;
force
-
reload
)
force_reload
;;
status)
rh_status
;;
condrestart|
try
-
restart)
rh_status_q || exit
0
;;
*
)
echo $
"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit
2
esac
#给个执行权限即可启动测试
[root@node1 nginx
-
1.4
.
7
]
# service nginx start
Starting nginx: [ OK ]
[root@node1 nginx
-
1.4
.
7
]
# ss -tunl | grep 80
tcp LISTEN
0
128
*
:
80
*
:
*
|
在node2上安装php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#安装php
[root@node2 ~]
# tar xf php-5.4.26.tar.bz2
[root@node2 ~]
# cd php-5.4.26
[root@node2 php
-
5.4
.
26
]
# ls
acinclude.m4 install
-
sh README.EXTENSIONS run
-
tests.php
aclocal.m4 LICENSE README.EXT_SKEL sapi
build ltmain.sh README.GIT
-
RULES scripts
#php的安装在之前的LAMP中已有介绍;这里就不详细说明
#注意:这里的php监听的地址要改为自己的ip地址;不能使用本地地址
[root@node2 ~]
# service fpmd start
Starting php
-
fpm done
[root@node2 ~]
# ss -tunl | grep 9000
tcp LISTEN
0
128
192.168
.
0.112
:
9000
*
:
*
|
详情参考:http://chenpipi.blog.51cto.com/8563610/1381835
二、配置Nginx整合到php
Nginx的模块和变量相当多;这里无法一一介绍清楚;直接给出官方连接;
详细可以查阅:http://nginx.org/en/docs/ http://wiki.nginx.org/Modules
配置Nginx:
node1配置:
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
|
[root@node1 html]
# vim /etc/nginx/nginx.conf
#user nobody;
worker_processes
4
; worker进程数
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections
1024
; 每个进程处理请求数
}
http {
include mime.types;
default_type application
/
octet
-
stream;
#proxy_cache_path /cache/nginx levels=1:2 keys_zone=web:10m inactive=12h max_size=1g;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
|