思路:
搭建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
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;
|
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
|
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
本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1403422,如需转载请自行联系原作者