天天看點

基于NFS-LAMP架構、共用1個Discuz,MySQL的雙WEB Server

首先我們來闡述下觀點:

<a target="_blank" href="http://blog.51cto.com/attachment/201304/225552272.png"></a>

       如圖:當使用者通路虛拟機2的時候,可以通路到通過NFS挂載到本地的DISCUZ論壇,其中的資料儲存在虛拟機1中,以此來保證論壇内容改變的時候虛拟機2通路的資料跟随改變,即資料的統一性。這一切都要通過NFS服務來實作。

步驟:

1、先在虛拟機1中搭建完整的LAMP服務并安裝DISCUZ論壇。

2、在虛拟機2中搭建LAP服務

3、将DISCUZ論壇目錄通過NFS挂載到虛拟機2中,使虛拟機2可以實作論壇的通路并為論壇添加資料。是以虛拟機2隻需要搭建LAP服務即可。

       PS:其中虛拟機1位址為172.16.111.1,虛拟機2位址為172.16.111.2

<b>前提:</b>

<b>另外需要檢視selinux</b><b>是否開啟。同樣可參照上邊部落格中的方法來實作關閉selinux</b>

[root@localhost ~]# getenforce  

Enforcing   

[root@localhost ~]# setenforce 0   

Permissive   

//當然。這裡也需要到vim /etc/selinux/config将其中的SELINUX=enforcing替換為SELINUX=permissive 

編譯配置主伺服器(虛拟機1)的LAMP:

<b>一、編譯安裝apache</b>

<b> </b>注意:事先把<b>httpd-2.4.3.tar</b><b>,apr-util-1.4.1.tar</b><b>,apr-1.4.6.tar </b>這三個包放到/usr/local/src/目錄中,方法具體不在介紹xshell與window界面拖拽。另外需要注意的是,要将虛拟機裡linux的時間做同步。--hwclock -s

 <b>1</b><b>、</b><b>解決依賴關系</b>

(1) 編譯安裝apr

[root@localhost src]# ls  

apr-1.4.6.tar.bz2 apr-util-1.4.1.tar.bz2 httpd-2.4.3.tar.bz2  

[root@localhost src]# tar xf apr-1.4.6.tar.bz2   

[root@localhost src]# cd apr-1.4.6  

