IT技术互动交流平台

编译安装LNMMP及性能监控

作者:jinlinger  发布日期:2014-04-28 08:42:21
本文大纲简介

特点

拓扑图

安装Nginx安装Mariadb安装Php+Xcache安装Mamecached性能监控一、简介Nginx(发音同engine x)是一款由俄罗斯程序员Igor Sysoev所开发轻量级的网页服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。起初是供俄国大型的门户网站及搜索引擎Rambler(俄语:Рамблер)使用。此软件BSD-like协议下发行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中运行。二、特点Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。
  • 可大量平行处理Nginx在官方测试的结果中,能够支持五万个平行连接,而在实际的运作中,是可以支持二万至四万个平行链接。
    • nginx 的模块整体采用模块化设计是nginx的一个重大特点,甚至http服务器核心功能也是一个模块。要注意的是:nginx的模块是静态的,添加和删除模块都要对nginx进行重新编译,这一点与Apache的动态模块完全不同。
      • 与PHP的集成自PHP-5.3.3起,PHP-FPM加入到了PHP核心,编译时加上--enable-fpm即可提供支持。 PHP-FPM以守护进程在后台运行,Nginx响应请求后,自行处理静态请求,PHP请求则经过fastcgi_pass交由PHP-FPM处理,处理完毕后返回。 Nginx和PHP-FPM的组合,是一种稳定、高效的PHP运行方式,效率要比传统的Apache和mod_php高出不少。 PHP-FPM不支持Windows平台,由于没有fastcgi进程管理器管理php-cgi.exe,因此一旦php-cgi.exe崩溃退出,前端将失去响应,这时Nginx会返回"你正在访问的页面暂时不可用,请稍后再试"。的错误信息。 因此在Windows上用Nginx和php-cgi.exe组合来运行PHP的方式并不可靠,稳定性有待提高。---------------------以上知识来自维知百科----------------------------------------

        三、拓扑图

        QTlCU3JzMzUwLmJtcA==" src="http://www.it165.net/uploadfile/files/2014/0428/20140428084239100.bmp" title="123.bmp" />

        四、安装 Nginx

        1、系统环境

        OS :Centos6.5 x86_64

        Nginx: nginx-1.4.7.tar.g

        己安装的包组

         

        # yum groupinstall "Development Tools" "Server Platform Deveopment" -y
        # yum install openssl-devel pcre-devel -y

        2、安装过程

        • 添加运行nginx程序的用户

           

          root@essun download]# groupadd -r nginx
          root@essun download]# useradd -r -g nginx nginx
          • 解压并安装nginx

             

            [root@essun download]# ls
               nginx-1.4.7       Discuz_X3.1_SC_UTF8.zip  nginx-1.4.7.tar.gz
            [root@essun download]# cd nginx-1.4.7
            [root@essun nginx-1.4.7]# ./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/   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi   --http-scgi-temp-path=/var/tmp/nginx/scgi
            [root@essun nginx-1.4.7]# make && make install
            • 注解:

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

              PID文件存放的位置

              --lock-path=/var/lock/nginx.lock

              锁文件位置

              --user=nginx

              运行程序的用户

              --group=nginx

              运行程序的组

              --with-http_ssl_module

              启用SSL认证模块

              --with-http_flv_module

              启用流媒体模块

              --with-http_gzip_static_module

              启用静态页面压缩

              --http-client-body-temp-path=/var/tmp/nginx/client/

              HTTP包体存放的临时目录

              --http-proxy-temp-path=/var/tmp/nginx/proxy/

              定义从后端服务器接收的临时文件的存放路径,可以为临时文件路径定义至多三层子目录的目录树

              --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/

              接收到FastCGI服务器数据,临时存放于本地某目录

              • 为nginx 添加启动脚本

                 

                [root@essun nginx-1.4.7]#vim  /etc/rc.d/init.d/nginx
                #!/bin/sh
                #
                # nginx - this script starts and stops the nginx daemon
                #
                # chkconfig:   - 85 15
                # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
                #               proxy and IMAP/POP3 proxy server
                # processname: nginx
                # config:      /etc/nginx/nginx.conf
                # config:      /etc/sysconfig/nginx
                # pidfile:     /var/run/nginx.pid
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                # Source function library.
                . /etc/rc.d/init.d/functions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                # Source networking configuration.
                . /etc/sysconfig/network
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                # Check that networking is up.
                [ "$NETWORKING" = "no" ] && exit 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                nginx="/usr/sbin/nginx"
                prog=$(basename $nginx)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                NGINX_CONF_FILE="/etc/nginx/nginx.conf"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                lockfile=/var/lock/subsys/nginx
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                make_dirs() {
                   # make required directories
                   user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
                   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
                   for opt in $options; do
                       if [ `echo $opt | grep '.*-temp-path'` ]; then
                           value=`echo $opt | cut -d "=" -f 2`
                           if [ ! -d "$value" ]; then
                               # echo "creating" $value
                               mkdir -p $value && chown -R $user $value
                           fi
                       fi
                   done
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                start() {
                    [ -x $nginx ] || exit 5
                    [ -f $NGINX_CONF_FILE ] || exit 6
                    make_dirs
                    echo -n $"Starting $prog: "
                    daemon $nginx -c $NGINX_CONF_FILE
                    retval=$?
                    echo
                    [ $retval -eq 0 ] && touch $lockfile
                    return $retval
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                stop() {
                    echo -n $"Stopping $prog: "
                    killproc $prog -QUIT
                    retval=$?
                    echo
                    [ $retval -eq 0 ] && rm -f $lockfile
                    return $retval
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                restart() {
                    configtest || return $?
                    stop
                    sleep 1
                    start
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                reload() {
                    configtest || return $?
                    echo -n $"Reloading $prog: "
                    killproc $nginx -HUP
                    RETVAL=$?
                    echo
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                force_reload() {
                    restart
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                configtest() {
                  $nginx -t -c $NGINX_CONF_FILE
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                rh_status() {
                    status $prog
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                rh_status_q() {
                    rh_status >/dev/null 2>&1
                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                case "$1" in
                    start)
                        rh_status_q && exit 0
                        $1
                        ;;
                    stop)
                        rh_status_q || exit 0
                        $1
                        ;;
                    restart|configtest)
                        $1
                        ;;
                    reload)
                        rh_status_q || exit 7
                        $1
                        ;;
                    force-reload)
                        force_reload
                        ;;
                    status)
                        rh_status
                        ;;
                    condrestart|try-restart)
                        rh_status_q || exit 0
                            ;;
                    *)
                        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
                        exit 2
                esac
                • 加入开机启动列表

                   

                   

                  #chomd +x /etc/rc.d/init.d/nginx
                  #  chmod +x /etc/rc.d/init.d/nginx
                  #  chkconfig --add nginx
                  #  chkconfig nginx on
                  # chkconfig --list |grep nginx
                  nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off
                  • 启动服务并测试

                     

                    [root@essun nginx-1.4.7]# service nginx start
                    Starting nginx:                                            [  OK  ]
                    [root@essun nginx-1.4.7]# curl -I  http://192.168.1.111
                    HTTP/1.1 200 OK
                    Server: nginx/1.4.7
                    Date: Sun, 27 Apr 2014 00:04:42 GMT
                    Content-Type: text/html
                    Content-Length: 612
                    Last-Modified: Sun, 27 Apr 2014 00:04:21 GMT
                    Connection: keep-alive
                    ETag: "535c4985-264"
                    Accept-Ranges: bytes

                    五、编译mariadb 10

                    1、系统环境

                    • OS :Centos6.5 x86_64

                      mariadb:mariadb-10.0.10

                      己安装的包组

                       

                      # yum groupinstall "Development Tools" "Server Platform Deveopment" -y
                      #yum install -y cmake

                      2、安装过程

                      • 添加运行mariadb的用户

                        #groupadd -r mysql
                        #useradd -r -g mysql mysql
                        • 解压并安装

                           

                           

                          [root@essun download]# ls
                          [root@essun download]#cd /download/mariadb-10.0.10
                          mariadb-10.0.10  mariadb-10.0.10.tar.gz
                          [root@essun mariadb-10.0.10]#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mari -DMYSQL_DATADIR=/mariadb/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
                          [root@essun mariadb-10.0.10]# make && make install
                          • 建立数据目录

                            #mkdir -p /mariadb/data
                            #chown -R mysql.mysql /mariadb/
                            • 更改安装目录的权限

                               

                              #cd /usr/local/
                              #chown -R mysql.mysql mari/
                              • 添加服务启动脚本

                                [root@essun mariadb-10.0.10]# cd /usr/local/mari/
                                [root@essun mari]# cp support-files/mysql.server /etc/rc.d/init.d/mari
                                [root@essun mari]# chmod +x /etc/rc.d/init.d/mari
                                [root@essun mari]# chkconfig --add mari
                                [root@essun mari]# chkconfig mari on
                                [root@essun mari]# chkconfig --list |grep mari
                                mari            0:off   1:off   2:on    3:on    4:on    5:on    6:off
                                • 修改配置文件

                                   

                                  [root@essun mari]# cp support-files/my-large.cnf /etc/my.cnf
                                  [root@essun mari]# vim /etc/my.cnf
                                  [root@essun mari]# grep -v "#" /etc/my.cnf |grep -v "^$"
                                  [client]
                                  port        = 3306
                                  socket      = /tmp/mysql.sock
                                  [mysqld]
                                  port        = 3306
                                  socket      = /tmp/mysql.sock
                                  skip-external-locking
                                  key_buffer_size = 256M
                                  max_allowed_packet = 1M
                                  table_open_cache = 256
                                  sort_buffer_size = 1M
                                  read_buffer_size = 1M
                                  read_rnd_buffer_size = 4M
                                  myisam_sort_buffer_size = 64M
                                  thread_cache_size = 8
                                  query_cache_size= 16M
                                  thread_concurrency = 4
                                  datadir=/mariadb/data
                                  log-bin=mysql-bin
                                  binlog_format=mixed
                                  server-id   = 1
                                  [mysqldump]
                                  quick
                                  max_allowed_packet = 16M
                                  [mysql]
                                  no-auto-rehash
                                  [myisamchk]
                                  key_buffer_size = 128M
                                  sort_buffer_size = 128M
                                  read_buffer = 2M
                                  write_buffer = 2M
                                  [mysqlhotcopy]
                                  interactive-timeout
                                  • 初始化数据库

                                    # scripts/mysql_install_db --user=mysql --datadir=/mariadb/data/
                                    • 更新环境变量、帮助手册、库文件

                                       

                                      #echo "export PATH=/usr/local/mari/bin:$PATH" >/etc/profile.d/mysql.sh
                                      #source /etc/profile.d/mysql.sh
                                      #echo "MANPATH /usr/local/mari/man" >> /etc/man.config
                                      #ln -s lib /usr/include/mysql
                                      • 启动服务

                                        [root@essun mari]# service mari start
                                        Starting MySQL....................                         [  OK  ]
                                        [root@essun mari]# mysql
                                        Welcome to the MariaDB monitor.  Commands end with ; or \g.
                                        Your MariaDB connection id is 4
                                        Server version: 10.0.10-MariaDB-log Source distribution
                                        Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
                                        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
                                        MariaDB [(none)]>
                                        • 添加一个php测试用户

                                           

                                          MariaDB [(none)]> grant all on *.* to 'root'@'192.168.1.%' identified by 'mari';

                                          六、安装Php+Xcache

                                           

                                          1、系统环境

                                          • OS :Centos6.5 x86_64h

                                            php:php-5.4.26

                                            己安装的包组

                                             

                                             

                                            # yum groupinstall "Development Tools" "Server Platform Deveopment" -y
                                            # yum install bzip2-devel -y

                                            2、安装过程

                                            • 解决依赖关系

                                              [root@essun download]#wget http://xmlsoft.org/sources/libxml2-2.9.0.tar.gz
                                              [root@essun download]# tar xf libxml2-2.9.0.tar.gz
                                              [root@essun download]#  cd libxml2-2.9.0
                                              [root@essun libxml2-2.9.0]#  ./configure --prefix=/usr/local/libxml
                                              [root@essun libxml2-2.9.0]# make && make install
                                              [root@essun download]# wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz
                                              [root@essun download]# tar xf libmcrypt-2.5.7.tar.gz
                                              [root@essun download]#  cd libmcrypt-2.5.7
                                              [root@essun libmcrypt-2.5.7]#  ./configure
                                              [root@essun libmcrypt-2.5.7]# make && make install
                                              • 解压并安装php

                                                 

                                                [root@essun download]# wget http://cn2.php.net/distributions/php-5.4.26.tar.bz2
                                                [root@essun download]# tar php-5.4.26.tar.bz2
                                                [root@essun download]#  tar xf php-5.4.26.tar.bz2
                                                [root@essun download]# cd php-5.4.26
                                                [root@essun php-5.4.26]# ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-openssl  --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd  --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr/local/libxml --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
                                                [root@essun php-5.4.26]#make && make install
                                                • 添加启动php-fpm服务脚本

                                                  [root@essun php-5.4.26]# cp php.ini-production /etc/php.ini
                                                  [root@essun php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
                                                  [root@essun php-5.4.26]# chmod +x /etc/rc.d/init.d/php-fpm
                                                  [root@essun php-5.4.26]# chkconfig --add php-fpm
                                                  [root@essun php-5.4.26]#  chkconfig --list |grep php-fpm
                                                  php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off
                                                  • 编辑配置文件

                                                     

                                                    #cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
                                                    #vim /usr/local/php/etc/php-fpm.conf
                                                    [root@essun php-5.4.26]# grep -v "^;" /usr/local/php/etc/php-fpm.conf |grep -v "^$"
                                                    [global]
                                                    pid = /usr/local/php/var/run/php-fpm.pid
                                                    error_log = log/php-fpm.log
                                                    process.max = 128
                                                    [www]
                                                    user = nobody
                                                    group = nobody
                                                    listen = 192.168.1.107:9000
                                                    listen.backlog = 128
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
                                                    pm = dynamic
                                                    pm.max_children = 50
                                                    pm.start_servers = 5
                                                    pm.min_spare_servers = 2
                                                    pm.max_spare_servers = 6
                                                    • 启动php-fpm服务

                                                       

                                                       

                                                      [root@essun php-5.4.26]# service php-fpm stop
                                                      Gracefully shutting down php-fpm . done
                                                      [root@essun php-5.4.26]# service php-fpm start
                                                      Starting php-fpm  done
                                                      [root@essun php-5.4.26]# ss -tnl |grep 9000
                                                      LISTEN     0      128           192.168.1.107:9000                     *:*
                                                      • 安装Xcache

                                                         

                                                        [root@essun download]# wget http://xcache.lighttpd.net/pub/Releases/3.1.0/xcache-3.1.0.tar.bz2
                                                        [root@essun download]#  tar xf xcache-3.1.0.tar.bz2
                                                        [root@essun download]# cd xcache-3.1.0
                                                        [root@essun xcache-3.1.0]#  /usr/local/php/bin/phpize
                                                        [root@essun xcache-3.1.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
                                                        [root@essun xcache-3.1.0]# make && make install
                                                        #将最后一行生成的类似“/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/”复制到后面的xcache.ini文件中
                                                        [root@essun xcache-3.1.0]# mkdir /etc/php.d
                                                        [root@essun xcache-3.1.0]#  cp xcache.ini /etc/php.d/
                                                        [root@essun xcache-3.1.0]# vim /etc/php.d/xcache.ini
                                                        [xcache-common]
                                                        ;; non-Windows example:
                                                        extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
                                                        #如果有多个"extension =",请将复制的记录放在第一条!
                                                        • 修改nginx配置文件,提供php代理

                                                          #vim /etc/nginx/nginx.conf
                                                          [root@essun html]# grep -v "#" /etc/nginx/nginx.conf |grep -v "^$"
                                                          worker_processes  1;
                                                          error_log  logs/error.log  notice;
                                                          events {
                                                              worker_connections  1024;
                                                          }
                                                          http {
                                                              include       mime.types;
                                                              default_type  application/octet-stream;
                                                              sendfile        on;
                                                              keepalive_timeout  65;
                                                              server {
                                                                  listen       80;
                                                                  server_name  localhost;
                                                                  location / {
                                                                      root   html;
                                                                      index  index.php  index.html index.htm;
                                                                  }
                                                                  error_page  404              /404.html;
                                                                  location = /404.html {
                                                                      root   html;
                                                                  }
                                                                  error_page   500 502 503 504  /50x.html;
                                                                  location = /50x.html {
                                                                      root   html;
                                                                  }
                                                                  location ~ \.php$ {
                                                                      root           html;
                                                                      fastcgi_pass   192.168.1.107:9000;
                                                                      fastcgi_index  index.php;
                                                                      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                                                                      include        fastcgi_params;
                                                                   }
                                                              }
                                                          }
                                                          • 创建php站点目录

                                                            #groupadd -g nginx
                                                            #useradd -r -g nginx nginx
                                                            #mkdir -p /usr/html
                                                            #chown -R nginx.nginx /usr/html
                                                            #vim /usr/html/index.php
                                                            #cat /usr/html/index.php
                                                            <?php
                                                                phpinfo();
                                                            ?>
                                                            • 重启php-fpm服务,测试xcache是否启用成功

                                                               

                                                              #service php-fpm restart

                                                               

                                                              wKioL1NcW2fhRSKBAAKBo3OStyE165.jpg

                                                              • 测试与mariadb的连接

                                                                #vim /usr/html/index.php
                                                                #cat /usr/html/index.php
                                                                <?php
                                                                     $link = mysql_connect('192.168.1.108','root','mari');
                                                                     if ($link)
                                                                       echo "Success...";
                                                                     else
                                                                       echo "Failure...";
                                                                     mysql_close();
                                                                   ?>

                                                                wKiom1NcW17Tz-M_AAB6qc6X7zM687.jpg

                                                                • 下载wordpress

                                                                  [root@essun download]# http://cn.wordpress.org/wordpress-3.9-zh_CN.tar.gz
                                                                  • 解压并安装

                                                                    [root@essun download]#tar xf wordpress-3.9-zh_CN.tar.gz -C /usr/html/
                                                                    [root@essun download]#cd /usr/html/wordpress
                                                                    [root@essun wordpress]# cp wp-config-sample.php wp-config.php
                                                                    [root@essun wordpress]# vim wp-config.php
                                                                    [root@essun wordpress]#cat wp-config.php
                                                                    <?php
                                                                    /**
                                                                     * WordPress基础配置文件。
                                                                     *
                                                                     * 本文件包含以下配置选项:MySQL设置、数据库表名前缀、密钥、
                                                                     * WordPress语言设定以及ABSPATH。如需更多信息,请访问
                                                                     * {@link http://codex.wordpress.org/zh-cn:%E7%BC%96%E8%BE%91_wp-config.php
                                                                     * 编辑wp-config.php}Codex页面。MySQL设置具体信息请咨询您的空间提供商。
                                                                     *
                                                                     * 这个文件被安装程序用于自动生成wp-config.php配置文件,
                                                                     * 您可以手动复制这个文件,并重命名为“wp-config.php”,然后填入相关信息。
                                                                     *
                                                                     * @package WordPress
                                                                     */
                                                                    // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
                                                                    /** WordPress数据库的名称 */
                                                                    define('DB_NAME', 'wordpress');
                                                                    /** MySQL数据库用户名 */
                                                                    define('DB_USER', 'root');
                                                                    /** MySQL数据库密码 */
                                                                    define('DB_PASSWORD', 'mari');
                                                                    /** MySQL主机 */
                                                                    define('DB_HOST', '192.168.1.108');
                                                                    ......省略中........

                                                                    注:

                                                                    1、wordpress在192.168.1.108的数据库中事先己建立。

                                                                    2、最好将此站点的所有文件同时拷贝到nginx中的站点目录中

                                                                    • 测试

                                                                      wKioL1Ncfpaje1BjAAIf7pfJiLE149.jpg

                                                                      • 使用ab再测一下性能

                                                                        [root@essun wordpress]# ab -n 1000 -c 100 http://192.168.1.111/
                                                                        Benchmarking 192.168.1.111 (be patient)
                                                                        Completed 100 requests
                                                                        Completed 200 requests
                                                                        Completed 300 requests
                                                                        Completed 400 requests
                                                                        Completed 500 requests
                                                                        Completed 600 requests
                                                                        Completed 700 requests
                                                                        Completed 800 requests
                                                                        Completed 900 requests
                                                                        Completed 1000 requests
                                                                        Finished 1000 requests
                                                                        Server Software:        nginx/1.4.7
                                                                        Server Hostname:        192.168.1.111
                                                                        Server Port:            80
                                                                        Document Path:          /
                                                                        Document Length:        7970 bytes
                                                                        Concurrency Level:      100
                                                                        Time taken for tests:   279.615 seconds
                                                                        Complete requests:      1000
                                                                        Failed requests:        201
                                                                           (Connect: 0, Receive: 0, Length: 201, Exceptions: 0)
                                                                        Write errors:           0
                                                                        Non-2xx responses:      201
                                                                        Total transferred:      6601361 bytes
                                                                        HTML transferred:       6404612 bytes
                                                                        Requests per second:    3.58 [#/sec] (mean)
                                                                        Time per request:       27961.471 [ms] (mean)
                                                                        Time per request:       279.615 [ms] (mean, across all concurrent requests)
                                                                        Transfer rate:          23.06 [Kbytes/sec] received
                                                                        Connection Times (ms)
                                                                                      min  mean[+/-sd] median   max
                                                                        Connect:        0    1   4.9      0      39
                                                                        Processing:   559 27578 20218.7  14209   65345
                                                                        Waiting:      559 27564 20219.3  14180   65345
                                                                        Total:        597 27580 20218.1  14209   65345
                                                                        Percentage of the requests served within a certain time (ms)
                                                                          50%  14209
                                                                          66%  28881
                                                                          75%  52357
                                                                          80%  60001
                                                                          90%  60010
                                                                          95%  60018
                                                                          98%  60050
                                                                          99%  60057
                                                                         100%  65345 (longest request)
                                                                        • 七、安装memcached

                                                                           

                                                                          1、系统环境

                                                                          OS :Centos6.5 x86_64

                                                                          memcached:memcached-1.4.17

                                                                          己安装的包组

                                                                           

                                                                          # yum groupinstall "Development Tools" "Server Platform Deveopment" -y
                                                                          #yum install -y libevent-devel

                                                                          2、安装过程

                                                                          • 下载memcached

                                                                            [root@slave download]# wget http://www.memcached.org/files/memcached-1.4.17.tar.gz
                                                                            • 解压并安装

                                                                               

                                                                              [root@slave download]# tar xf memcached-1.4.17.tar.gz
                                                                              [root@slave download]# cd memcached-1.4.17
                                                                              [root@slave memcached-1.4.17]# ls
                                                                              aclocal.m4    COPYING      memcached_dtrace.d  solaris_priv.c
                                                                              assoc.c       daemon.c     memcached.h         stats.c
                                                                              assoc.h       depcomp      memcached.spec      stats.h
                                                                              AUTHORS       doc          missing             t
                                                                              cache.c       hash.c       NEWS                testapp.c
                                                                              cache.h       hash.h       protocol_binary.h   thread.c
                                                                              ChangeLog     install-sh   README.md           timedrun.c
                                                                              compile       items.c      sasl_defs.c         trace.h
                                                                              config.guess  items.h      sasl_defs.h         util.c
                                                                              config.h.in   m4           scripts             util.h
                                                                              config.sub    Makefile.am  sizes.c             version.m4
                                                                              configure     Makefile.in  slabs.c
                                                                              configure.ac  memcached.c  slabs.h
                                                                              [root@slave memcached-1.4.17]# ./configure --prefix=/usr/local/memcached
                                                                              [root@slave memcached-1.4.17]#make && make install
                                                                              • 更新二进制文件、帮助手册、库文件

                                                                                 

                                                                                [root@slave memcached]# echo "export PATH=/usr/local/memcached/bin:$PATH" > /etc/profile.d/memcache.sh
                                                                                [root@slave memcached]# cat /etc/profile.d/memcache.sh
                                                                                export PATH=/usr/local/memcached/bin:/usr/local/mysql/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
                                                                                [root@slave memcached]# . /etc/profile.d/memcache.sh
                                                                                [root@slave memcached]# mem
                                                                                memcached  memhog
                                                                                [root@slave memcached]# echo "MANPATH /usr/local/memcached/share/man" >> /etc/man.config
                                                                                [root@slave memcached]# ln -s include/memcached /usr/include/memcache

                                                                                Memcached启动参数说明:

                                                                                -d 选项是启动一个守护进程,-m 是分配给Memcache使用的内存数量,单位是MB,默认64MB-M return error on memory exhausted (rather than removing items)-u 是运行Memcache的用户,如果当前为root 的话,需要使用此参数指定用户。-l 是监听的服务器IP地址,默认为所有网卡。-p 是设置Memcache的TCP监听的端口,最好是1024以上的端口-c 选项是最大运行的并发连接数,默认是1024-P 是设置保存Memcache的pid文件-f <factor> chunk size growth factor (default: 1.25)

                                                                                • 启动memcached

                                                                                  #useradd -r memcached
                                                                                  #memcached -u memcached

                                                                                  注:

                                                                                  此处是前台运行。

                                                                                   

                                                                                   

                                                                                  • 为php安装扩展memcache模

                                                                                    [root@essun download]# wget http://pecl.php.net/get/memcache-2.2.7.tgz
                                                                                    [root@essun download]# tar xf memcache-2.2.7.tgz
                                                                                    [root@essun download]# cd memcache-2.2.7
                                                                                    [root@essun memcache-2.2.7]# /usr/local/php/bin/phpize
                                                                                    Configuring for:
                                                                                    PHP Api Version:         20100412
                                                                                    Zend Module Api No:      20100525
                                                                                    Zend Extension Api No:   220100525
                                                                                    [root@essun memcache-2.2.7]#  ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
                                                                                    [root@essun memcache-2.2.7]# make && make install
                                                                                    .......省略中........
                                                                                    Build complete.
                                                                                    Don't forget to run 'make test'.
                                                                                    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

                                                                                    安装完成的时候会生成一个memcache.so模块的路径,记得把这个路径记下来写到php的配置文件中,编辑/etc/php.ini,在“动态模块”相关的位置添加如下一行来载入memcache扩展:extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so然后就可以写一个测试页面,来测试php是否能与后端缓存服务器联系了.

                                                                                    • 测试页面

                                                                                      #vim /usr/html/wordpress/testmemcached.php
                                                                                      <?php
                                                                                      $mem = new memcache;
                                                                                      $mem->connect("192.168.1.109", 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.";
                                                                                      ?>
                                                                                      ~
                                                                                      • 最后再看一次Nginx的配置文件

                                                                                        worker_processes  1;
                                                                                        error_log  logs/error.log  notice;
                                                                                        events {
                                                                                            worker_connections  1024;
                                                                                        }
                                                                                        http {
                                                                                            include       mime.types;
                                                                                            default_type  application/octet-stream;
                                                                                            sendfile        on;
                                                                                            keepalive_timeout  65;
                                                                                            server {
                                                                                                listen       80;
                                                                                                server_name  localhost;
                                                                                            index index.php;
                                                                                                location / {
                                                                                                    root   html;
                                                                                                    index  index.php  index.html index.htm;
                                                                                                }
                                                                                                error_page  404              /404.html;
                                                                                                location = /404.html {
                                                                                                    root   html;
                                                                                                }
                                                                                                error_page   500 502 503 504  /50x.html;
                                                                                                location = /50x.html {
                                                                                                    root   html;
                                                                                                }
                                                                                                location ~ \.php$ {
                                                                                                    root           /usr/html;
                                                                                                    fastcgi_pass   192.168.1.107:9000;
                                                                                                    fastcgi_index  index.php;
                                                                                                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                                                                                                   include        fastcgi_params;
                                                                                            }
                                                                                                location ~ \.php$ {
                                                                                                    root           /usr/html;
                                                                                                    fastcgi_pass   192.168.1.107:9000;
                                                                                                    fastcgi_index  index.php;
                                                                                                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                                                                                                   include        fastcgi_params;
                                                                                                    error_page  404              /404.html;
                                                                                                 }
                                                                                            }
                                                                                        }
                                                                                        • 测试结果

                                                                                          wKioL1NcoNjyaF0UAADJeQVRXKY949.jpg

                                                                                          • 在Mamcached服务器上查看一下此条请求是否记录了

                                                                                             

                                                                                            wKiom1NcpOHBL49qAAD28bmVJJw806.jpg

                                                                                            八、性能监控

                                                                                            • 安装memadin

                                                                                               

                                                                                              [root@essun download]# http://www.junopen.com/memadmin/memadmin-1.0.12.tar.gz
                                                                                              [root@essun download]# tar xf memadmin-1.0.12.tar.gz
                                                                                              [root@essun download]# cd memadmin
                                                                                              [root@essun memadmin]# ls
                                                                                              apps        images   index.php  LICENSE.txt  views
                                                                                              config.php  include  langs      README.txt
                                                                                              [root@essun download]# mv memadmin /usr/html/

                                                                                              此memadin目录也要放在nginx的站点目录下

                                                                                              • 配置并测试

                                                                                                wKiom1NcreCBqBl7AAH3mpcl4wc441.jpg

                                                                                                • 点“开始管理”

                                                                                                  wKioL1NcrwvjmznEAAQ5ONr-4ko470.jpg

                                                                                                  这样就可以对memcached进行监控了

    Tag标签: LNMMP   性能监控  
    • 专题推荐

    About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
    本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规