热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx编译安装与负载压力测试

安装编译器及相关的工具[root@localhostsofts]#yuminstallgccgcc-c++autoconfautomake-y模块依赖性:nginx的一些模块需要第三方库的支持,gzip需要libzip库,rewrite需要pcre库,ssl需要libssl库等,可以使用yum安装来解决这些依赖库。[r

安装编译器及相关的工具

[root@localhost softs]# yum install gcc gcc-c++ autoconf automake -y

模块依赖性:nginx的一些模块需要第三方库的支持,gzip需要libzip库,rewrite需要pcre库,ssl需要libssl库等,可以使用yum安装来解决这些依赖库。

[root@localhost ~]# yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel  -y 

===========>安装过程所需的一些开发包和支持包 

安装pcre-8.33.tar.gz     ======> perl语言兼容正则表达式

[root@localhost pcre-8.33]# ./configure --enable-utf8 --enable-rebuild-chartables --enable-newline-is-any --enable-pcregrep-libz  && make  && make install

安装nginx

[root@localhost nginx-1.5.6]# yum install gd gd-devel libxml2 libxml2-devel 

===========>安装gd,libxml库与开发包

[root@localhost nginx-1.5.6]# ./configure --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --user=nginx --group=nginx --with-rtsig_module --with-select_module --with-poll_module --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/lnmp/pcre-8.33/  --with-http_stub_status_module

[root@localhost nginx-1.5.6]#  make  

[root@localhost nginx-1.5.6]#  make install

修改nginx的配置文件

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

user  nginx;    ####指定nginx的默认用户
worker_processes  1;####启动进程,通常设置成和cpu的数量相等

error_log  /var/log/nginx/error.log;      ####nginx的错误日志存放目录
#error_log  logs/error.log  notice;
error_log  /var/log/nginx/error.log  info;      ####nginx的错误日志级别设置

pid        /var/run/nginx/nginx.pid;####nginx运行进程pid

events {
    worker_connections  1024;              #####单个后台worker process进程的最大并发链接数
}

http {
    include       mime.types;    #######设定mime类型,类型由mime.type文件定义
    default_type  application/octet-stream;
###MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开

    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;      ####sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.

    gzip  on;         #####开启zip压缩

    server {
        listen       80;           server_name  localhost;
        root /www;       ####DocumentRoot
        index  index.html index.htm index.php;      ####支持的索引类型
        charset gb2312;####支持的语言

        location / {                try_files $uri $uri/ /index.php;    

        }

####按顺序检查文件是否存在,返回第一个找到的文件。结尾的斜线表示为文件夹 -$uri/。如果所有的文件都找不到,会进行一个内部重定向到最后一个参数
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            include        fastcgi.conf;
        }

}

[root@localhost conf]# mkdir /www     ####创建相应的目录

[root@localhost conf]# chown nginx.nginx /www/    ####改属组和属主

[root@localhost ~]# mv /usr/local/nginx/html/* /www    ###将nginx默认的index.html移动到自己指定的目录也可自己建

[root@localhost html]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf   #####启动nginx

浏览器访问127.0.0.1

http://127.0.0.1/index.html

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer tonginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

php安装

[root@localhost php-5.5.5]# ./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --disable-pdo --with-curl --disable-debug --enable-pic --disable-rpath --enable-inline-optimization --with-bz2 --with-xml  --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable mbregex --with-mhash --enable-xslt --enable-memcache --enable-zip --with-pcre-regex --with-mysql --enable-gd --enable-opcache=no

make

make install

mariadb-5.5.33a.tar.gz的安装

创建mariadb用户组

[root@localhost mariadb-5.5.33a]# groupadd mariadb
[root@localhost mariadb-5.5.33a]# useradd -s /sbin/nologin -g mariadb mariadb

安装cmake

解压cmake-2.8.11.2.tar.gz后依次执行 ./bootstrap; make; make install

下载安装mariadb

[root@localhost soft]# wget http://mirrors.scie.in/mariadb/mariadb-5.5.33a/kvm-tarbake-jaunty-x86/mariadb-5.5.33a.tar.gz

[root@localhost soft]# ls
mariadb-5.5.33a.tar.gz

[root@localhost soft]# tar xf mariadb-5.5.33a.tar.gz -C /usr/src/lnmp

[root@localhost soft]# yum install  bison  gcc*  ncurses* -y

[root@localhost mariadb-5.5.33a]# mkdir /mariadb  /var/run/maria

[root@localhost mariadb-5.5.33a]# chown -R mariadb.mariadb /mariadb  /var/run/maria

