热门标签 | 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.


推荐阅读
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了如何解决MyBatis中常见的BindingException错误,提供了多种排查和修复方法,确保Mapper接口与XML文件的正确配置。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文详细介绍超文本标记语言(HTML)的基本概念与语法结构。HTML是构建网页的核心语言,通过标记标签描述页面内容,帮助开发者创建结构化、语义化的Web页面。 ... [详细]
  • Vue 2 中解决页面刷新和按钮跳转导致导航栏样式失效的问题
    本文介绍了如何通过配置路由的 meta 字段,确保 Vue 2 项目中的导航栏在页面刷新或内部按钮跳转时,始终保持正确的 active 样式。具体实现方法包括设置路由的 meta 属性,并在 HTML 模板中动态绑定类名。 ... [详细]
  • 本文探讨了在通过 API 端点调用时,使用猫鼬(Mongoose)的 findOne 方法总是返回 null 的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
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社区 版权所有