一、LAMMP簡介
二、使用軟件及服務器架構說明
三、配置及安裝過程
1.安裝arp與httpd
2.安裝mysql
3.安裝php(php-fpm)
4.安裝Xcache
5.安裝PHP的memcache插件
四、安裝libevent與Memcached
1、Memcache簡介及原理
2、Memcache安裝及配置
五、整合Httpd、Php、Mysql、Memcached
一、LAMMP簡介:
LAMMP指的是:Linux(操作系統)、Apache(HTTP服務器)、Memcached(緩存服務器)、Mysql(數據庫)及PHP(有時也指Perl或Python)的首字母縮寫。是一組知名的高性能廉價的用來架構WEB服務器的開源軟件;它們各自都是一個獨立的程序,但因爲常被結合在一起使用,擁有較好的兼容性,組合起來共同構建了一個非常強大而又穩定WEB應用程序平臺。
相信博友們都對LAMMP平臺已經有了初步的認識,接下來我們講解如何在生產環境中部署編譯安裝LAMMP;這裏我們使用的軟件包都是比較新的穩定版本。廢話不多說,下面直接切入正題:
二、環境配置及架構介紹:
所需軟件:
1、操作系統版本:CentOS6.4 x86_64
2、apr版本:apr-1.4.8 下載地址:http://mirror.bit.edu.cn/apache//apr/apr-1.4.8.tar.bz2
3、apr-util版本:apr-util-1.5.2 下載地址:http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.2.tar.bz2
4、Httpd版本:httpd-2.4.6 下載地址:http://mirror.esocc.com/apache//httpd/httpd-2.4.6.tar.bz2
5、Memcached版本:memcached-1.4.15 下載地址:http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
6、Mysql版本:mysql-5.5.33 下載地址:http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.33-linux2.6-x86_64.tar.gz
7、PHP版本:php-5.4.19 下載地址:http://mirrors.sohu.com/php/php-5.4.19.tar.bz2
8、Xcache版本:xcache-3.0.3 http://xcache.lighttpd.net/pub/Releases/3.0.3/xcache-3.0.3.tar.bz2
9、PHP的Memcache模塊版本:memcache-2.2.7 下載地址:http://pecl.php.net/get/memcache-2.2.7.tgz
10、Libevent版本:libevent-2.0.21-stable 下載地址:http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
服務器架構說明:
客戶端請求一個網頁數據所要經過的過程如:
1、客戶端向Apache服務器發出一個請求經過Internet,由Internet路由到Apache服務器上
2、Apache服務器首先判斷請求的是動態還是靜態網頁,如果是靜態頁面,由Apache服務器直接返回給客戶端;如果是動態頁面則自已不處理,交給後臺php服務器處理
3、php服務器在處理過程中如果需要調用Mysql數據庫服務器的數據,則先查找Memcached緩存服務器(應用程序中要定義),如果Memcached服務器緩存的有要查詢的數據則直接返回給php服務器;如果Memcached服務器中緩存的沒有要查詢的數據,php服務器則會向數據庫服務器查詢數據
4、php服務器從數據查詢到數據不會立即返回給前臺Apache服務器;則會先緩存到Memcached服務器然後再返回給Apache服務器(應用程序中要定義緩存)
5、再由Apache服務器返回給客戶端
三、配置及安裝過程
1、在apache服務器上安裝arp與httpd服務器
由於我們安裝的Httpd比較新,低版本的apr不支持,至少要1.4版本以上才支持,而apr1.4版本的Rpm包目前還沒有發佈,所以我們需要先編譯安裝apr;在安裝前解釋下什麼是apr?
APR:(Apache portable Run-time libraries.Apache可移植運行庫)APR目的如其名稱一樣,主要爲上層的應用程序提供一個可以跨越多操作系統平臺使用的底層支持接口庫;而Apache使用這個之後可以有效提高Apache的靜態頁面的處理能力。
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 | ######安裝開發環境和依賴包 [root@localhost ~] # yum -y groupinstall "Development tools" "Server Platform Development" [root@localhost ~] # yum -y install pcre-devel ######解壓並安裝apr [root@localhost ~] # tar xf apr-1.4.8.tar.bz2 #解壓apr軟件包 [root@localhost ~] # cd apr-1.4.8 #切換到apr目錄 [root@localhost apr-1.4.8] # ./configure \ --prefix= /usr/local/apr #編譯前配置,並指定安裝目錄,方便維護 [root@localhost apr-1.4.8] # make && make install #編譯並安裝 ######解壓並安裝apr-util [root@localhost ~] # tar xf apr-util-1.5.2.tar.bz2 [root@localhost ~] # cd apr-util-1.5.2 [root@localhost apr-util-1.5.2] # ./configure \ --prefix= /usr/local/apr-util \ --with-apr= /usr/local/apr #依賴於apr,指定上一步apr安裝目錄 [root@localhost apr-util-1.5.2] # make && make install ######解壓並安裝httpd [root@localhost ~] # tar xf httpd-2.4.6.tar.bz2 [root@localhost ~] # cd httpd-2.4.6 [root@localhost httpd-2.4.6] # ./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 -modules=most \ -- enable -mpms-shared=all \ --with-mpm=event |
第22行~第33行註釋依次爲:
1 2 3 4 5 6 7 8 9 10 11 12 | #配置文件目錄 #啓用動態模塊加載 #基於ssl加密傳輸 #開啓CGI腳本 #允許URL重寫 #支持壓縮 #支持perl的正則表達式 #指定apr安裝路徑 #指定apr-util安裝路徑 #支持大多數模塊 #mpm模塊的動態切換 #默認加載使用的mpm |
提供Sysv服務腳本,方便管理維護Httpd:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ######複製源碼包裏的SysV腳本 [root@localhost httpd-2.4.6] # cp build/rpm/httpd.init /etc/rc.d/init.d/httpd ######修改以下內容 httpd=${HTTPD- /usr/local/apache/bin/httpd } pidfile=${PIDFILE- /usr/local/apache/logs/ ${prog}.pid} lockfile=${LOCKFILE- /var/lock/subsys/ ${prog}} RETVAL=0 # check for 1.3 configuration check13 () {
CONFFILE= /etc/httpd/httpd .conf ######讓系統能識別源碼包安裝的軟件,並加入到系統服務 [root@localhost ~] # echo "PATH=/usr/local/apache/bin:$PATH" >> /etc/profile.d/http.sh [root@localhost ~] # . /etc/profile.d/http.sh [root@localhost ~] # ln -s /usr/local/apache/include/ /usr/include/httpd [root@localhost ~] # chkconfig --add httpd [root@localhost ~] # chkconfig httpd on [root@localhost ~] # chkconfig --list httpd httpd 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉 [root@localhost ~] # service httpd start 正在啓動 httpd:AH00558: httpd: Could not reliably determine the server 's fully qualified domain name, using localhost.localdomain. Set the ' ServerName' directive globally to suppress this message
[確定] ######提示這個警告,是因爲Httpd主配置文件沒有配置ServerName;如下修改;重啓就不會提示了: [root@localhost ~] # vim /etc/httpd/httpd.conf ServerName 172.16.14.1:80 |
在客戶端訪問測試:
Apache的配置選項有很多,可以切換到解壓的Httpd目錄下使用./configure --help獲取;不過都是全英文,如果想詳細瞭解請參考官方文檔。
MPM:
MPM都可以構建爲靜態模塊。在構建時選擇一種MPM,鏈接到服務器中。如果要改變MPM,必須重新構建。爲了使用指定的MPM,在執行configure編譯配置時,使用參數 --with-mpm=MPM_NAME。MPM_NAME是指定的MPM名稱。編譯完成後,可以使用 ./httpd -l 來確定選擇的MPM。此命令會列出編譯到服務器程序中的所有模塊,包括 MPM模塊。
MPM可以構建爲動態模塊。與其它動態模塊一樣在運行時加載。構建 MPM爲動態模塊允許通過修改LoadModule指令內容來改變MPM,而不用重新構建服務器程序。在執行configure腳本時,使用--enable-mpms-shared選項即可啓用此項特性。當給出的參數爲all時,所有此平臺支持的MPM模塊都會被安裝。還可以在參數中給出模塊列表。通過--with-mpm選項來指定默認MPM,然後出現在生成的服務器配置文件中。編輯LoadModule指令內容可以選擇不同的MPM。
2、安裝Mysql數據庫服務器
安裝之前先添加一塊80G的硬盤,創建兩個分區分別爲10G,調整分區類型爲8e;創建一個邏輯卷。這樣如果空間不夠用的話可以隨時擴展磁盤空間。這裏把邏輯卷掛載到“/Mydata”目錄下,後面需要在Mydata目錄下新建一個data目錄做爲Mysql數據存放目錄。這裏不在詳細講解LVM邏輯卷的創建,如有興趣學習可以看本人前面發佈的博客。
1 2 3 4 5 6 7 8 9 | [root@localhost ~] # partx /dev/sda #重新讓內核讀取分區如果讀取不成功需要重啓系統 [root@localhost ~] # pvcreate /dev/sda{3,5} [root@localhost ~] # vgcreate myvg /dev/sda{3,5} [root@localhost ~] # lvcreate -n mydata -L 10G /dev/myvg [root@localhost ~] # mkfs.ext4 /dev/myvg/mydata [root@localhost ~] # mkdir /Mydata [root@localhost ~] # vim /etc/fstab #添加如下行,系統重啓自動掛載 /dev/myvg/mydata /Mydata ext4 defaults 0 0 [root@localhost ~] # mount -a |
開始安裝Mysql:
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 | ######創建Mysql系統用戶 [root@localhost ~] # useradd -r -s /sbin/nologin mysql ######解壓Mysql通用二進制軟件包並創建軟鏈接 [root@localhost ~] # tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/ [root@localhost ~] # cd /usr/local/ [root@localhost local ] # ln -sv mysql-5.5.33-linux2.6-x86_64/ mysql `mysql ' -> `mysql-5.5.33-linux2.6-x86_64/' ######創建Mysql數據存放目錄並修改屬主、屬組 [root@localhost local ] # mkdir /Mydata/data [root@localhost local ] # chown -R mysql:mysql /Mydata/data ######從Mysql源碼包複製一個模板主配置文件 [root@localhost local ] # cp mysql/support-files/my-large.cnf /etc/my.cnf cp : overwrite ` /etc/my .cnf'? y ######創建Mysql的SysV服務啓動腳本並添加到系統服務 [root@localhost local ] # cp mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld [root@localhost mysql] # chkconfig --add mysqld [root@localhost mysql] # chkconfig mysqld on [root@localhost mysql] # chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off ######修改Mysql主配置文件添加如下行 [root@localhost local ] # vim /etc/my.cnf thread_concurrency = 2 datadir= /Mydata/data ######設置Mysql根目錄下屬組權限並初始化Mysql [root@localhost mysql] # cd /usr/local/mysql [root@localhost mysql] # chown -R :mysql * [root@localhost mysql] # ./scripts/mysql_install_db --user=mysql --datadir=/Mydata/data ######讓系統識別源碼包安裝的軟件 [root@localhost mysql] # echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile.d/mysqld.sh [root@localhost mysql] # . /etc/profile.d/mysqld.sh [root@localhost mysql] # ln -s /usr/local/mysql/include /usr/include/mysql [root@localhost mysql] # echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysqld.conf [root@localhost mysql] # ldconfig ######啓動Mysql數據庫 [root@localhost mysql] # service mysqld start Starting MySQL... [ OK ] ######設置Mysql數據庫root用戶的密碼 [root@localhost mysql] # mysqladmin -uroot password 'mypass' |
第22、23行,第29行~33行註釋依次爲:
1 2 3 4 5 6 7 | #這個值可以是CPU核心數的兩倍 #數據存放位置 #修改PATH環境變量,將Mysql的命令加入到PATH變量中 #重新讀取環境變量文件,讓系統能識別 #將Mysql頭文件加入到系統中 #將Mysql庫文件添加到系統中 #重新加載庫文件,讓系統能識別 |
3、安裝PHP(php-fpm)
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 | ######解壓軟件包 [root@localhost ~] # tar xf php-5.4.19.tar.bz2 [root@localhost ~] # tar xf xcache-3.0.3.tar.bz2 [root@localhost ~] # tar xf memcache-2.2.7.tgz ######安裝php依賴環境"libmcrypt-devel"可以到搜狐鏡像去下載 [root@localhost ~] # yum -y groupinstall "Server Platform Development" "Development tools" [root@localhost php-5.4.19] # yum -y install libmcrypt-devel bzip2-devel gcc-c++ libxml2-devel openssl-devel autoconf ######編譯安裝php [root@localhost ~] # cd php-5.4.19 [root@localhost php-5.4.19] # ./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 \ -- enable -fpm \ --with-mcrypt \ --with-config- file -path= /etc \ --with-config- file -scan- dir = /etc/php .d \ --with-bz2 \ --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd [root@localhost php-5.4.19] # make && make install ######爲PHP提供主配置文件 [root@localhost php-5.4.19] # cp php.ini-production /etc/php.ini ######爲php-fpm提供SysV服務腳本,添加執行權限並加入到系統服務 [root@localhost php-5.4.19] # cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm [root@localhost etc] # chmod +x /etc/rc.d/init.d/php-fpm [root@localhost php-5.4.19] # chkconfig --add php-fpm [root@localhost php-5.4.19] # chkconfig php-fpm on [root@localhost php-5.4.19] # chkconfig --list php-fpm php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off ######爲php-fpm提供配置文件 [root@localhost php-5.4.19] # cd /usr/local/php/etc/ [root@localhost etc] # mv php-fpm.conf.default php-fpm.conf ######配置PATH路徑讓系統能夠找到源碼包安裝的PHP命令 [root@localhost etc] # echo "PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH" >> /etc/profile.d/php-fpm.sh [root@localhost etc] # . /etc/profile.d/php-fpm.sh [root@localhost etc] # ln -sv /usr/local/php/include /usr/include/php ` /usr/include/php ' -> `/usr/local/php/include' ######修改php-fpm主配置文件如下: [root@localhost etc] # vim php-fpm.conf pid = run /php-fpm .pid error_log = log /php-fpm .log listen = 172.16.14.2:9000 pm.max_children = 50 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 6 ######啓動php-fpm服務 [root@localhost etc] # service php-fpm start Starting php-fpm done |
第11行~24行註釋:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #支持SSL加密 #支持多字節、多字符串 #開啓對freetype字體庫的支持 #開啓對jpeg、png圖片的支持 #開啓對zlib庫的支持 #開啓對libxml庫的支持 #開啓xml文件的支持 #開啓套接字支持 #以fastcgi方式編譯安裝 #支持的算法擴展 #指定主配置文件路徑 #額外掃描的配置文件目錄 #支持bz2壓縮 #開啓php-fpm連接數據庫支持 |
第45行~51行註釋:
1 2 3 4 5 6 7 | #PID文件 #開啓錯誤日誌 #監聽的地址與端口 #靜態方式下開啓的php-fpm進程數 #動態方式下啓動的php-fpm進程數 #動態方式下最小php-fpm進程數 #動態方式下最大php-fpm進程數 |
4、安裝Xcache
1 2 3 4 5 6 7 8 9 10 11 12 13 | #安裝php加速opcode代碼的軟件Xcache [root@localhost etc] # cd /root/xcache-3.0.3 [root@localhost xcache-3.0.3] # /usr/local/php/bin/phpize [root@localhost xcache-3.0.3] # ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config [root@localhost xcache-3.0.3] # make && make install #在安裝結束時會提示如下代碼: Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ #創建php配置文件掃描目錄 [root@localhost xcache-3.0.3] # mkdir /etc/php.d #提供Xcache配置文件到php [root@localhost xcache-3.0.3] # vim /etc/php.d/xcache.ini #在xcache.ini文件中裝載xcache.so模塊 extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache .so |
5、安裝memcache插件
1 2 3 4 5 6 7 8 9 10 | #安裝php連接memcached緩存服務器插件memcache [root@localhost xcache-3.0.3] # cd /root/memcache-2.2.7 [root@localhost memcache-2.2.7] # /usr/local/php/bin/phpize [root@localhost memcache-2.2.7] # ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config [root@localhost memcache-2.2.7] # make && make install #在安裝結束時會提示如下代碼: Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ #在php.ini文件中加入如下代碼,裝載memcache模塊 [root@localhost memcache-2.2.7] # vim /etc/php.ini extension= /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache .so |
重新啓動php-fpm服務
1 2 3 | [root@localhost ~] # service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done |
四、Libevent與Memcached安裝配置
1、Memcached簡介
Memcached是一款開源、高性能、分佈式內存對象緩存系統,可應用各種需要緩存的場景,其主要目的是通過降低對Database的訪問來加速web應用程序。它是一個基於內存的“鍵值對”存儲,用於存儲數據庫調用、API調用或頁面引用結果的直接數據,如字符串、對象等
Memcached是一款開發工具,它既不是一個代碼加速器,也不是數據庫中間件。其設計哲學思想主要反映在如下方面:
1. 簡單key/value存儲:服務器不關心數據本身的意義及結構,只要是可序列化數據即可。存儲項由“鍵、過期時間、可選的標誌及數據”四個部分組成
2. 功能的實現一半依賴於客戶端,一半基於服務器端:客戶負責發送存儲項至服務器端、從服務端獲取數據以及無法連接至服務器時採用相應的動作;服務端負責接收、存儲數據,並負責數據項的超時過期
3. 各服務器間彼此無視:不在服務器間進行數據同步
4. O(1)的執行效率
5. 清理超期數據:默認情況下,Memcached是一個LRU緩存,同時,它按事先預訂的時長清理超期數據;但事實上,memcached不會刪除任何已緩存數據,只是在其過期之後不再爲客戶所見;而且,memcached也不會真正按期限清理緩存,而僅是當get命令到達時檢查其時長
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 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 | ######安裝libevent [root@localhost ~] # tar xf libevent-2.0.21-stable.tar.gz [root@localhost ~] # cd libevent-2.0.21-stable [root@localhost libevent-2.0.21-stable] # ./configure --prefix=/usr/local/libevent [root@localhost libevent-2.0.21-stable] # make && make install ######調整libevent庫 [root@localhost libevent-2.0.21-stable] # echo "/usr/local/libevent/lib" >> /etc/ld.so.conf.d/libevent.conf [root@localhost libevent-2.0.21-stable] # ldconfig ##################################################################### ######安裝Memcached [root@localhost ~] # tar xf memcached-1.4.15.tar.gz [root@localhost ~] # cd memcached-1.4.15 [root@localhost memcached-1.4.15] # ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ [root@localhost memcached-1.4.15] # make && make install ######爲Memcached提供SysV服務腳本 [root@localhost ~] # vim /etc/rc.d/init.d/memcached #!/bin/bash # # Init file for memcached # # chkconfig: - 86 14 # description: Distributed memory caching daemon # # processname: memcached # config: /etc/sysconfig/memcached . /etc/rc .d /init .d /functions ## Default variables PORT= "11211" USER= "nobody" MAXCONN= "1024" CACHESIZE= "64" IPADDR= "172.16.14.3" RETVAL=0 prog= "/usr/local/memcached/bin/memcached" desc= "Distributed memory caching" lockfile= "/var/lock/subsys/memcached" start() {
echo -n $ "Starting $desc (memcached): "
daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE -l "$IPADDR"
RETVAL=$?
[ $RETVAL - eq 0 ] && success && touch $lockfile || failure
echo
return $RETVAL } stop() {
echo -n $ "Shutting down $desc (memcached): "
killproc $prog
RETVAL=$?
[ $RETVAL - eq 0 ] && success && rm -f $lockfile || failure
echo
return $RETVAL } restart() {
stop
start } reload() {
echo -n $ "Reloading $desc ($prog): "
killproc $prog -HUP
RETVAL=$?
[ $RETVAL - eq 0 ] && success || failure
echo
return $RETVAL } case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e $lockfile ] && restart
RETVAL=$?
;;
reload)
reload
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $ "Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1 esac exit $RETVAL ######爲腳本添加執行權限,加入到系統服務並設置爲開機自啓動 [root@localhost ~] # chmod +x /etc/rc.d/init.d/memcached [root@localhost ~] # chkconfig --add memcached [root@localhost ~] # chkconfig memcached on [root@localhost ~] # chkconfig --list memcached memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off ######啓動Memcached服務 [root@localhost ~] # service memcached start Starting Distributed memory caching (memcached): [ OK ] |
五、整合Httpd、Php、Mysql、Memcached
1、在Apache服務器上新建虛擬主機並整合php-fpm:
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 | ######打開主配置文件修改如下內容 [root@localhost ~] # vim /etc/httpd/httpd.conf #DocumentRoot "/usr/local/apache/htdocs" LoadModule proxy_fcgi_module modules /mod_proxy_fcgi .so LoadModule proxy_module modules /mod_proxy .so Include /etc/httpd/extra/httpd-vhosts .conf ######添加下面兩行內容 AddType application /x-httpd-php .php AddType application /x-httpd-php-source .phps ######添加默認php主頁 DirectoryIndex index.php index.html ######添加虛擬主機 [root@localhost ~] # vim /etc/httpd/extra/httpd-vhosts.conf <VirtualHost 172.16.14.1:80>
DocumentRoot "/web/allen"
ServerName www.allen.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi: //172 .16.14.2:9000 /web/allen/ $1
<Directory "/www/allen" >
Options none
AllowOverride none
Require all granted
< /Directory > # ErrorLog "logs/www.allen.com-error_log" # CustomLog "logs/www.allen.com-access_log" common < /VirtualHost > ######創建網站存放目錄 [root@localhost ~] # mkdir -pv /web/allen mkdir : created directory ` /web ' mkdir : created directory ` /web/allen ' ######添加本地hosts解析 C:\Windows\System32\drivers\etc\hosts 172.16.14.1 www.allen.com |
2、在Php服務器上創建網站目錄並新建測試頁:
1 2 3 4 5 6 7 | [root@localhost ~] # mkdir -pv /web/allen mkdir : created directory ` /web ' mkdir : created directory ` /web/allen ' [root@localhost ~] # cat > /web/allen/index.php << EOF > <?php > phpinfo(); > EOF |
3、在客戶端訪問是否能解析php測試頁,並查看是否加載Xcache、Memcache模塊:
4、在Php服務器上創建test.php頁面,測試連接memcached服務器:
1 2 3 4 5 6 7 8 9 10 | [root@localhost ~] # vim /web/allen/test.php <?php $mem = new Memcache; $mem->connect( "172.16.14.3" , 11211) or die( "Could not connect" ); $version = $mem->getVersion(); echo "Server's version: " .$version. "<br/>\n" ; $mem-> set ( 'hellokey' , 'Hello World' , 0, 600) or die( "Failed to save data at the memcached server" ); echo "Store data in the cache (data will expire in 600 seconds)<br/>\n" ; $get_result = $mem->get( 'hellokey' ); echo "$get_result is from memcached server." ; |
5、在客戶端訪問test.php頁面,如果訪問成功則會顯示版本信息等:
6、在php服務器上面安裝一個論壇,論壇中間需要連接數據庫,這樣即測試了連接數據庫又演示了怎麼安裝一個論壇系統:
a)、在數據庫服務器上授權一個用戶,允許遠程連接,這裏我們就使用root用戶了,但在生產環境中千萬不能使用root用戶:
1 2 3 4 5 6 7 8 9 10 | [root@localhost ~] # mysql -uroot -pmypass ######創建論壇所使用的數據庫 mysql> create database phpwind; Query OK, 1 row affected (0.04 sec) ######授權172.16.0.0網段可以使用root用戶遠程連接 mysql> grant all on *.* to 'root' @ '172.16.%.%' identified by 'root@pass' ; Query OK, 0 rows affected (0.03 sec) ######授權完成後,刷新生效 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) |
b)、在php和Apache服務器上面分別解壓已下載的論壇軟件包並安裝:
先在Php服務器上解壓:
1 2 3 4 5 6 | ######解壓phpwind軟件包 [root@localhost ~] # unzip phpwind_v9.0_utf8.zip > /dev/null ######拷貝到網站目錄下並重命名 [root@localhost ~] # mv phpwind_v9.0_utf8/upload /web/allen/bbs ######更改屬主權限爲運行php-fpm的用戶 [root@localhost ~] # chown -R nobody /web/allen/bbs/* |
在apache服務器上解壓:
1 2 | [root@localhost ~] # unzip phpwind_v9.0_utf8.zip > /dev/null [root@localhost ~] # mv phpwind_v9.0_utf8/upload /web/allen/bbs |
7、在客戶端訪問安裝論壇系統:
檢查安裝環境:
配置數據庫信息及用戶,點創建數據會自動創建數據庫文件,然後自動跳轉到主頁:
安裝成功,進入主頁面:
登錄到論壇,進入後臺設置:
phpwind論壇後臺管理界面:
修改phpwind論壇讓其支持memcache
下面我們在php與apache服務器上面都要修改一下phpwind的配置文件,修改內容一致,這就裏給出一個服務器的代碼;讓其支持memcached;如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 'mem.isopen' => 1, //開啓memcache緩存,請確保服務器上已安裝 memcache 服務,並已作好相應配置。值修改爲1 'mem.server' => 'MemCache' , //memcache服務名,有MemCache和MemCached兩種,看當前php擴展安裝的是哪個 'mem.servers' => array (
'default' => array (
array (
'host' => '172.16.14.3' , //Memcached緩存服務器地址
'port' => 11211, //Memcached緩存服務器監聽端口
'pconn' => false,
'weight' => 1,
'timeout' => 15,
'retry' => 15,
'status' => true,
'fcallback' => null,
),
), ), |
再次用客戶端訪問論壇,如下:
查看Memcached服務器狀態如:
1 2 3 4 5 6 | ######安裝telnet遠程工具 [root@localhost ~] # yum -y install telnet ######遠程登錄到Memcached的服務器 [root@localhost ~] # telnet 172.16.14.3 11211 ######執行如下命令獲取Memcached狀態 stats |
博客到此結束,做的過程中如有疑問請留言;敬請關注後續博客更新...