LNMMP:Memcache+LNMP

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

本次试验主要作用:

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"
- / etc / sysconfig / nginx ] && .  / etc / sysconfig / nginx
lockfile = / var / lock / subsys / nginx
make_dirs() {
    # make required directories
    user = `nginx  - 2 >& 1  | grep  "configure arguments:"  | sed  's/[^*]*--user=\([^ ]*\).*/\1/g'  - `
    options = `$nginx  - 2 >& 1  | grep  'configure arguments:' `
    for  opt  in  $options; do
        if  [ `echo $opt | grep  '.*-temp-path' ` ]; then
            value = `echo $opt | cut  - "="  - 2 `
            if  [ !  - "$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  - - 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;