思路:
搭建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
實作過程:
<a href="http://s3.51cto.com/wyfs02/M00/25/3D/wKioL1NbaOaxR89aAARTsw6IS_g328.jpg" target="_blank"></a>
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
<code>#nginx的安裝需要環境: gcc-c++,pcre,zlib,nginx</code>
<code>.</code>
<code># i) 安裝gcc編譯器</code>
<code>yum -y </code><code>install</code> <code>gcc-c++</code>
<code># ii) 安裝pcre</code>
<code>tar</code> <code>xf pcre-8.33.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>pcre-8.33</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/pcre</code>
<code>make</code> <code>&& </code><code>make</code> <code>install</code>
<code># iii) 安裝zlib</code>
<code>tar</code> <code>xf zlib-1.2.8.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>zlib-1.2.8</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/zlib</code>
<code># iv) 安裝nginx</code>
<code>tar</code> <code>xf nginx-1.5.7.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>nginx-1.5.7</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/nginx</code> <code>--sbin-path=</code><code>/usr/local/nginx/nginx</code> <code>--conf-path=</code><code>/etc/nginx/nginx</code><code>.conf --pid-path=</code><code>/usr/local/nginx/nginx</code><code>.pid --with-pcre=</code><code>/root/pcre-8</code><code>.30 --with-zlib=</code><code>/root/zlib-1</code><code>.2.8</code>
<code># v) 為nginx添加啟動腳本</code>
<code># vim /etc/rc.d/init.d/nginx</code>
<code>#!/bin/bash</code>
<code># nginx Startup script</code>
<code># chkconfig: - 85 15</code>
<code># description: nginx Startup script</code>
<code># processname: nginx</code>
<code>#pidfile: /var/local/nginx/nginx.pid</code>
<code>#config: /usr/local/nginx/nginx.conf</code>
<code>nginxd=</code><code>/usr/local/nginx/nginx</code>
<code>nginx_config=</code><code>/etc/nginx/nginx</code><code>.conf</code>
<code>nginx_pid=</code><code>/var/local/nginx/nginx</code><code>.pid</code>
<code>RETVAL=0</code>
<code>prog=</code><code>"nginx"</code>
<code>. </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>
<code>. </code><code>/etc/sysconfig/network</code>
<code>[ ${NETWORKING} = </code><code>"no"</code> <code>] && </code><code>exit</code> <code>0</code>
<code>[ -x $nginxd ] || </code><code>exit</code> <code>0</code>
<code>start() {</code>
<code>if</code> <code>[ -e $nginx_pid ];</code><code>then</code>
<code> </code><code>echo</code> <code>"nginx already running...."</code>
<code> </code><code>exit</code> <code>1</code>
<code>fi</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Starting $prog: "</code>
<code> </code><code>daemon $nginxd -c ${nginx_config}</code>
<code> </code><code>RETVAL=$?</code>
<code> </code><code>echo</code>
<code> </code><code>[ $RETVAL = 0 ] && </code><code>touch</code> <code>/var/lock/subsys/nginx</code>
<code> </code><code>return</code> <code>$RETVAL</code>
<code>}</code>
<code>stop() {</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Stopping $prog: "</code>
<code> </code><code>killproc $nginxd</code>
<code> </code><code>RETVAL=$?</code>
<code> </code><code>echo</code>
<code> </code><code>[ $RETVAL = 0 ] && </code><code>rm</code> <code>-f </code><code>/var/lock/subsys/nginx</code> <code>/var/run/nginx</code><code>.pid</code>
<code>reload() {</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Reloading $prog: "</code>
<code> </code><code>#kill -HUP `cat ${nginx_pid}`</code>
<code> </code><code>killproc $nginxd -HUP</code>
<code>case</code> <code>"$1"</code> <code>in</code>
<code> </code><code>start)</code>
<code> </code><code>start</code>
<code> </code><code>;;</code>
<code> </code><code>stop)</code>
<code> </code><code>stop</code>
<code> </code><code>reload)</code>
<code> </code><code>reload</code>
<code> </code><code>restart)</code>
<code> </code><code>status)</code>
<code> </code><code>status $prog</code>
<code> </code><code>RETVAL=$?</code>
<code> </code><code>*)</code>
<code> </code><code>echo</code> <code>$</code><code>"Usage: $prog {start|stop|restart|reload|status|help}"</code>
<code> </code><code>exit</code> <code>1</code>
<code>esac</code>
<code>exit</code> <code>$RETVAL</code>
<code># vi) 為nginx做配置處理</code>
<code>chmod</code> <code>a+x </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/nginx</code>
<code>chkconfig nginx on</code>
<code>useradd</code> <code>-r -s </code><code>/sbin/nologin</code> <code>nginx -U</code>
<code># vii) 配置規劃中的内容</code>
<code>vim </code><code>/etc/nginx/nginx</code><code>.conf</code>
<code>############## 配置檔案開始 ################</code>
<code>user nginx;</code>
<code>#啟動程序,一般和CPU數量一緻</code>
<code>worker_processes 2;</code>
<code>#[ debug | info | notice | warn | error | crit ] 錯誤日志的級别及位置</code>
<code>error_log </code><code>/var/log/nginx/error</code><code>.log debug;</code>
<code>#一個nginx程序打開的最多檔案描述符數目,最好與ulimit -n的值保持一緻</code>
<code>worker_rlimit_nofile 51200;</code>
<code>events {</code>
<code> </code><code>#工作程序的最大連接配接數量,根據硬體調整</code>
<code> </code><code>worker_connections 4096;</code>
<code> </code><code>#[ kqueue | rtsig | epoll | /dev/poll | select | poll ] 使用epoll(linux2.6的高性能方式)</code>
<code> </code><code>use epoll;</code>
<code>http {</code>
<code> </code><code>include mime.types;</code>
<code> </code><code>default_type application</code><code>/octet-stream</code><code>;</code>
<code> </code><code># 核心直接傳回請求,提升性能</code>
<code> </code><code>sendfile on;</code>
<code> </code><code># 保持長連接配接時間</code>
<code> </code><code>keepalive_timeout 5;</code>
<code> </code><code># 開啟gzip伺服器壓縮功能</code>
<code> </code><code>gzip</code> <code>on;</code>
<code> </code><code>server {</code>
<code> </code><code>listen 80;</code>
<code> </code><code>resolver www.king.com;</code>
<code> </code><code>add_header testserver $server_addr;</code>
<code> </code><code>location / {</code>
<code> </code><code>root </code><code>/var/www/html</code><code>;</code>
<code> </code><code>index index.html index.htm;</code>
<code> </code><code>}</code>
<code> </code><code>location ~* \.(jpg|png|gif|jpeg|js|css)$ {</code>
<code> </code><code>root </code><code>/var/www/html</code><code>;</code>
<code> </code><code>location ~ \.php$ {</code>
<code> </code><code># 這裡就是關鍵,root 這裡必須與上遊伺服器檔案路徑對應</code>
<code> </code><code>fastcgi_pass 172.16.43.2:9000;</code>
<code> </code><code>fastcgi_index index.php;</code>
<code> </code><code>fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;</code>
<code> </code><code>include fastcgi_params;</code>
<code> </code><code>}</code>
<code># vi) 替換fastcgi參數</code>
<code># vim /etc/nginx/fastcgi_params</code>
<code>fastcgi_param GATEWAY_INTERFACE CGI</code><code>/1</code><code>.1;</code>
<code>fastcgi_param SERVER_SOFTWARE nginx;</code>
<code>fastcgi_param QUERY_STRING $query_string;</code>
<code>fastcgi_param REQUEST_METHOD $request_method;</code>
<code>fastcgi_param CONTENT_TYPE $content_type;</code>
<code>fastcgi_param CONTENT_LENGTH $content_length;</code>
<code>fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</code>
<code>fastcgi_param SCRIPT_NAME $fastcgi_script_name;</code>
<code>fastcgi_param REQUEST_URI $request_uri;</code>
<code>fastcgi_param DOCUMENT_URI $document_uri;</code>
<code>fastcgi_param DOCUMENT_ROOT $document_root;</code>
<code>fastcgi_param SERVER_PROTOCOL $server_protocol;</code>
<code>fastcgi_param REMOTE_ADDR $remote_addr;</code>
<code>fastcgi_param REMOTE_PORT $remote_port;</code>
<code>fastcgi_param SERVER_ADDR $server_addr;</code>
<code>fastcgi_param SERVER_PORT $server_port;</code>
<code>fastcgi_param SERVER_NAME $server_name;</code>
<code># i) 解決php安裝依賴</code>
<code>yum -y groupinstall </code><code>"Desktop Platform Development"</code>
<code>yum -y </code><code>install</code> <code>libmcrypt-devel</code>
<code>yum -y </code><code>install</code> <code>bzip2</code><code>-devel</code>
<code># ii) 安裝php with fpm</code>
<code>tar</code> <code>xf php-5.4.19.</code><code>tar</code><code>.bz2</code>
<code>cd</code> <code>php-5.4.19</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/php</code> <code>--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --</code><code>enable</code><code>-mbstring --with-freetype-</code><code>dir</code> <code>--with-jpeg-</code><code>dir</code> <code>--with-png-</code><code>dir</code> <code>--with-zlib --with-libxml-</code><code>dir</code><code>=</code><code>/usr</code> <code>--</code><code>enable</code><code>-xml --</code><code>enable</code><code>-sockets --</code><code>enable</code><code>-fpm --with-mcrypt --with-config-</code><code>file</code><code>-path=</code><code>/etc</code> <code>--with-config-</code><code>file</code><code>-scan-</code><code>dir</code><code>=</code><code>/etc/php</code><code>.d --with-bz2</code>
<code># iii) 為php提供配置檔案:</code>
<code>cp</code> <code>php.ini-production </code><code>/etc/php</code><code>.ini</code>
<code># iv) 配置php-fpm</code>
<code>#為php-fpm提供SysV init腳本,并将其添加至服務清單:sapi在源碼包下</code>
<code>cp</code> <code>sapi</code><code>/fpm/init</code><code>.d.php-fpm </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/php-fpm</code>
<code>chmod</code> <code>+x </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/php-fpm</code>
<code>chkconfig --add php-fpm</code>
<code>chkconfig php-fpm on</code>
<code>為php-fpm提供配置檔案:</code>
<code>cp</code> <code>/usr/local/php/etc/php-fpm</code><code>.conf.default </code><code>/usr/local/php/etc/php-fpm</code><code>.conf</code>
<code>編輯php-fpm的配置檔案:vim </code><code>/usr/local/php/etc/php-fpm</code><code>.conf</code>
<code>配置fpm的相關選項為你所需要的值,并啟用pid檔案(如下最後一行):</code>
<code>pid = </code><code>/usr/local/php/var/run/php-fpm</code><code>.pid</code>
<code>listen = 172.16.43.2:9000</code>
3. php拓展xache安裝(172.16.43.2)
<code># i) 安裝xcache</code>
<code>tar</code> <code>xf xcache-3.1.0.</code><code>tar</code><code>.bz2</code>
<code>cd</code> <code>xcache-3.1.0</code>
<code>/usr/local/php/bin/phpize</code>
<code>.</code><code>/configure</code> <code>--</code><code>enable</code><code>-xcache --with-php-config=</code><code>/usr/local/php/bin/php-config</code>
<code># 安裝結束時,會出現類似如下行, 将後半句複制</code>
<code>Installing shared extensions: </code><code>/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/</code>
<code># ii) 編輯php.ini,整合php和xcache:</code>
<code># 首先将xcache提供的樣例配置導入php.ini</code>
<code>mkdir</code> <code>/etc/php</code><code>.d</code>
<code># xcache.ini檔案在xcache的源碼目錄中。</code>
<code>cp</code> <code>xcache.ini </code><code>/etc/php</code><code>.d</code>
<code># 接下來編輯/etc/php.d/xcache.ini 修改為如下:</code>
<code>extension = </code><code>/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache</code><code>.so</code>
4. php拓展memcache安裝(172.16.43.2)
<code># i) 安裝memcache</code>
<code>tar</code> <code>xf memcache-2.2.7.tgz</code>
<code>cd</code> <code>memcache-2.2.7</code>
<code>.</code><code>/configure</code> <code>--</code><code>enable</code><code>-memcache --with-php-config=</code><code>/usr/local/php/bin/php-config</code>
<code>Installing shared extensions: </code><code>/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache</code><code>.so</code>
<code># ii) 編輯/etc/php.ini,在“dynamically loaded extension”相關的位置添加如下一行來載入memcache擴充:</code>
<code>extension=</code><code>/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache</code><code>.so</code>
<code># iii) 重新開機php-fpm服務</code>
<code>service php-fpm restart</code>
<a href="http://s3.51cto.com/wyfs02/M00/25/3D/wKiom1Nbac3D_lXnAATQIGowUJA112.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/25/3D/wKioL1NbaaSyNdlxAAUDfUN3sX0149.jpg" target="_blank"></a>
5. MariaDB安裝與配置(172.16.43.3)
<code># i) 建立mysql的資料目錄</code>
<code>mkdir</code> <code>/data</code>
<code>groupadd -r mysql</code>
<code>useradd</code> <code>-g mysql -r -s </code><code>/sbin/nologin</code> <code>-M -d </code><code>/data</code> <code>mysql</code>
<code>chown</code> <code>-R mysql:mysql </code><code>/data</code>
<code># ii) 安裝二進制mysql</code>
<code>tar</code> <code>xf mysql-5.5.33-linux2.6-x86_64.</code><code>tar</code><code>.gz -C </code><code>/usr/local</code>
<code>cd</code> <code>/usr/local</code>
<code>ln</code> <code>-sv mysql-5.5.33-linux2.6-x86_64 mysql</code>
<code>cd</code> <code>mysql</code>
<code>chown</code> <code>-R mysql:mysql .</code>
<code>mysql</code><code>/scripts/mysql_install_db</code> <code>--user=mysql --datadir=</code><code>/data</code>
<code>chown</code> <code>-R root .</code>
<code># 提供mysql的配置檔案</code>
<code>cp</code> <code>support-files</code><code>/my-large</code><code>.cnf </code><code>/etc/my</code><code>.cnf</code>
<code># 需要添加如下行指定mysql資料檔案的存放位置:</code>
<code>datadir = </code><code>/data</code>
<code># iii) 為mysql提供sysv服務腳本:</code>
<code>cd</code> <code>/usr/local/mysql</code>
<code>cp</code> <code>support-files</code><code>/mysql</code><code>.server </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/mysqld</code>
<code>chmod</code> <code>+x </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/mysqld</code>
<code>添加至服務清單:</code>
<code>chkconfig --add mysqld</code>
<code>chkconfig mysqld on</code>
<code>echo</code> <code>"export PATH=/usr/local/mysql/bin:$PATH"</code> <code>> </code><code>/etc/profile</code><code>.d</code><code>/mysql</code><code>.sh</code>
<code>. </code><code>/etc/profile</code><code>.d</code><code>/mysql</code><code>.sh</code>
<code># iv) 啟動服務并授權php伺服器賬号通路</code>
<code>service mysqld restart</code>
<code>mysql</code>
<code>grant all on *.* to </code><code>'wordpress'</code><code>@</code><code>'172.16.%.%'</code> <code>identified by </code><code>'123456'</code><code>;</code>
<code>flush privileges;</code>
6. 配置測試wordpress
将wordpress的源代碼分别拷貝到172.16.43.1與172.16.43.2對應目錄
(為什麼是雙份這裡我們就可以了解了 :)
unzip wordpress-3.3.1-zh_CN.zip
<a href="http://s3.51cto.com/wyfs02/M01/25/3D/wKiom1NbbcDBreDMAAj1eNVSfl8660.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M00/25/3D/wKioL1NbamWhZqXmAALsQ9l6eXk111.jpg" target="_blank"></a>
本文轉自My_King1 51CTO部落格,原文連結:http://blog.51cto.com/apprentice/1403422,如需轉載請自行聯系原作者