[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/apr // prefix指定路徑  

[root@localhost apr-1.4.6] # make &amp;&amp; make install //這裡稍微簡略了下步驟  

//這個時候,apr已經安裝好了 。然後去安裝apr-util  

 (2) 編譯安裝apr-util

[root@localhost apr-1.4.6]# cd ..  

[root@localhost src]# tar xf apr-util-1.4.1.tar.bz2   

[root@localhost src]# cd apr-util-1.4.1  

[root@localhost apr-util-1.4.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr //-with-apr告訴其apr的路徑  

[root@localhost apr-util-1.4.1]# make  

[root@localhost apr-util-1.4.1]# make install  

(3) httpd-2.4.3編譯過程也要依賴于pcre-devel軟體包,需要事先安裝。此軟體包系統CD光牒自帶,是以,找到并安裝即可。

[root@localhost apr-util-1.4.1]# cd ..  

[root@localhost src]# yum install pcre-devel  

 <b> </b><b>2</b><b>、編譯安裝httpd-2.4.3</b>

 [root@localhost src]# tar xf httpd-2.4.3.tar.bz2   

[root@localhost src]# cd httpd-2.4.3  

[root@localhost httpd-2.4.3]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-mpms-shared=all --with-mpm=event   //mpm=even預設使用event  

[root@localhost httpd-2.4.3]# make  

[root@localhost httpd-2.4.3]# make install  

 3、修改httpd的主配置檔案,設定其Pid檔案的路徑

[root@localhost src]# vim /etc/httpd/httpd.conf  

//添加如下内容  

PidFile "/var/run/httpd.pid"  

 4、提供SysV服務腳本/etc/rc.d/init.d/httpd,内容如下:

[root@localhost src]# cd /etc/rc.d/init.d/  

[root@localhost init.d]# vim httpd  

#!/bin/bash  

#  

# httpd        Startup script for the Apache HTTP Server  

# chkconfig: - 85 15  

# description: Apache is a World Wide Web server. It is used to serve \  

#            HTML files and CGI.  

# processname: httpd  

# config: /etc/httpd/conf/httpd.conf  

# config: /etc/sysconfig/httpd  

# pidfile: /var/run/httpd.pid  

# Source function library.  

. /etc/rc.d/init.d/functions  

if [ -f /etc/sysconfig/httpd ]; then  

        . /etc/sysconfig/httpd  

fi  

# Start httpd in the C locale by default.  

HTTPD_LANG=${HTTPD_LANG-"C"}  

# This will prevent initlog from swallowing up a pass-phrase prompt if  

# mod_ssl needs a pass-phrase from the user.  

INITLOG_ARGS="" 

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server  

# with the thread-based "worker" MPM; BE WARNED that some modules may not  

# work correctly with a thread-based MPM; notably PHP will refuse to start.  

# Path to the apachectl script, server binary, and short-form for messages.  

apachectl=/usr/local/apache/bin/apachectl  

httpd=${HTTPD-/usr/local/apache/bin/httpd}  

prog=httpd 

pidfile=${PIDFILE-/var/run/httpd.pid}  

lockfile=${LOCKFILE-/var/lock/subsys/httpd}  

RETVAL=0 

start() {  

        echo -n $"Starting $prog: "  

        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS  

        RETVAL=$?  

        echo  

        [ $RETVAL = 0 ] &amp;&amp; touch ${lockfile}  

        return $RETVAL  

}  

stop() {  

       echo -n $"Stopping $prog: "  

       killproc -p ${pidfile} -d 10 $httpd  

       RETVAL=$?  

       echo  

       [ $RETVAL = 0 ] &amp;&amp; rm -f ${lockfile} ${pidfile}  

reload() {  

    echo -n $"Reloading $prog: "  

    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t &gt;&amp;/dev/null; then  

        echo $"not reloading due to configuration syntax error"  

        failure $"not reloading $httpd due to configuration syntax error"  

    else  

        killproc -p ${pidfile} $httpd -HUP  

    fi  

    echo  

# See how we were called.  

case "$1" in  

 start)  

       start  

       ;;  

 stop)  

       stop  

 status)  

        status -p ${pidfile} $httpd  

 restart)  

 condrestart)  

       if [ -f ${pidfile} ] ; then  

              stop  

              start  

       fi  

 reload)  

        reload  

 graceful|help|configtest|fullstatus)  

       $apachectl $@  

 *)  

       echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"  

       exit 1  

esac  

exit $RETVAL  

 //而後為此腳本賦予執行權限:  

[root@localhost init.d]# chmod +x httpd  

[root@localhost init.d]# chkconfig --level 35 httpd on //設定運作級别  

[root@localhost init.d]# chkconfig --list httpd  

httpd             0:off       1:off       2:off       3:on 4:off       5:on 6:off  

//下面的步驟可忽略,這裡隻是可以設定為bash可以直接執行  

[root@localhost init.d]# vim /etv/profile.d/httpd.sh   

//添加  

#/bin/bash  

export PATH=$PATH:/usr/local/apache/bin  

[root@localhost init.d]# export PATH=$PATH:/usr/local/apache/bin  

這個時候就可以驗證下httpd服務了。

然後打開浏覽器,輸入172.16.111.1就可以檢視工作網頁了。

    其網頁檔案在/usr/local/apache/htdocs/中的index.html中,可以修改其中的内容對網頁内容進行修改。

<a target="_blank" href="http://blog.51cto.com/attachment/201304/231708947.png"></a>

