天天看點

LNMMP架構搭建wp個人部落格實作動靜态内容分離

思路:

   搭建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>&amp;&amp; </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>] &amp;&amp; </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 ] &amp;&amp; </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 ] &amp;&amp; </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>&gt; </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,如需轉載請自行聯系原作者

繼續閱讀