memcachedに基づいてLNMMPプラットフォームを構築する


一、環境紹介
機能
ipアドレス
ソフトウェアのインストール
前段の静的ページと動的ページの提供
192.168.1.201
nginx+php
キャッシュサーバ
192.168.1.202
mencached
データベース・サーバ
192.168.1.203
MariaDB
二、nginxとphpのインストール構成
   1.nginxのインストールと構成
Nginxのインストールについては、本人のブログに移動してくださいhttp://wangfeng7399.blog.51cto.com/3518031/1403741操作手順はここでは示されません
     2.phpのインストール
phpのインストールについては、本人のブログに移動してください.http://wangfeng7399.blog.51cto.com/3518031/1381688操作手順はここでは示されません
3、xcacheを取り付け、php加速
xcacheのインストールについては、本人のブログに移動してくださいhttp://wangfeng7399.blog.51cto.com/3518031/1381688ここでは、具体的な操作手順は示しません.
     4.nginxとphpの結合
編集/etc/nginx/nginx.conf、次のオプションを有効にします.
location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$$fastcgi_script_name;
    include        fastcgi_params;
}

編集/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;

サポートされているホームフェースフォーマットにphpフォーマットのホームを追加します.
location / {
    root   html;
    index  index.php index.html index.htm;
}

その後nginxのプロファイルを再読み込み
[root@node1 ~]# service nginx reload
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reloading nginx:                                           [  OK  ]

テストページの準備
[root@node1 ~]# vi /usr/local/nginx/html/index.php
<?php
        phpinfo();
?>

nginxとphp、xcacheの統合が成功したことがわかります
wKioL1NdDxmx5g_2AAJDWedoTAY994.jpg
   5.あつりょくしけん
[root@node1 xcache-3.0.4]# ab -c 100 -n 1000 http://192.168.1.201/index.php
Concurrency Level:      100
Time taken for tests:   3.259 seconds
Complete requests:      1000
Failed requests:        87
   (Connect: 0, Receive: 0, Length: 87, Exceptions: 0)