<b>二、安裝mysql-5.5.28</b>

 前提:這裡使用mysql-5.5.28-linux2.6-tar,提前下載下傳放入linux中

<b><b>1<b>、準備資料存放的檔案系統</b></b></b> <b> </b>

建立一個邏輯卷,這裡假設其邏輯卷的挂載目錄為/mydata,而後需要建立/mydata/data目錄做為mysql資料的存放目錄。

[root@localhost init.d]# fdisk /dev/sda  

//其中過程省略。。  

[root@localhost init.d]# partprobe /dev/sda  

//建立邏輯卷  

[root@localhost init.d]# pvcreate /dev/sda5   

 Writing physical volume data to disk "/dev/sda5"  

 Physical volume "/dev/sda5" successfully created  

[root@localhost init.d]# vgcreate myvg /dev/sda5  

 Volume group "myvg" successfully created  

[root@localhost init.d]# lvcreate -n mydata -L 5G myvg  

 Logical volume "mydata" created  

[root@localhost init.d]# lvs  

 LV     VG     Attr   LSize Origin Snap% Move Log Copy% Convert  

 mydata myvg   -wi-a- 5.00G                                        

 lvtext vgtext -wi-a- 1.00G                                        

 home   vol0   -wi-ao 4.88G                                        

 root   vol0   -wi-ao 29.28G                                        

[root@localhost init.d]# mke2fs -j /dev/myvg/mydata  

//設定開機挂載  

[root@localhost ~]# mkdir /mydata  

[root@localhost ~]# vim /etc/fstab  

/dev/myvg/mydata        /mydata                 ext3    defaults        0 0  

[root@localhost ~]# mount –a  //重新挂載  

[root@localhost ~]# mkdir /mydata/data //作為資料的挂載目錄  

<b>2</b><b>、建立使用者以安全方式運作程序:</b>

//建立使用者  

[root@localhost ~]# groupadd -r mysql  

[root@localhost ~]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql  

[root@localhost ~]# chown -R mysql:mysql /mydata/data  

 <b>3</b><b>、</b><b>安裝并初始化mysql-5.5.28</b>

[root@localhost ~]# cd /usr/local/src/  

[root@localhost src]# tar xf mysql-5.5.28-linux2.6-i686.tar.gz  

[root@localhost src]# cd ..  

[root@localhost local]# pwd  

/usr/local  

[root@localhost local]# ln -sv /usr/local/src/mysql-5.5.28-linux2.6-i686 mysql  

create symbolic link `mysql' to `/usr/local/src/mysql-5.5.28-linux2.6-i686'   

[root@localhost local]# cd mysql  

[root@localhost mysql]# chown -R mysql:mysql .  

