LNMMP架构搭建wp个人博客实现动静态内容分离

  1. 云栖社区>
  2. 博客>
  3. 正文

LNMMP架构搭建wp个人博客实现动静态内容分离

技术小胖子 2017-11-09 20:23:00 浏览1035
展开阅读全文

思路:
   搭建wordpress个人博客,nginx做动静态文件分离,nginx处理静态内容(本地)

   动态内容由上游服务器php-fpm来完成


规划:

   nginx     反代后端 php-fpm            172.16.43.1
   php-fpm,php-extentsion(memcache),php-extentsion(xcache) 172.16.43.2
   mariadb 10       172.16.43.3


实现过程:

1. nginx安装及使用(172.16.43.1)

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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#nginx的安装需要环境: gcc-c++,pcre,zlib,nginx
.
# i) 安装gcc编译器
yum -y install gcc-c++
.
# ii) 安装pcre
tar xf pcre-8.33.tar.gz
cd pcre-8.33
./configure --prefix=/usr/local/pcre
make && make install
.
# iii) 安装zlib
tar xf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib
make && make install
.
# iv) 安裝nginx
tar xf nginx-1.5.7.tar.gz
cd nginx-1.5.7
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=/root/pcre-8.30 --with-zlib=/root/zlib-1.2.8
make && make install
.
# v) 为nginx添加启动脚本
# vim /etc/rc.d/init.d/nginx
#!/bin/bash
# nginx Startup script
# chkconfig: - 85 15
# description: nginx Startup script
# processname: nginx
#pidfile: /var/local/nginx/nginx.pid
#config: /usr/local/nginx/nginx.conf
nginxd=/usr/local/nginx/nginx
nginx_config=/etc/nginx/nginx.conf
nginx_pid=/var/local/nginx/nginx.pid
RETVAL=0
prog="nginx"
.
/etc/rc.d/init.d/functions
/etc/sysconfig/network
.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
.
start() {
if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi
   echo -n $"Starting $prog: "
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
   return $RETVAL
}
.
stop() {
    echo -n $"Stopping $prog: "
    killproc $nginxd
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
.
reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
}
.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    reload)
        reload
        ;;
    restart)
        stop
        start
        ;;
    status)
        status $prog
        RETVAL=$?
        ;;
    *)
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"
        exit 1
esac
exit $RETVAL
.
# vi) 为nginx做配置处理
chmod a+x /etc/rc.d/init.d/nginx
chkconfig nginx on
useradd -r -s /sbin/nologin nginx -U
.
# vii) 配置规划中的内容
vim /etc/nginx/nginx.conf
############## 配置文件开始 ################
user nginx;
#启动进程,一般和CPU数量一致
worker_processes 2;
#[ debug | info | notice | warn | error | crit ] 错误日志的级别及位置
error_log /var/log/nginx/error.log debug;
#一个nginx进程打开的最多文件描述符数目,最好与ulimit -n的值保持一致
worker_rlimit_nofile 51200;
events {
    #工作进程的最大连接数量,根据硬件调整
    worker_connections 4096;
    #[ kqueue | rtsig | epoll | /dev/poll | select | poll ] 使用epoll(linux2.6的高性能方式)
    use epoll;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    # 内核直接返回请求,提升性能
    sendfile        on;
    # 保持长连接时间
    keepalive_timeout  5;
    # 开启gzip服务器压缩功能
    gzip  on;
    server {
        listen 80;
        resolver www.king.com;
        add_header testserver $server_addr;
        location / {
            root   /var/www/html;
            index  index.html index.htm;
        }
        location ~* \.(jpg|png|gif|jpeg|js|css)$ {
            root /var/www/html;
        }
        location ~ \.php$ {
            # 这里就是关键,root 这里必须与上游服务器文件路径对应
            root /var/www/html;
            fastcgi_pass   172.16.43.2:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}
.
# vi) 替换fastcgi参数
# vim /etc/nginx/fastcgi_params
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

wKioL1NbaOaxR89aAARTsw6IS_g328.jpg

2. php-fpm 安装(172.16.43.2)

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
# i) 解决php安装依赖
yum -y groupinstall "Desktop Platform Development"
yum -y install libmcrypt-devel
yum -y install bzip2-devel
.
# ii) 安装php with fpm
tar xf php-5.4.19.tar.bz2
cd php-5.4.19
./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
make && make install
.
# iii) 为php提供配置文件:
cp php.ini-production /etc/php.ini
.
# iv) 配置php-fpm
#为php-fpm提供SysV init脚本,并将其添加至服务列表:sapi在源码包下
cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm
chmod +x /etc/rc.d/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
为php-fpm提供配置文件:
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
编辑php-fpm的配置文件:vim /usr/local/php/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pid = /usr/local/php/var/run/php-fpm.pid
listen = 172.16.43.2:9000

3. php拓展xache安装(172.16.43.2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# i) 安装xcache
tar xf xcache-3.1.0.tar.bz2
cd xcache-3.1.0
/usr/local/php/bin/phpize
./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/
.
# ii) 编辑php.ini,整合php和xcache:
# 首先将xcache提供的样例配置导入php.ini
mkdir /etc/php.d
# xcache.ini文件在xcache的源码目录中。
cp xcache.ini /etc/php.d
# 接下来编辑/etc/php.d/xcache.ini 修改为如下:
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so

4. php拓展memcache安装(172.16.43.2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# i) 安装memcache
tar xf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --enable-memcache --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/memcache.so
.
# ii) 编辑/etc/php.ini,在“dynamically loaded extension”相关的位置添加如下一行来载入memcache扩展:
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
.
# iii) 重启php-fpm服务
service php-fpm restart

wKiom1Nbac3D_lXnAATQIGowUJA112.jpg

wKioL1NbaaSyNdlxAAUDfUN3sX0149.jpg

5. MariaDB安装与配置(172.16.43.3)

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
# i) 创建mysql的数据目录
mkdir /data
groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin -M -d /data mysql
chown -R mysql:mysql /data
.
# ii) 安装二进制mysql
tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -sv mysql-5.5.33-linux2.6-x86_64 mysql
cd mysql
chown -R mysql:mysql  .
mysql/scripts/mysql_install_db --user=mysql --datadir=/data
chown -R root  .
# 提供mysql的配置文件
cp support-files/my-large.cnf  /etc/my.cnf
# 需要添加如下行指定mysql数据文件的存放位置:
datadir = /data
.
# iii) 为mysql提供sysv服务脚本:
cd /usr/local/mysql
cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
添加至服务列表:
chkconfig --add mysqld
chkconfig mysqld on
echo "export PATH=/usr/local/mysql/bin:$PATH" /etc/profile.d/mysql.sh
/etc/profile.d/mysql.sh
.
# iv) 启动服务并授权php服务器账号访问
service mysqld restart
mysql
grant all on *.* to 'wordpress'@'172.16.%.%' identified by '123456';
flush privileges;

6. 配置测试wordpress
   将wordpress的源代码分别拷贝到172.16.43.1与172.16.43.2对应目录
   (为什么是双份这里我们就可以理解了 :)
   unzip wordpress-3.3.1-zh_CN.zip

wKiom1NbbcDBreDMAAj1eNVSfl8660.jpg

wKioL1NbamWhZqXmAALsQ9l6eXk111.jpg






     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1403422,如需转载请自行联系原作者



网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注