Write errors:           0
Total transferred:      60208909 bytes
HTML transferred:       60061909 bytes
Requests per second:    306.81 [#/sec] (mean)
Time per request:       325.930 [ms] (mean)
Time per request:       3.259 [ms] (mean, across all concurrent requests)
Transfer rate:          18040.01 [Kbytes/sec] received

三、データベースのインストール構成
データベースのインストール構成については、本人のブログに移動してください.http://wangfeng7399.blog.51cto.com/3518031/1393146ここはもう邪魔にならない
四、memcachedのインストール
   1.概要
Memcachedはオープンソース、高性能、分散メモリオブジェクトキャッシュシステムであり、Databaseへのアクセスを低減することによってWebアプリケーションを加速させることを主な目的として、キャッシュが必要な様々なシーンを適用することができる.データベース呼び出し、API呼び出し、またはページ参照結果の文字列、オブジェクトなどの直接データを格納するメモリベースのキー値ペアストレージです.
memcachedは、LiveJournal傘下のDanga Interactive社のBrad Fitzpatricをはじめとして開発されたソフトウェアです.現在ではmixi、hatena、Facebook、Vox、LiveJournalなど多くのサービスにおいてWebアプリケーションの拡張性を向上させる重要な要素となっている.
Memcachedは、コードアクセラレータでもデータベースミドルウェアでもない開発ツールです.その設計哲学思想は主に以下の方面に反映されている.
   1. 単純key/valueストレージ:サーバはデータ自体の意味や構造に関心を持たず、シーケンス化可能なデータであればよい.ストレージ・アイテムは、「キー、有効期限、オプションのフラグおよびデータ」の4つの部分から構成されます.
   2. 機能の実現の半分はクライアントに依存し、半分はサーバ側に基づいている:顧客はストレージ項目をサーバ側に送信し、サービス側からデータを取得し、サーバに接続できない場合に相応の動作を採用する.サービス側はデータの受信、記憶を担当し、データ項目のタイムアウトの期限切れを担当する.
   3. 各サーバ間は互いに無視する:サーバ間でデータ同期を行わない;
   4. O(1)の実行効率
   5. 期限切れデータのクリーンアップ:デフォルトでは、MemcachedはLRUキャッシュであり、事前に予約した時間で期限切れデータを整理します.しかし、実際にはmemcachedはキャッシュされたデータを削除しません.ただし、期限が切れた後、お客様に見られなくなります.またmemcachedは、getコマンドが到着したときにその時間をチェックするだけで、キャッシュを本当に期限通りにクリーンアップすることはありません.
Memcachedは、memcachedのプロトコルに基づいて実装される数少ないコマンドを提供し、サーバ側とのインタラクションを完了します.
ストレージクラスコマンド:set,add,replace,append,prepend
データクラス取得コマンド:get,delete,incr/decr
統計クラスコマンド:stats,stats items,stats slabs,stats sizes
クリーンアップコマンド:flush_all
  2.インストール
memcachedはyumでインストールすることもソースコードをコンパイルしてインストールすることもできますが、ここではyunでインストールします.
[root@node2 ~]# yum install -y memcached

   3.telnetコマンドを使用してmenmcachedの使用をテストする
memcachedは、コマンドラインに基づいてサービスを呼び出したり、サーバのステータスを表示したりするための基本コマンドのセットを提供します.
[root@node2 ~]# telnet 127.0.0.1 11211
add mykey 0 60 12
Hello world!
STORED
get mykey
VALUE mykey 0 12
Hello world!
END
add    :
add keyname flag timeout datasize
get    :
get keyname

    4.memcachedの一般的なオプションの説明:
   -l :プロセスリスニングのアドレスを指定します.
-d:デーモンモードで運転
-u:指定したユーザーでmenmcachedプロセスを実行
-m:データのキャッシュに使用される最大メモリ容量、単位MB、デフォルト64 MB
-c:最大サポートされる同時接続数、デフォルトは1024
-p:傍受TCPポートを指定します.デフォルトは11211です.
-U:傍受するUDPポートを指定します.デフォルトは11211で、0はUDPポートを閉じることを示します.
-t:インバウンド要求を処理するための最大スレッド数はmencachedコンパイル時にサポートスレッドがオンになっている場合にのみ有効です.
-f:slab allocatorを設定してメモリ領域サイズが固定されたブロックを予め割り当てるときに使用する成長因子を定義する
M:メモリが足りない場合、LRUアルゴリズムでスペースを利用するのではなく、エラーメッセージを返します.
-n:最小のslab chuckサイズを指定します.単位バイト
-S:sslを有効にしてユーザ認証を行う
五、MemcachedのPHP拡張をインストールする
1、phpのmemcache拡張をインストールする
[root@node1 ~]# wget http://pecl.php.net/get/memcache-2.2.7.tgz
[root@node1 ~]# tar xf memcache-2.2.7.tgz
[root@node1 ~]# cd memcache-2.2.7
[root@node1 memcache-2.2.7]# /usr/local/php/bin/phpize
[root@node1 memcache-2.2.7]# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
[root@node1 memcache-2.2.7]# make && make install
             
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

   2.menmcache拡張を開く
編集/etc/php.iniファイルに次の項目を追加
extension =/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so

memcacheのロードに成功したことがわかります
wKioL1NdGqOzeTJ4AAGgHyt6wUo418.jpg
   3.テスト
 html       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/>
"; $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/>
"; $get_result = $mem->get('hellokey'); echo "$get_result is from memcached server."; ?>

    wKiom1NdHBigJtutAAF5OoX-H6I369.jpg
テストが成功したことがわかります
   4.memcacheのグラフィックインタフェースのインストール
[root@node1 ~]# cd /usr/local/nginx/html/
[root@node1 html]# wget http://www.junopen.com/memadmin/memadmin-1.0.12.tar.gz
[root@node1 html]# tar xf memadmin-1.0.12.tar.gz
[root@node1 html]# cd memadmin

    wKioL1NdIDyzSBFOAAD76i966L0981.jpg
ユーザー名とパスワードはadminです
   
    wKiom1NdIHaTgNtwAAFeGSSYnMs849.jpg
  wKioL1NdIGCDD4FDAAPnG1zg2Tc545.jpg
これは素晴らしいソフトウェアだと感じていますか?
   5.あつりょくしけん
Concurrency Level:      100
Time taken for tests:   1.965 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      276000 bytes
HTML transferred:       129000 bytes
Requests per second:    508.81 [#/sec] (mean)
Time per request:       196.536 [ms] (mean)
Time per request:       1.965 [ms] (mean, across all concurrent requests)
Transfer rate:          137.14 [Kbytes/sec] received

六、nginxとmemcachedの集合
nginxのデータをmemcacheに置き換えることもでき、以下のように構成されています.
server {
        listen       80;
        server_name  www.wangfeng7399.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
                set $memcached_key $uri;
                memcached_pass     192.168.1.202:11211;
                default_type       text/html;
                error_page         404 @fallback;
        }
        location @fallback {
                proxy_pass http://192.168.1.201;
        }
}