[root@localhost mariadb-5.5.33a]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/maria -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DBUILD_COnFIG=mysql_release -DFEATURE_SET=community -DWITH_EMBEDDED_SERVER=OFF -DMYSQL_UNIX_ADDR=/var/run/maria/mysql.sock -DMYSQL_DATADIR=/mariadb

[root@localhost mariadb-5.5.33a]#  make && make install

[root@localhost log]# /usr/local/maria/scripts/mysql_install_db --user=mariadb  --basedir=/usr/local/maria --datadir=/mariadb
Installing MariaDB/MySQL system tables in '/mariadb' ...
OK
Filling help tables...
OK
初始化数据库成功

yum install mysql -y  ##安装mysql客户端

cp /usr/local/maria/scripts/support-files/mysql.server /etc/init.d/maria

service maria start 

php安装

[root@localhost softs]# wget http://ar2.php.net/distributions/php-5.3.27.tar.bz2

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

[root@localhost softs]#  cd /usr/src/lnmp

[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 --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/maria --with-mysql-sock=/var/run/maria/maria.sock --with-mysqli=/usr/local/maria/bin/mysql_config --with-snmp=/usr --enable-sockets --enable-zip --enable-fpm

[root@localhost softs]#  make && make install 

[root@localhost conf]# cd /usr/local/php/etc/
[root@localhost etc]# ls
pear.conf   php-fpm.conf.default
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf

 [root@localhost etc]#  vi /usr/local/webserver/php/etc/php-fpm.conf
去掉以下四行的注释,并自己修改值:
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
启动php

[root@localhost etc]# /usr/local/php/sbin/php-fpm

查看一下nginx.conf的配置,然后启动nginx

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;
#error_log  logs/error.log  notice;
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;
        root /www;
        index  index.html index.htm index.php;
        charset gb2312;
        access_log  /var/log/nginx/access.log  main;
        location / {
                try_files $uri $uri/ /index.php;
        }
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;

    include        fastcgi.conf;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
[root@localhost etc]# /usr/local/nginx/sbin/nginx  -c /usr/local/nginx/conf/nginx.conf

[root@localhost etc]# lsof -i:80
COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME
nginx   3411  root    6u  IPv4 342798       TCP *:http (LISTEN)
nginx   3412 nginx    6u  IPv4 342798       TCP *:http (LISTEN)


######################


webbench最多可以模拟3万个并发连接去测试网站的负载能力

下载webbench-1.5.tar.bz2

[root@localhost softs]# tar xf webbench-1.5.tar.bz2

[root@localhost softs]# cd webbench-1.5/

[root@localhost softs]# make && make install

压力测试

[root@localhost www]# webbench -c 3000 -t 10 http://127.0.0.1/index.html
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/index.html
3000 clients, running 10 sec.
Speed=1726008 pages/min, 24739128 bytes/sec.
Requests: 287665 susceed, 3 failed.

------------------------------------------------------------------------------

[root@localhost www]# webbench -c 3000 -t 10 http://127.0.0.1/1.jpg
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/1.jpg
3000 clients, running 10 sec.

Speed=1670262 pages/min, -212381851 bytes/sec.
Requests: 278376 susceed, 1 failed.


推荐阅读
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文详细介绍了在XAMPP环境中如何修改Apache和MySQL的默认端口号,并确保WordPress能够正常访问。同时,提供了针对Go语言社区和Golang开发者的相关建议。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • Python3 中使用 lxml 模块解析 XPath 数据详解
    XPath 是一种用于在 XML 文档中查找信息的路径语言,同样适用于 HTML 文件的搜索。本文将详细介绍如何利用 Python 的 lxml 模块通过 XPath 技术高效地解析和抓取网页数据。 ... [详细]
  • 近期我们开发了一款包含天气预报功能的万年历应用,为了满足这一需求,团队花费数日时间精心打造并测试了一个稳定可靠的天气API接口,现正式对外开放。 ... [详细]
  • Servlet过滤器入门:实现与配置
    本文介绍如何在Java Web应用中实现和配置Servlet过滤器,通过实现`javax.servlet.Filter`接口来创建过滤器,并详细说明其在web.xml文件中的配置方法。 ... [详细]
  • 本文将详细介绍如何安装和使用 CactiEZ 的中文版本,帮助那些对英文界面不太熟悉的用户轻松掌握这一强大的网络监控工具。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 本文探讨了在多种编程语言中实现Hello World输出的方法,从经典的C语言到现代的JavaScript,每种语言都有其独特的表达方式。 ... [详细]
author-avatar
无心小象
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有