LNMMP

一、編譯安裝nginx,依賴libevent API

1、安裝開發環境
yum groupinstall "Development Libraries" "Development Tools"
yum install pcre-devel -y

2、添加nginx的用戶和組
groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx

3、編譯安裝libevent
軟件包:libevent-2.0.16-stable.tar.gz
tar xf libevent-2.0.16-stable.tar.gz
cd libevent-2.0.16-stable
./configure
make && make install
vim /etc/ld.so.conf.d/lib.local.conf
 /usr/local/lib
ldconfig -v | grep libevent

4、編譯安裝nginx
軟件包:nginx-1.0.11.tar.gz
tar xf nginx-1.0.11.tar.gz
cd nginx-1.0.11
./configure \
  --prefix=/usr \
  --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --with-pcre
make && make install

5、爲nginx添加服務腳本,在/etc/init.d/nginx,並啓動
chmod +x /etc/init.d/nginx
chkconfig --add nginx
service nginx start

二、安裝編譯libiconv、libmcrypt、mhash,讓php支持更強的功能

1、編譯安裝libiconv,將系統語言與用戶語言更好的切換,是個庫文件

軟件包:libiconv-1.13.1.tar.gz
tar xf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure
make && make install

2、編譯安裝libmcrypt,用於實現數據加密解密的庫文件

軟件包:libmcrypt-2.5.8.tar.gz
tar xf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
ldconfig -v
cd libltdl
./configure --with-gmetad --enable-gexec --enable-ltdl-install
make && make install
ldconfig -v

3、編譯安裝mhash,計算數據hash算法

軟件包:mhash-0.9.9.9.tar.bz2
tar xf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure
make && make install
ln -sv /usr/local/lib/libmcrypt* /usr/lib/
ln -sv /usr/local/lib/libmhash.* /usr/lib/

三、編譯安裝memcached

1、軟件包:memcached-1.4.10.tar.gz
tar xf memcached-1.4.10.tar.gz
cd memcached-1.4.10
./configure
make && make install

2、添加memcached的服務腳本
vim /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/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 $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

3、chmod +x /etc/init.d/memcached
chkconfig --add memcached
service memcached start
netstat -tnlp查看是否有11211的端口

四、編譯安裝MySQL

軟件包:mysql-5.5.19-linux2.6-i686.tar.gz

tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local
groupadd -r -g 306 mysql
useradd -r -g mysql -u 306 -s /sbin/nologin -M mysql
cd /usr/local
ln -sv mysql-5.5.19-linux2.6-i686 mysql
cd mysql
chown -R mysql:mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
把data作爲數據目錄
chown -R mysql data/

添加服務,並導出庫
cd support-files/
cp my-large.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
vim /etc/ld.so.conf.d/mysqld.conf
 /usr/local/mysql/lib
ldconfig -v

創建頭文件連接,添加PATH變量
ln -sv /usr/local/mysql/include /usr/include/mysql
vim /etc/profile
 PATH=$PATH:/usr/local/mysql/bin
. /etc/profile
用mysql連接看是否成功

五、編譯安裝php

軟件包:php-5.3.6.tar.bz2

tar xf php-5.3.6.tar.bz2
cd php-5.3.6
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --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-iconv-dir=/usr/local
make ZEND_EXTRA_LIBS='-liconv'
make install

啓動fastcgi
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

啓用以下的選項(;表註釋)
vim /usr/local/php/etc/php-fpm.conf
 pm.start_servers = 20
 pm.min_spare_servers = 5
 pm.max_spare_servers = 35

啓用php-fpm
/usr/local/php/sbin/php-fpm
netstat -tnlp查看是否有9000端口

六、讓nginx能利用fastcgi的功能

vim /etc/nginx/nginx.conf
 啓用location ~ \.php$ {
            root           /web/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param 
 ts$fastcgi_script_name;
            include        fastcgi_params;
        }
添加支持php格式的網頁
location / {
            root   /web/html;
            index  index.html index.php index.htm;
        }

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

添加php的測試網頁,測試是否成功
mkdir /web/html -pv
vim /web/html/index.php
 <?php
 phpinfo();
 ?>

service nginx restart

在客戶端測試看是否能打開測試也
http://172.16.6.3/index.php

七、安裝編譯配置memcache

軟件包:memcache-2.2.5.tgz
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

cp /usr/local/php/etc/php.ini /usr/local/php/lib/php.ini

在“動態模塊”相關的位置添加如下一行來載入memcache擴展
vim /usr/local/php/lib/php.ini
 extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so

添加測試頁面,對memcached功能測試
vim /web/html/test.php
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('mykey', 'Hello World', 0, 600);
$val = $mem->get('mykey');
echo "$val is from memcached.";
?>

killall php-fpm
/usr/local/php/sbin/php-fpm
service nginx restart

在客戶端測試:
http://172.16.6.3/test.php
如果有輸出“Hello World is from memcached.”,則表明memcache已經能夠正常工作。

八、編譯安裝libmemcached

使用libmemcached的客戶端工具:

軟件包:libmemcached-1.0.2.tar.gz
tar xf libmemcached-1.0.2.tar.gz
cd libmemcached-1.0.2
./configure
make && make install
ldconfig

客戶端工具:
memcat --servers=127.0.0.1:11211 mykey 遠程管理工具
memping測試服務器是否在線
memslap對服務器做壓力測試
memstat服務器的命中率,緩存的條目等
該工具都可以使用--servers

九、安裝編譯配置xcache,加速php(操作碼)

軟件包:xcache-1.3.2.tar.gz
tar xf xcache-1.3.2.tar.gz
cd xcache-1.3.2
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install

安裝結束時,會出現類似如下幾行
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

cat xcache.ini >> /usr/local/php/lib/php.ini

編輯/usr/local/php/lib/php.ini,添加如下幾行
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xcache.so
zend_extension ts = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xcache.so

用ab壓力測試驗證下效果

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章