memcached實現(xiàn)LNMP對php頁面的緩存-創(chuàng)新互聯(lián)

說明:準備一臺虛擬機,地址為202.207.178.6,已經(jīng)安裝好nginx,并且可以正常啟動使用了!

公司專注于為企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設、微信公眾號開發(fā)、商城網(wǎng)站開發(fā)小程序開發(fā),軟件按需網(wǎng)站開發(fā)等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。

一、安裝前準備

1、memcached依賴于libevent API,因此要事先安裝之

# tar xf libevent-2.0.20-stable.tar.gz

# cd libevent-2.0.20

# ./configure --prefix=/usr/local/libevent

# make && make install

輸出庫文件:

# echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf

# ldconfig

2、要啟用sasl,確保已經(jīng)安裝了cyrus-sasl-devel

# yum -y install cyrus-sasl-devel

二、安裝配置memcached

1、安裝memcached

# tar xf memcached-1.4.15.tar.gz

# cd memcached-1.4.15

# ./configure --enable-sasl --prefix=/usr/local/memcached

         --with-libevent=/usr/local/libevent

# make && make install

2、memcached的常用選項說明:

# /usr/local/memcached/bin/memcached

-p <num>: 指定監(jiān)聽的TCP端口,默認為11211

-U <num>:指定監(jiān)聽的UDP端口,默認為11211,0表示關閉UDP端口

-s 本地套接字通信

-l <ip_addr>:指定進程監(jiān)聽的地址

-d: 以服務模式運行

-r 設定大文件大小限制

-u <username>:以指定的用戶身份運行memcached進程

-m <num>:用于緩存數(shù)據(jù)的大內存空間,單位為MB,默認為64MB;

-c <num>:大支持的并發(fā)連接數(shù),默認為1024

-t <threads>:用于處理入站請求的大線程數(shù),僅在memcached編譯時開啟

                  了支持線程才有效;

-f <num>:設定Slab Allocator定義預先分配內存空間大小固定的塊時使用

                的增長因子;

-M:當內存空間不夠使用時返回錯誤信息,而不是按LRU算法利用空間;

-n: 指定最小的slab chunk大小;單位是字節(jié);

-S: 啟用sasl進行用戶認證;

3、啟動memcached:

# /usr/local/memcached/bin/memcached -d -m 128 -n 20 -f 1.25 -vv -u nobody

4、使用telnet命令測試memcached的使用

# telnet 127.0.0.1 11211

add命令:

add keyname flag  timeout  datasize

如:

add mykey 0 30 5

hello

get命令:

get keyname

如:get mykey

VALUE mykey 0 5

hello

END

5、為memcached提供啟動腳本 ,將其建立為/etc/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"

OPTIONS=""

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 -o "$OPTIONS"

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && touch $lockfile

return $RETVAL

}

stop() {

echo -n $"Shutting down $desc (memcached): "

killproc $prog

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && rm -f $lockfile

return $RETVAL

}

restart() {

stop

start

}

