Nginx在LAMP上的扩充

在原来搭建好LAMP的基础上安装nginx

[root@localhost nginx-1.0.15]# yum install libxslt-devel

[root@localhost ~]# tar xf pcre-8.33.tar.gz -C /usr/src/

[root@localhost ~]# cd /usr/src/pcre-8.33/
[root@localhost pcre-8.33]# ./configure && make && make install



[root@localhost nginx-1.0.15]# wget http://nginx.org/download/nginx-1.0.15.tar.gz

[root@localhost nginx-1.0.15]# ./configure --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --user=daemon --group=daemon --with-rtsig_module --with-select_module --with-poll_module --with-ipv6 --with-http_ssl_module --with-http_realip_module  --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_sub_module --with-http_dav_module --with-http_gzip_static_module --with-http_flv_module --with-http_perl_module --with-perl=/usr/bin/perl --http-log-path=/var/log/nginx/access.log --with-pcre --with-pcre=/usr/src/pcre-8.33/  --with-http_stub_status_module

[root@localhost nginx-1.0.15]# make && make install

[root@localhost conf]# vi /usr/local/nginx/conf/nginx.conf



user  daemon;
worker_processes  1;
error_log  /var/log/nginx/error.log  info;
pid        /var/run/nginx/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        charset gb2312;
        access_log  /var/log/nginx/access.log  main;
        location / {
            root   /www;
            index  index.html index.htm;
        }
        error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /www;
        }
       
        location ~ \.php$ {
            root           /www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
            include        fastcgi_params;
        }
      
    }

[root@localhost nginx]# cd sbin/
[root@localhost sbin]# ls
nginx
[root@localhost sbin]# ./nginx 
[root@localhost sbin]# lsof -i:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE NODE NAME
nginx   14359   root    6u  IPv4  21618       TCP *:http (LISTEN)
nginx   14360 daemon    6u  IPv4  21618       TCP *:http (LISTEN)
[root@localhost sbin]# pwd
/usr/local/nginx/sbin




PHP安装

[root@localhost ~]# tar xf /softs/php-5.3.27.tar.bz2 -C /usr/src/

[root@localhost php-5.3.27]# ./configure --disable-ipv6 --with-libxml-dir=/usr --with-openssl=/usr --with-pcre-regex=/usr/local  --with-zlib=/usr --with-bz2=/usr --enable-calendar --with-curl=/usr --with-pcre-dir=/usr/local --enable-ftp --with-openssl-dir=/usr --with-gd=/usr/local --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-zlib-dir=/usr/local --with-xpm-dir=/usr --with-freetype-dir=/usr/local --enable-gd-native-ttf --enable-gd-jis-conv --with-mhash=/usr/local --enable-mbstring --with-mcrypt=/usr/local --with-mysql=/usr/local/mysql --with-mysql-sock=/var/run/mysqld/mysql5.socket --with-mysqli=/usr/local/mysql/bin/mysql_config --with-snmp=/usr --enable-sockets --enable-zip   && make && make install


[root@localhost cgi]# ./php-cgi -a -b 127.0.0.1:9000 -c /usr/local/lib/php.ini &
[2] 9879
[1]   宸叉姝?              ./php-cgi -a -b 127.0.0.1:9000 -c /usr/local/lib/php.ini

[root@localhost cgi]# pwd
/usr/src/php-5.3.27/sapi/cgi

访问 127.0.0.1/index.php

Nginx在LAMP上的扩充_第1张图片


现在只有一个php-cgi进程,当大量的并发请求时,这是不够的。所以我用压力测试软件http_load测试一下

[root@localhost softs]# wget http://icn.me/http_load_tar_gz

[root@localhost http_load-12mar2006]# make && make install

[root@localhost www]# http_load -parallel 100 -seconds 10 url.txt 

http://192.168.254.153/a.php: byte count wrong
http://192.168.254.153/a.php: byte count wrong
http://192.168.254.153/a.php: byte count wrong
http://192.168.254.153/a.php: byte count wrong
http://192.168.254.153/a.php: byte count wrong
30431 fetches, 100 max parallel, 5.06531e+06 bytes, in 10 seconds
166.452 mean bytes/connection
3043.1 fetches/sec, 506531 bytes/sec
msecs/connect: 0.272351 mean, 137.327 max, 0.012 min
msecs/first-response: 17.6569 mean, 3034.86 max, 0.097 min
29934 bad byte counts
HTTP response codes:
  code 200 -- 497
  code 404 -- 29934

当并发数为100时,挂掉了,所以我们需要差生多个php-cgi进程,这里引入一个工具spqwn-fcgi

[root@localhost spawn-fcgi-1.6.3]# wget http://download.lighttpd.net/spawn-fcgi/releases-1.6.x/spawn-fcgi-1.6.3.tar.gz

[root@localhost spawn-fcgi-1.6.3]# tar xf spawn-fcgi-1.6.3.tar.gz 
[root@localhost spawn-fcgi-1.6.3]# cd spawn-fcgi-1.6.3
[root@localhost spawn-fcgi-1.6.3]# ./configure && make && make install

[root@localhost src]# spawn-fcgi -f /usr/local/bin/php
spawn-fcgi: no socket given (use either -p or -s)
[root@localhost src]# spawn-fcgi -f /usr/local/bin/php-cgi -a 127.0.0.1 -u daemon -p 9000 -C 150
spawn-fcgi: child spawned successfully: PID: 11498
[root@localhost src]# ps -e | grep php | wc
    151     604    4832

[root@localhost www]# http_load -parallel 100 -seconds 10 url.txt 
33289 fetches, 100 max parallel, 432757 bytes, in 10 seconds
13 mean bytes/connection
3328.9 fetches/sec, 43275.7 bytes/sec
msecs/connect: 0.0322589 mean, 0.809 max, 0.024 min
msecs/first-response: 29.9192 mean, 117.142 max, 8.778 min
HTTP response codes:
  code 200 -- 33289

现在php就没有死了。





你可能感兴趣的:(nginx,linux,运维)