[root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data  

Installing MySQL system tables...  

[root@localhost mysql]#  

 <b> 4</b><b>、</b><b>為mysql</b><b>提供主配置檔案:</b>

[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf  

[root@localhost mysql]# vim /etc/my.cnf  

//并修改此檔案中thread_concurrency的值為你的CPU個數乘以2,比如這裡使用如下行:  

thread_concurrency = 2 

//另外還需要添加如下行指定mysql資料檔案的存放位置:  

datadir = /mydata/data   //添加此行指定mysql資料檔案的存放位置  

   <b>5</b><b>、為mysql</b><b>提供sysv</b><b>服務腳本:</b>

[root@localhost mysql]# pwd  

/usr/local/mysql  

[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld  

[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld  

//添加至服務清單:  

[root@localhost mysql]# chkconfig --add mysqld  

[root@localhost mysql]# chkconfig mysqld on  

而後就可以啟動服務測試使用了。  

為了使用mysql的安裝符合系統使用規範,并将其開發元件導出給系統使用,這裡還需要進行如下步驟:

 <b>6</b><b>、</b><b>輸出mysql</b><b>的man</b><b>手冊至man</b><b>指令的查找路徑:</b>

[root@localhost mysql]# vim /etc/man.config  

#####################mysql#############  

MANPATH /usr/local/mysql/man  

 <b>7</b><b>、</b><b>輸出mysql</b><b>的頭檔案至系統頭檔案路徑/usr/include</b><b>:</b>

這可以通過簡單的建立連結實作:  

[root@localhost mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql  

create symbolic link `/usr/include/mysql' to `/usr/local/mysql/include'  

<b>8</b><b>、</b><b>輸出mysql</b><b>的庫檔案給系統庫查找路徑:</b>

[root@localhost ld.so.conf.d]# echo '/usr/local/mysql/lib' &gt; /etc/ld.so.conf.d/mysql.conf  

<b> </b><b>9</b><b>、修改PATH</b><b>環境變量,讓系統可以直接使用mysql</b><b>的相關指令。</b>

[root@localhost ld.so.conf.d]# vim /etc/profile //需要重讀或重新開機或重新登入  

PATH=$PATH:/usr/local/mysql/bin  

//另外export PATH=$PATH:/usr/local/mysql/bin 也可以起到上邊的效果  

PS:這個時候。就可以進入資料庫建立表之類的東西了!  

 圖檔僅為連接配接的測試:

<a target="_blank" href="http://blog.51cto.com/attachment/201304/231918121.png"></a>

<b>三、編譯安裝php-5.4.13</b>

<b> </b><b>1</b><b>、解決依賴關系:</b>

請配置好yum源(可以是本地系統CD光牒)後執行如下指令:  

       [root@localhost ~]# yum -y groupinstall "X Software Development"  

如果想讓編譯的php支援mcrypt擴充,此處還需要下載下傳如下兩個rpm包并安裝之:  

libmcrypt-2.5.7-5.el5.i386.rpm  

libmcrypt-devel-2.5.7-5.el5.i386.rpm  

mhash-0.9.2-6.el5.i386  

mhash-devel-0.9.2-6.el5.i386  

<a target="_blank" href="http://blog.51cto.com/attachment/201304/232016492.png"></a>

<b>2、編譯安裝php-5.4.13</b> 

将下載下傳好的安裝包放到linux的src中(過程同上)  

[root@localhost src]# tar xf php-5.4.13.tar.bz2  

[root@localhost php-5.4.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts  

//說明:   

--prefix=/usr/local/php:php安裝路徑   

--with-mysql=/usr/local/mysql:mysql安裝路徑   

--with-openssl:支援openssl功能   

--with-mysqli=/usr/local/mysql/bin/mysql_config:mysql與apache通路的另一種接口,安裝在二進制目錄下   

--enable-mbstring:多位元組string   

--with-freetype-dir:安裝的字型庫頭檔案   

--with-jpeg-dir:jpeg類型的庫   

--with-png-dir:png類型的庫   

--with-zlib:網際網路上通用壓縮庫,先壓縮再傳送,減少帶寬   

--with-libxml-dir=/usr:xml庫檔案的路徑   

--enable-xml:支援xml功能      

--enable-sockets:php支援套接字功能      --with-apxs2=/usr/local/apache/bin/apxs:基于apxs實作讓php編譯成apache子產品   

--with-mcrypt:支援額外的加密庫   

--with-config-file-path=/etc:php配置檔案放置路徑     

--with-config-file-scan-dir=/etc/php.d :php配置檔案的分段檔案放置路徑   

--with-bz2 :壓縮庫   

--enable-maintainer-zts:當apache使用worker或event這兩個MPM,編譯時使用該選項   

[root@localhost php-5.4.13]# make  

[root@localhost php-5.4.13]# make test  

[root@localhost php-5.4.13]# make install  

為php提供配置檔案:  

[root@localhost php-5.4.13]# cp php.ini-production /etc/php.ini   

//php包中提供了配置檔案,把配置檔案重命名為/etc/php.ini,php的配置檔案字尾名是以.ini結尾  

 <b>3</b><b>、 </b><b>編輯apache</b><b>配置檔案httpd.conf</b><b>,以apache</b><b>支援php</b>

 [root@localhost php-5.4.8]# vim /etc/httpd/httpd.conf  

1、添加如下二行  

   AddType application/x-httpd-php .php  

   AddType application/x-httpd-php-source .phps  

//能夠讓APACHE處理PHP結尾的檔案  

 2、定位至DirectoryIndex index.html   

   修改為:  

DirectoryIndex index.php index.html  

//能讓目錄索引處理php結尾的頁面檔案。在配置檔案中可以根據自己安裝内容啟動相對子產品。比如:SSL子產品等。  

[root@localhost php-5.4.13]#cd /usr/local/apache/htdocs/     //進入apache頁面目錄下,把預設頁面修改為php頁面檔案   

[root@localhost php-5.4.13]#mv index.html index.php   

[root@localhost php-5.4.13]#vim index.php   

&lt;html&gt;&lt;body&gt;&lt;h1&gt;It works! doubao’s test page&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;   

&lt;?php   

phpinfo();   

?&gt; 

:wq   

//儲存退出   

[root@localhost htdocs]# service httpd restart //重新開機  

//發起php頁面測試   

//生成的測試頁面内容對我們還是會有幫助,可以留意一下裡面的内容   

<a target="_blank" href="http://blog.51cto.com/attachment/201304/232118990.png"></a>

<b>4、 php</b><b>和mysql結合,在index.php頁面檔案中修改一下内容</b>

&lt;html&gt;&lt;body&gt;&lt;h1&gt;It works! my test page&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;   

$conn=mysql_connect('localhost','root','');   

       if ($conn)   

echo "&lt;h2&gt;Success...&lt;/h2&gt;";   

       else   

echo "&lt;h2&gt;Failure...&lt;/h2&gt;";   

//儲存退出然後  

[root@localhost htdocs]# service httpd restart //重新開機網絡服務  

<b> </b>

<a target="_blank" href="http://blog.51cto.com/attachment/201304/232210451.png"></a>

到這裡,一個linux+apache+mysql+php的LAMP已經搭建好了。 

<b>四、搭建DISCUZ</b><b>論壇</b>

 1、事先将準備好的DISCUZ壓縮包放入linux中,做前提準備工作

[root@localhost ~]# vim /etc/httpd/httpd.conf       #指定網頁存放目錄  

#DocumentRoot "/usr/local/apache/htdocs"  

DocumentRoot "/www/a.org"  

#&lt;Directory "/usr/local/apache/htdocs"&gt; 

&lt;Directory "/www/a.org"&gt; 

[root@localhost discuz]# cd /usr/local/src/discuz/     

[root@localhost discuz]# unzip Discuz_X2.5_SC_GBK.zip          #解壓軟體包  

[root@localhost discuz]# mv ./upload/* /www/a.org/               #将解壓後的檔案放到網頁目錄中  

[root@localhost discuz]# mysqladmin -uroot -p password 'redhat'            #為資料庫添加密碼  

登入資料庫為root使用者添加遠端權限  

mysql&gt; grant all privileges on *.* to root@'%' identified by 'redhat';  

Query OK, 0 rows affected (0.30 sec)  

2、安裝DISCUZ論壇

打開IE輸入虛拟機1位址:172.16.111.1進行DISCUZ向導安裝,

<a target="_blank" href="http://blog.51cto.com/attachment/201304/232234561.png"></a>

然後第二部的時候為他們增加讀寫權限:

<a target="_blank" href="http://blog.51cto.com/attachment/201304/232249234.png"></a>

[root@localhost discuz]# cd /www/a.org/  

[root@localhost a.org]# mkdir ./config/config_global.php  

[root@localhost a.org]# mkdir ./config/config_ucenter.php  

[root@localhost a.org]# chmod o+rw ./config/*  

 [root@localhost a.org]# chmod o+rw ./data  

[root@localhost a.org]# chmod o+rw ./data/cache  

[root@localhost a.org]# chmod o+rw ./data/avatar  

[root@localhost a.org]# chmod o+rw ./data/plugindata  

[root@localhost a.org]# chmod o+rw ./data/download  

[root@localhost a.org]# chmod o+rw ./data/addonmd5  

[root@localhost a.org]# chmod o+rw ./data/template  

[root@localhost a.org]# chmod o+rw ./data/threadcache  

[root@localhost a.org]# chmod o+rw ./data/attachment  

[root@localhost a.org]# chmod o+rw ./data/attachment/album  

[root@localhost a.org]# chmod o+rw ./data/attachment/forum  

[root@localhost a.org]# chmod o+rw ./data/attachment/group   

[root@localhost a.org]# chmod o+rw ./data/log  

[root@localhost a.org]# chmod o+rw ./uc_client/data/cache  

[root@localhost a.org]# chmod o+rw ./uc_server/data  

[root@localhost a.org]# chmod o+rw ./uc_server/data/cache  

[root@localhost a.org]# chmod o+rw ./uc_server/data/avatar  

[root@localhost a.org]# chmod o+rw ./uc_server/data/backup  

[root@localhost a.org]# chmod o+rw ./uc_server/data/logs  

[root@localhost a.org]# chmod o+rw ./uc_server/data/tmp  

[root@localhost a.org]# chmod o+rw ./uc_server/data/view  

然後繼續進行下一步安裝

<a target="_blank" href="http://blog.51cto.com/attachment/201304/232315724.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201304/232328720.png"></a>

這時。第一步已經Ok,然後來做第二步。

為虛拟機2搭建LAP服務

(參照上邊的步驟一)

<b>二、編譯安裝php-5.4.13</b>

(參照上邊的步驟二)

這裡需要注意的是,在編譯安裝php5.4.13時,由于沒有安裝MySQL,這裡需要更改.config為:

./configure --prefix=/usr/local/php --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts  

搭建好以後打開浏覽器測試下,網頁是否能夠正常開啟!

<a target="_blank" href="http://blog.51cto.com/attachment/201304/232409665.png"></a>

安裝NFS服務,共享檔案

首先回到虛拟機1

[root@localhost config]# service portmap status  

portmap (pid 2958) is running...                  

//檢視下此服務是否在運作中,因為NFS服務要在這個服務的基礎上才能開啟  

[root@localhost config]# service nfs start      //開始NFS服務  

Starting NFS services:                                     [ OK ]  

Starting NFS quotas:                                       [ OK ]  

Starting NFS daemon:                                       [ OK ]  

Starting NFS mountd:                                       [ OK ]  

PS:這個時候可以# rpcinfo -p localhost 檢視所有rpc程序所監聽的端口  

[root@localhost config]# vim /etc/exports  

/www/a.org      172.16.0.0/16(rw,no_root_squash)      

###no_root_squash: 不将root使用者映射為來賓賬戶為了讓虛拟機2可以讀寫  

:wq  

[root@localhost config]# exportfs –ra   

//切記!!!要重新導出!!!  

然後回到虛拟機2:

[root@localhost htdocs]# mount -t nfs 172.16.111.1:/www/a.org /usr/local/apache/htdocs/  

###用戶端使用mount指令挂載  

當然這裡也可以将其設為開機自動挂在:  

[root@localhost htdocs]# vim /etc/fstab  

172.16.111.1:/www/a.org     /usr/local/apache/htdocs         nfs          defaults,_rnetdev 0 0  

#######_rnetdev:設定開機自動挂載時,能挂載就挂載,不能挂載就算了  

測試:

這裡不再做具體示範。提示:輸入172.16.111.1或者172.16.111.2。在兩個網頁上各注冊一個新的賬号來進行發帖操作,看看發帖之後對方是否能夠即時看到文章,是否為同步。

本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1188711,如需轉載請自行聯系原作者