reload() {

echo -n $"Reloading $desc ($prog): "

killproc $prog -HUP

RETVAL=$?

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

6、使用如下命令配置memcached成為系統(tǒng)服務:

# chmod +x /etc/init.d/memcached

# chkconfig --add memcached

# killall memcached

# service memcached start

三、安裝MySQL(我這里通過編譯安裝MySQL-5.6.33(通用二進制格式))

1、將下載好的壓縮包解壓至/usr/local,并進入此目錄

# tar xf mysql-5.6.33-linux-glibc2.5-i686.tar.gz -C /usr/local/

# cd /usr/local/

2、為解壓后的目錄創(chuàng)建一個鏈接,并進入此目錄

# ln -sv mysql-5.6.33-linux-glibc2.5-i686 mysql

# cd mysql

3、創(chuàng)建MySQL用戶(使其成為系統(tǒng)用戶)和MySQL組

# groupadd -r -g 306 mysql

# useradd -g 306 -r -u 306 mysql

4、使mysql下的所有文件都屬于mysql用戶和mysql組

# chown -R mysql.mysql /usr/local/mysql/*

5、創(chuàng)建數(shù)據(jù)目錄,并使其屬于mysql用戶和mysql組,其他人無權限

# mkdir -p /mydata/data

# chown -R mysql:mysql /mydata/data/

# chmod o-rw /mydata/data/

6、準備就緒,開始安裝

# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

7、安裝完成后為了安全,更改/usr/local/mysql下所有文件的權限

#chown -R root .

8、準備啟動腳本,并使其開機自動啟動

# cp support-files/mysql.server /etc/init.d/mysqld

# chkconfig --add mysqld

# chkconfig --list mysqld

9、編輯數(shù)據(jù)庫配置文件

# cp support-files/my-default.cnf /etc/my.cnf

#vim /etc/my.cnf,修改和添加以下內容:

datadir = /mydata/data

innodb_file_per_table = ON

log-bin = master-bin

10、提供執(zhí)行相關命令所需的環(huán)境變量

# vim /etc/profile.d/mysql.sh

添加以下內容:

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

11、至此,MySQL服務配置完成,可以啟動測試

# service mysqld start

12、輸出庫文件(因為要針對mysql進行編譯)

# vim /etc/ld.so.conf.d/mysql.conf

添加以下內容:

/usr/local/mysql/lib

# ldconfig -v

13、輸出頭文件

# ln -sv /usr/local/mysql/include /usr/include/mysql

四、編譯安裝php-5.5.38:(相關包可以到http://www.php.net/ 下載)

1、安裝前準備:

如果出現(xiàn)出現(xiàn)configure:error:xml2-config not found錯誤:

# yum -y install libxml2-devel

如果出現(xiàn):configure: error: Please reinstall the BZip2 distribution

# yum -y install bzip2-devel

如果出現(xiàn):configure: error: Please reinstall the libcurl distribution -

             easy.h should be in <curl-dir>/include/curl/

# yum -y install curl-devel

2、將源碼包下載至本地,開始安裝

# tar xf php-5.5.38.tar.bz2

#cd php-5.5.38

#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql

        --with-openssl --enable-fpm --enable-sockets --enable-sysvshm

        --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  --with-config-file-path=/etc

        --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl

(釋義:

--prefix=/usr/local/php 指定php安裝目錄;

--with-mysql=/usr/local/mysql mysql安裝目錄,對mysql的支持;

--with-openssl 增加openssl的支持;

--enable-fpm 啟用php-fpm

--enable-sockets 打開socket支;

--with-mysqli=/usr/local/mysql/bin/mysql_config mysqlin擴展技術,不僅可以調

            用MySQL的存儲過程,處理MySQL事物,而且可以使訪問數(shù)據(jù)庫工作變得穩(wěn)定

--enable-mbstring 多字節(jié)字符串的支持;

--with-freetype-dir 打開對freetype字體庫的支持;

--with-jpeg-dir 對jpeg格式圖片的支持;

--with-png-dir 打開對png圖片的支持;

--with-zlib 打開對zlib庫的支持;

--with-libxml-dir=/usr 打開libxml2庫的支持;

--enable-xml 打開對xml的支持;

--with-config-file-path=/etc 指定php.ini(配置文件)位置;

--with-config-file-scan-dir=/etc/php.d 是搜索下面的ini文件php.ini一起用;

--with-bz2 打開對bz2文件的支持;

#make

#make install

3、為php提供配置文件:

# cp php.ini-production /etc/php.ini

4、為php-fpm提供配置文件:

# cp /usr/local/php/etc/php-fpm.conf.default

                /usr/local/php/etc/php-fpm.conf

5、編輯php-fpm的配置文件:

# vim /usr/local/php/etc/php-fpm.conf

配置fpm的相關選項為你所需要的值,并啟用pid文件(如下最后一行):

pm.max_children = 150

pm.start_servers = 8

pm.min_spare_servers = 5

pm.max_spare_servers = 10

#pid = /usr/local/php/var/run/php-fpm.pid

6、為php-fpm提供Sysv init腳本,并將其添加至服務列表:

# cd php-5.5.38

# 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

7、接下來就可以啟動php-fpm了:

# service php-fpm start

使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啟動成功了):

# ps aux | grep php-fpm

五、整合nginx和php5

1、編輯/etc/nginx/nginx.conf,啟用如下選項:

# vim /etc/nginx/nginx.conf

開啟和添加如下幾項:

location / {

      root /web/htdocs;

      index index.php index.html;

    }

    location ~ \.php$ {

      index index.php index.html;

      root      /web/htdocs;

      fastcgi_pass  127.0.0.1:9000;

      fastcgi_index  index.php;

      fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

      include     fastcgi_params;

    }

2、配置好fastcgi_params,確保為以下內容

# 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;

3、提供訪問頁面

# vim /web/htdocs/index.php

<h2>FSY PAGE<h2>

<?php

phpinfo();

?>

4、而后重新載入nginx的配置文件:

# service nginx reload

接著就可以通過瀏覽器訪問此測試頁面了!

六、安裝Memcache的PHP擴展

1、安裝PHP的memcache擴展

# tar xf memcache-2.2.5.tgz

# cd memcache-2.2.5

#/usr/local/php/bin/phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config

           --enable-memcache

# make && make install

上述安裝完后會有類似以下的提示:

Installing shared extensions:                              /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/

2、編輯/etc/php.d/memcache.ini,添加如下一行來載入memcache擴展:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so

3、重啟php-fpm,并進行訪問測試

# service php-fpm restart

此時訪問202.207.178.6,會發(fā)現(xiàn)memcache模塊已經(jīng)加載上了!

4、對memcached功能進行測試,在網(wǎng)站目錄中建立測試頁面test.php,添加如下內容:

# vim /web/htdocs/test.php

<?php

$mem = new Memcache;

$mem->connect("127.0.0.1", 11211)  or die("Could not connect");

$version = $mem->getVersion();

echo "Server's version: ".$version."<br/>\n";

$mem->set('testkey', 'Hello World', 0, 600) or die("Failed to save             data at the memcached server");

echo "Store data in the cache (data will expire in 600seconds)

            <br/>\n";

$get_result = $mem->get('testkey');

echo "$get_result is from memcached server.";

?>

此時訪問http://202.207.178.6/test.php如果有輸出“Hello World is from memcached.”等信息,則表明memcache已經(jīng)能夠正常工作。

                                歡迎批評指正!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享標題:memcached實現(xiàn)LNMP對php頁面的緩存-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://bm7419.com/article26/ijpjg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設搜索引擎優(yōu)化、微信公眾號、外貿建站、響應式網(wǎng)站、自適應網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計