澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

全功能编译安装笔记,2稳定版本tcp四层负载安装

2019-07-07 作者:澳门新萄京官方网站   |   浏览(117)

安装Nginx:

centos 6.9 使用yum 安装 Nginx1.12.1

nginx1.10.2(2016.10.18)是最新稳定版,适合线上运行,最新开发版为1.11.8(2016.12.27)
系统版本CentOS6.8 64位,所有依赖都是系统rpm包,由于epel-release的nginx包不是最新的稳定版本所以选择源码包安装nginx通过源码编译安装

--prefix= 指向安装目录 

把之前一直惦记的民间传说性能超Apache N倍的NGINX玩了下。研究 测试前后就是一个下午时间,在此把自己的心得整理了下。

[root@jiufengjing ~]# wget http://nginx.org/download/nginx-1.14.0.tar.gz  ##下载

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

1、安装编译所需工具
  yum groupinstall "Development Tools"
  yum install wget

--sbin-path 指向(执行)程序文件(nginx) 

(最后的备注为介绍NGINX加载PHP原理)

[root@jiufengjing ~]# yum -y install pcre pcre-devel zlib zlib-devel openssl-devel openssl  gcc gcc-c #安装依赖包

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

2、到官网下载最新的源代码(
  cd /usr/local/src
  wget
  tar zxvf nginx-1.10.2.tar.gz

--conf-path= 指向配置文件(nginx.conf) 

Linux操作系统:CentOS6.3 64bit

[root@jiufengjing ~]# useradd -M -s /sbin/nologin nginx ##创建用户

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

3、安装依赖包
  yum install zlib-devel openssl-devel pcre-devel
  zlib: 为nginx提供gzip模块,需要zlib库支持,传输数据打包,省流量(但消耗资源)
  openssl: 为nginx提供ssl功能
  pcre: 为支持地址重写rewrite功能

--error-log-path= 指向错误日志目录 

NGINX:nginx-1.4.0

[root@jiufengjing ~]# tar zxf nginx-1.14.0.tar.gz -C /usr/src/ ##解压

Nginx官网:

4、创建用来运行nginx的用户及组
  groupadd -g 58 www
  useradd -u 58 -g 58 -M www -s /sbin/nologin -g参数为www用户指定了一个组。-M参数保证其不 自动生成home目录。

--pid-path= 指向pid文件(nginx.pid) 

MYSQL:mysql-5.6.10

[root@jiufengjing ~]# cd /usr/src/nginx-1.14.0/

Nginx中文手册:

5、编译源代码
  先使用./configure –help 查看编译帮助:
  我的线上编译参数,默认开启的不用写
  ./configure --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-stream  --with-stream_ssl_module --with-pcre
./configure --help
 
  --help                            print this message
 
  --prefix=PATH                      set installation prefix #Nginx安装的根路径,默认为 /usr/local/nginx。
  --sbin-path=PATH                  set nginx binary pathname #指定nginx二进制文件的路径,默认为PATH/sbin/nginx。
  --modules-path=PATH                set modules path #Perl模块位置
  --conf-path=PATH                  set nginx.conf pathname #设定nginx配置文件地址,默认为PATH/conf/nginx.conf。
  --error-log-path=PATH              set error log pathname #错误文件路径,默认为 PATH/logs/error.log。
  --pid-path=PATH                    set nginx.pid pathname # master进程pid写入的文件位置,通常在var/run下,默认为 PATH/logs/nginx.pid。
  --lock-path=PATH                  set nginx.lock pathname #共享存储器互斥锁文件路径
 
  --user=USER                        set non-privileged user for worker processes #指定程序运行时的非特权用户
  --group=GROUP                      set non-privileged group for worker processes #指定程序运行时的非特权用户组
 
  --build=NAME                      set build name #编译名称
  --builddir=DIR                    set build directory #指向编译目录
 
  --with-select_module              enable select module 允许或不允许开启SELECT模式,如果configure没有找到合适的模式,比如,kqueue(sun os)、epoll(linux kenel 2.6 )、rtsig(实时信号)
  --without-select_module            disable select module 禁用select模块支持
  --with-poll_module                enable poll module 启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)
  --without-poll_module              disable poll module 禁用poll模块支持
 
  --with-threads                    enable thread pool support
 
  --with-file-aio                    enable file AIO support #为freeBSD4.3 和linux2.6.22 系统启用异步io
 
  --with-ipv6                        enable IPv6 support #启用ipv6支持
全功能编译安装笔记,2稳定版本tcp四层负载安装配置讲解。   
#默认禁用的模块
  --with-http_ssl_module            enable ngx_http_ssl_module #使支持https请求,需已安装openssl
  --with-http_v2_module              enable ngx_http_v2_module #启用HTTP V2
  --with-http_realip_module          enable ngx_http_realip_module #此模块支持显示真实来源IP地址,主要用于NGINX做前端负载均衡服务器使用
  --with-http_addition_module        enable ngx_http_addition_module #输出过滤器,使你能够在请求经过一个location前或后时在该location本身添加内容
  --with-http_xslt_module            enable ngx_http_xslt_module #这个模块是一个过滤器,它可以通过XSLT模板转换XML应答
  --with-http_xslt_module=dynamic    enable dynamic ngx_http_xslt_module 
  --with-http_image_filter_module    enable ngx_http_image_filter_module #图像过滤器,在将图像投递到客户之前进行处理(需要libgd库)
  --with-http_image_filter_module=dynamic
                                    enable dynamic ngx_http_image_filter_module 
  --with-http_geoip_module          enable ngx_http_geoip_module #创建基于与MaxMind GeoIP相配的客户端地址
  --with-http_geoip_module=dynamic  enable dynamic ngx_http_geoip_module
  --with-http_sub_module            enable ngx_http_sub_module #这个模块可以能够在nginx的应答中搜索并替换文本
  --with-http_dav_module            enable ngx_http_dav_module #为文件和目录指定权限,限制不同类型的用户对于页面有不同的操作权限
  --with-http_flv_module            enable ngx_http_flv_module #这个模块支持对FLV(flash)文件的拖动播放
  --with-http_mp4_module            enable ngx_http_mp4_module #支持H.264/AAC文件为伪流媒体
  --with-http_gunzip_module          enable ngx_http_gunzip_module #对于不支持gzip编码的客户,该模块用于为客户解压缩预压缩内容
  --with-http_gzip_static_module    enable ngx_http_gzip_static_module #这个模块在一个预压缩文件传送到开启Gzip压缩的客户端之前检查是否已经存在以“.gz”结尾的压缩文件,这样可以防止文件被重复压缩
  --with-http_auth_request_module    enable ngx_http_auth_request_module 
  --with-http_random_index_module    enable ngx_http_random_index_module #从目录中选择一个随机主页
  --with-http_secure_link_module    enable ngx_http_secure_link_module #该模块提供一种机制,它会将一个哈希值链接到一个url中,因此,只有那些使用正确的密码能够计算链接
  --with-http_degradation_module    enable ngx_http_degradation_module #允许在内存不足的情况下返回204或444码
  --with-http_slice_module          enable ngx_http_slice_module 
  --with-http_stub_status_module    enable ngx_http_stub_status_module #取得一些nginx的运行状态,输出的状态信息可使用RRDtool或类似的工具绘制成图
#默认启用的模块
  --without-http_charset_module      disable ngx_http_charset_module #重新编码web页面
  --without-http_gzip_module        disable ngx_http_gzip_module #同-with-http_gzip_static_module功能一样
  --without-http_ssi_module          disable ngx_http_ssi_module #提供在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的
  --without-http_userid_module      disable ngx_http_userid_module #用来处理用来确定客户端后续请求的cookies
  --without-http_access_module      disable ngx_http_access_module #供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址
  --without-http_auth_basic_module  disable ngx_http_auth_basic_module #可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容
  --without-http_autoindex_module    disable ngx_http_autoindex_module #自动生成目录列表,只在ngx_http_index_module模块未找到索引文件时发出请求。
  --without-http_geo_module          disable ngx_http_geo_module #创建一些变量,其值依赖于客户端的IP地址
  --without-http_map_module          disable ngx_http_map_module #使用任意的键/值对设置配置变量
  --without-http_split_clients_module disable ngx_http_split_clients_module #用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等
  --without-http_referer_module      disable ngx_http_referer_module #用来过滤请求,拒绝报头中Referer值不正确的请求
  --without-http_rewrite_module      disable ngx_http_rewrite_module #允许使用正则表达式改变URI,并且根据变量来转向以及选择配置
  --without-http_proxy_module        disable ngx_http_proxy_module #有关代理服务器
  --without-http_fastcgi_module      disable ngx_http_fastcgi_module #允许Nginx 与FastCGI 进程交互,并通过传递参数来控制FastCGI 进程工作。
  --without-http_uwsgi_module        disable ngx_http_uwsgi_module #用来使用uwsgi协议,uWSGI服务器相关
  --without-http_scgi_module        disable ngx_http_scgi_module #用来启用SCGI协议支持,SCGI协议是CGI协议的替代。
  --without-http_memcached_module    disable ngx_http_memcached_module #用来提供简单的缓存,以提高系统效率
  --without-http_limit_conn_module  disable ngx_http_limit_conn_module #允许你对于一个地址进行连接数的限制用一个给定的session或一个特定的事件
  --without-http_limit_req_module    disable ngx_http_limit_req_module #允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件
  --without-http_empty_gif_module    disable ngx_http_empty_gif_module #在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用
  --without-http_browser_module      disable ngx_http_browser_module #用来创建依赖于请求报头的值
  --without-http_upstream_hash_module
                                    disable ngx_http_upstream_hash_module #用于简单的负载均衡
  --without-http_upstream_ip_hash_module
                                    disable ngx_http_upstream_ip_hash_module 
  --without-http_upstream_least_conn_module
                                    disable ngx_http_upstream_least_conn_module 
  --without-http_upstream_keepalive_module
                                    disable ngx_http_upstream_keepalive_module
  --without-http_upstream_zone_module
                                    disable ngx_http_upstream_zone_module
 
  --with-http_perl_module            enable ngx_http_perl_module #这个模块允许nginx使用SSI调用perl或直接执行perl(使用会降低性能)
  --with-http_perl_module=dynamic    enable dynamic ngx_http_perl_module
  --with-perl_modules_path=PATH      set Perl modules path #设定perl模块路径
  --with-perl=PATH                  set perl binary pathname #设定perl库文件路径
 
  --http-log-path=PATH              set http access log pathname #设定access log路径
  --http-client-body-temp-path=PATH  set path to store http client request body temporary files #设定http客户端请求临时文件路径
  --http-proxy-temp-path=PATH        set path to store http proxy temporary files #设定http代理临时文件路径
  --http-fastcgi-temp-path=PATH      set path to store http fastcgi temporary files #设定http fastcgi临时文件路径
  --http-uwsgi-temp-path=PATH        set path to store http uwsgi temporary files #设定http uwsgi临时文件路径
  --http-scgi-temp-path=PATH        set path to store http scgi temporary files #设定http scgi临时文件路径
 
  --without-http                    disable HTTP server #完全禁用http模块,如果只想支持mall,可以使用此项设置
  --without-http-cache              disable HTTP cache #在使用upstream模块时,nginx能够配置本地缓存内容,此选项可禁用缓存
 
  --with-mail                        enable POP3/IMAP4/SMTP proxy module #激活POP3/IMAP4/SMTP代理模块,默认未激活
  --with-mail=dynamic                enable dynamic POP3/IMAP4/SMTP proxy module
  --with-mail_ssl_module            enable ngx_mail_ssl_module #SMTP可以使用SSL/TLS.配置已经定义了HTTP SSL模块,但是不支持客户端证书检测
  --without-mail_pop3_module        disable ngx_mail_pop3_module #启用mail模块后,单独禁用pop3模块
  --without-mail_imap_module        disable ngx_mail_imap_module #启用mail模块后,单独禁用imap模块
  --without-mail_smtp_module        disable ngx_mail_smtp_module #启用mail模块后,单独禁用smtp模块
 
  --with-stream                      enable TCP/UDP proxy module
  --with-stream=dynamic              enable dynamic TCP/UDP proxy module
  --with-stream_ssl_module          enable ngx_stream_ssl_module
  --without-stream_limit_conn_module disable ngx_stream_limit_conn_module
  --without-stream_access_module    disable ngx_stream_access_module
  --without-stream_upstream_hash_module
                                    disable ngx_stream_upstream_hash_module
  --without-stream_upstream_least_conn_module
                                    disable ngx_stream_upstream_least_conn_module
  --without-stream_upstream_zone_module
                                    disable ngx_stream_upstream_zone_module
 
  --with-google_perftools_module    enable ngx_google_perftools_module #调试用,剖析程序性能瓶颈
  --with-cpp_test_module            enable ngx_cpp_test_module
 
  --add-module=PATH                  enable external module #启用外部模块支持
  --add-dynamic-module=PATH          enable dynamic external module
#编译相关的参数
  --with-cc=PATH                    set C compiler pathname #如果想设置一个不在默认path下的c编译器
  --with-cpp=PATH                    set C preprocessor pathname #设置c预处理器的相对路径
  --with-cc-opt=OPTIONS              set additional C compiler options #设置C编译器参数
  --with-ld-opt=OPTIONS              set additional linker options #包含连接库的路径和运行路径
  --with-cpu-opt=CPU                build for the specified CPU, valid values:pentium, pentiumpro, pentium3, pentium4,athlon, opteron, sparc32, sparc64, ppc64 #指定编译的CPU
 
  --without-pcre                    disable PCRE library usage #禁用pcre库
  --with-pcre                        force PCRE library usage #启用pcre库
  --with-pcre=DIR                    set path to PCRE library sources #指向pcre库文件目录
  --with-pcre-opt=OPTIONS            set additional build options for PCRE #在编译时为pcre库设置附加参数
  --with-pcre-jit                    build PCRE with JIT compilation support
 
  --with-md5=DIR                    set path to md5 library sources #指向md5库文件目录
  --with-md5-opt=OPTIONS            set additional build options for md5 #在编译时为md5库设置附加参数
  --with-md5-asm                    use md5 assembler sources #使用md5汇编源
 
  --with-sha1=DIR                    set path to sha1 library sources #指向sha1库目录
  --with-sha1-opt=OPTIONS            set additional build options for sha1 #在编译时为sha1库设置附加参数
  --with-sha1-asm                    use sha1 assembler sources #使用sha1汇编源
 
  --with-zlib=DIR                    set path to zlib library sources #指向zlib库目录
  --with-zlib-opt=OPTIONS            set additional build options for zlib #在编译时为zlib设置附加参数
  --with-zlib-asm=CPU                use zlib assembler sources optimized for the specified CPU, valid values: pentium, pentiumpro #为指定的CPU使用zlib汇编源进行优化
 
  --with-libatomic                  force libatomic_ops library usage # 为原子内存的更新操作的实现提供一个架构
  --with-libatomic=DIR              set path to libatomic_ops library sources #指向libatomic_ops安装目录
 
  --with-openssl=DIR                set path to OpenSSL library sources #指向openssl安装目录
  --with-openssl-opt=OPTIONS        set additional build options for OpenSSL #在编译时为openssl设置附加参数
 
  --with-debug                      enable debug logging #启用debug日志

--lock-path= 指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。) 

PHP:php-5.4.13

[root@jiufengjing nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module  &&make

一、安装前准备

6,编译汇总
Configuration summary

--user= 指定程序运行时的非特权用户 

一.安装开发包(使用默认CENTOS更新源):

&&make install  ##编译安装

1.安装PCRE

  • using system PCRE library
  • using system OpenSSL library
  • md5: using OpenSSL library
  • sha1: using OpenSSL library
  • using system zlib library
    nginx path prefix: "/usr/local/nginx"
    nginx binary file: "/usr/local/nginx/sbin/nginx"
    nginx modules path: "/usr/local/nginx/modules"
    nginx configuration prefix: "/usr/local/nginx/conf"
    nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
    nginx pid file: "/usr/local/nginx/logs/nginx.pid"
    nginx error log file: "/usr/local/nginx/logs/error.log"
    nginx http access log file: "/usr/local/nginx/logs/access.log"
    nginx http client request body temporary files: "client_body_temp"
    nginx http proxy temporary files: "proxy_temp"
    nginx http fastcgi temporary files: "fastcgi_temp"
    nginx http uwsgi temporary files: "uwsgi_temp"
    nginx http scgi temporary files: "scgi_temp"

--group= 指定程序运行时的非特权用户组 

# yum -y install wget gcc-c ncurses-devel cmake make perl

Nginx常用编译选项说明

Nginx 模块必须在编译时就进行选择,目前不支持在运行时进行模块选择。在编译时,可以使用 ./configure --help查看编译帮助,会提供相关的编译选项。需要注意的一点就是大部分编译选项都有默认值,可以指定也可以不指定。另外编译选项一般以 --with开头的都是默认不会编译的,你需要用到什么功能就可以指定其编译选项;另外以 --without开头的选项表示这些模块都是默认会编译的,如果手动指定使用以 --without开头的选项表示你将会关闭此功能模块,慎用。

1)Nginx在编译时,运行期间与路径相关的各种参数

--prefix=PATH                        #指向安装目录

--sbin-path=PATH                     #指向(执行)程序文件(nginx)

--conf-path=PATH                     #指向配置文件(nginx.conf)

--error-log-path=PATH                #指向错误日志目录

--http-log-path=PATH                 #指定访问复制目录

--pid-path=PATH                      #指向pid文件(nginx.pid)

--lock-path=PATH                     #指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)

--builddir=PATH                      #指向编译目录

--http-client-body-temp-path=PATH    #设定http客户端请求临时文件路径

--http-proxy-temp-path=PATH          #设定http代理临时文件路径

--http-fastcgi-temp-path=PATH        #设定http fastcgi临时文件路径

--http-uwsgi-temp-path=PATH          #设定http uwsgi临时文件路径

--http-scgi-temp-path=PATH           #设定http scgi临时文件路径

 

2)一些权限、http、mail及依赖库模块

--user=USER                      #指定程序运行时的非特权用户

--group=USER                     #指定程序运行时的非特权用户组

--with-rtsig_module              #启用rtsig模块支持(实时信号)

--with-file-aio                  #启用file aio支持(一种APL文件传输格式)

--with-ipv6                      #启用ipv6支持

--with-select_module             #启用select模块支持(一种轮询模式,不推荐在高载环境下使用)禁用:--without-select_module

--with-poll_module               #启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)

--with-http_ssl_module           #启用支持https请求,需已安装openssl

--with-http_realip_module        #启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)

--with-http_addition_module      #启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)

--with-http_xslt_module          #启用ngx_http_xslt_module支持(过滤转换XML请求)

--with-http_image_filter_module  #启用支持传输JPEG/GIF/PNG 图片过滤,默认为不启用,gd库要用到

--with-http_sub_module           #启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本)

--with-http_dav_module           #启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)

--with-http_flv_module           #启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)

--with-http_gzip_static_module   #启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)

--with-http_random_index_module  #启用ngx_http_random_index_module支持(从目录中随机挑选一个目录索引)

--with-http_secure_link_module   #启用ngx_http_secure_link_module支持(计算和检查要求所需的安全链接网址)

--with-http_degradation_module   #启用ngx_http_degradation_module支持(允许在内存不足的情况下返回204或444码)

--with-http_stub_status_module   #启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)

--with-http_perl_module          #启用ngx_http_perl_module支持(该模块使nginx可以直接使用perl或通过ssi调用perl)

--with-mail                      #启用POP3/IMAP4/SMTP代理模块支持

--with-mail_ssl_module           #启用ngx_mail_ssl_module支持

--add-module=                    #启用外部模块支持

--with-cpu-opt=                  #指定编译的CPU,可用的值为: pentium,opteron, amd64, sparc32, sparc64, ppc64等

--with-pcre                      #启用pcre库(默认会自动去找rpm包安装的pcre库文件以及模块)

--with-pcre=                     #指向pcre库文件目录(如果是源码安装就需要指定,rpm包安装就不需要指定了)

--with-pcre-opt=                 #在编译时为pcre库设置附加参数

--with-perl_modules_path=        ##设定perl模块路径

--with-perl=                     #设定perl库文件路径

--with-debug                     #启用debug日志

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。

7,编译安装
  编译
  make
  安装
  make install
  加入PATH 
  ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/nginx
  核查版本信息
123456 nginx -V
nginx version: nginx/1.10.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-pcre

--builddir= 指向编译目录 

二.关闭iptables和SELINUX

默认启用的选项(等同于默认启用的模块)

--without-http                   #该模块用于http server功能

--without-http-cache             #该模块用于http cache功能

--without-http_charset_module    #该模块用于重新编码web页面,但只能是一个方向--服务器端到客户端,并且只有一个字节的编码可以被重新编码

--without-http_gzip_module       #该模块同-with-http_gzip_static_module功能一样

--without-http_ssi_module        #该模块提供了一个在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的

--without-http_userid_module     #该模块用来处理用来确定客户端后续请求的cookies

--without-http_access_module     #该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址

--without-http_auth_basic_module #该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容

--without-http_autoindex_module  #该模块用于自动生成目录列表,只在ngx_http_index_module模块未找到索引文件时发出请求

--without-http_geo_module        #该模块用于创建一些变量,其值依赖于客户端的IP地址

--without-http_map_module        #该模块用于使用任意的键/值对设置配置变量

--without-http_referer_module    #该模块用来过滤请求,拒绝报头中Referer值不正确的请求

--without-http_rewrite_module    #该模块允许使用正则表达式改变URI

--without-http_proxy_module      #该模块用于代理服务器

--without-http_fastcgi_module    #该模块允许Nginx与FastCGI进程交互,并通过传递参数来控制FastCGI进程工作,FastCGI一个常驻型的公共网关接口

--without-http_uwsgi_module      #该模块启用uwsgi协议,uWSGI服务器相关

--without-http_scgi_module       #该模块用来启用SCGI协议支持,SCGI协议是CGI协议的替代,它是一种应用程序与HTTP服务接口标准

--without-http_memcached_module  #该模块用来提供简单的缓存,以提高系统效率

--without-http_limit_zone_module  #该模块可以针对条件,进行会话的并发连接数控制

--without-http_limit_req_module  #该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件

--without-http_empty_gif_module  #该模块在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用)

--without-http_browser_module    #该模块用来创建依赖于请求报头的值

--without-http_split_clients_module     #该模块用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等

--without-http_upstream_ip_hash_module  #该模块用于负载均衡

--without-mail_pop3_module              #该模块用于pop3协议,邮局协议

--without-mail_imap_module              #该模块用于邮件的imap协议,邮件接收协议

--without-mail_smtp_module              #该模块用于smtp协议,邮件发送协议

 

[root@jiufengjing nginx-1.14.0]# ln -s /usr/local/nginx/sbin/nginx   /usr/local/sbin/ ###创建软链接,优化命令搜索路径

[root@jiufengjing nginx-1.14.0]# ls -l /usr/local/sbin/nginx

lrwxrwxrwx 1 root root 27 Aug 15 03:09 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx

[root@jiufengjing nginx-1.14.0]# cd

[root@jiufengjing ~]# nginx -t  ##检查配置

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@jiufengjing ~]# nginx  ##启动服务

[root@jiufengjing ~]# netstat -utpln |grep 80

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13592/nginx: master      

使用nginx服务启动脚本:

[root@jiufengjing ~]# vim /etc/init.d/nginx

(1)#!/bin/bash

# chkconfig: 35 99 20

# description: Nginx Server Control Script

NP="/usr/local/nginx/sbin/nginx"

NPF="/usr/local/nginx/logs/nginx.pid"

case "$1" in   ##$1表示第一位置变量,$0表示脚本本身

  start)

    $NP;

    if [ $? -eq 0 ]

    then

      echo "nginx is starting!! "

    fi

  ;;

  stop)

    kill -s QUIT $(cat $NPF)

    if [ $? -eq 0 ]

    then

    echo "nginx is stopping!! "

    fi

  ;;

  restart)

    $0 stop

    $0 start

  ;;

  reload)

    kill -s HUP $(cat $NPF)

    if [ $? -eq 0 ]

    then

      echo "nginx config file is reload! "

    fi

  ;;

  *)

    echo "Usage: $0 {start|stop|restart|reload}"

    exit 1

esac

exit 0

:wq

(2)#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start() 
{
    echo -n $"Starting $prog: "
    mkdir -p /dev/shm/nginx_temp
    daemon $NGINX_SBIN -c $NGINX_CONF
    RETVAL=$?
    echo
    return $RETVAL
}

stop() 
{
    echo -n $"Stopping $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -TERM
    rm -rf /dev/shm/nginx_temp
    RETVAL=$?
    echo
    return $RETVAL
}

reload()
{
    echo -n $"Reloading $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -HUP
    RETVAL=$?
    echo
    return $RETVAL
}
restart()
{
    stop
    start
}
configtest()
{
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac

[root@jiufengjing ~]# chkconfig --add nginx ##添加系统服务

[root@jiufengjing ~]# chmod x /etc/init.d/nginx   ##授权

[root@jiufengjing ~]# /etc/init.d/nginx restart ##重启验证

nginx is stopping!!

nginx is starting!!

[root@jiufengjing ~]# netstat -utpln |grep nginx  ##查看nginx监听端口

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14036/nginx: master     

访问验证

图片 1

 

[root@jiufengjing ~]# elinks --dump 192.168.100.102

-dump:将HTML文档以纯文本的方式打印到标准输出设备;
Welcome to nginx!

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 to [1]nginx.org.
Commercial support is available at [2]nginx.com.

Thank you for using nginx.

References

Visible links
1.
2.

PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。

8,简单配置
我这次主要使用到tcp四层负载,后续可能涉及到https http2等,所以编译时添加了那些参数。
nginx.conf配置如下:
user  www www;
worker_processes  auto;
worker_cpu_affinity auto;
error_log  logs/error.log  error;
pid        logs/nginx.pid;
worker_rlimit_nofile 653600;
events
{
  use epoll;
  worker_connections 655350;
}
stream {
    upstream server {
        hash $remote_addr consistent;
        server 172.16.1.11:8081 weight=1 max_fails=3 fail_timeout=10s;
        server 172.16.1.22:8081 weight=1 max_fails=3 fail_timeout=10s;
    }
    server {
        listen 8081;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass server;
    }
}

--with-rtsig_module 启用rtsig模块支持(实时信号) 

# service iptables stop

官网:

CentOS 7.2下编译安装PHP7.0.10 MySQL5.7.14 Nginx1.10.1  http://www.linuxidc.com/Linux/2016-09/134804.htm

--with-select_module 启用select模块支持(一种轮询模式,不推荐在高载环境下使用)禁用:–without-select_module 

# setenforce 0

[root@001 ~]# yum install pcre-devel pcre -y

搭建基于Linux6.3 Nginx1.2 PHP5 MySQL5.5的Web服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

--with-poll_module 启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用) 

# vi /etc/sysconfig/selinux

2.安装

CentOS 6.3下Nginx性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

--with-file-aio 启用file aio支持(一种APL文件传输格式) 


OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。#nginx加密主要是依赖openssl

CentOS 6.3下配置Nginx加载ngx_pagespeed模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

--with-ipv6 启用ipv6支持 

SELINUX=disabled

官网:

CentOS 6.4安装配置Nginx Pcre php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

--with-http_ssl_module 启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl) 


[root@001 ~]# yum install openssl openssl-devel -y

Nginx安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

--with-http_realip_module 启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)

三.安装mysql数据库

3.安装编译器

Nginx日志过滤 使用ngx_log_if不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

--with-http_addition_module 启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求) 

# wget

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。

Nginx的500,502,504错误解决方法 http://www.linuxidc.com/Linux/2015-03/115507.htm

--with-http_xslt_module 启用ngx_http_xslt_module支持(过滤转换XML请求) 

# useradd -d /usr/local/mysql/ mysql 创建一个Mysql用户,指定家目录到/use/local目录下。

[root@001 ~]# yum install gcc gcc-c -y

CentOS 7 编译安装Nginx1.10.2 脚本启动失败解决思路 http://www.linuxidc.com/Linux/2017-01/139794.htm

--with-http_image_filter_module 启用ngx_http_image_filter_module支持(传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到) 

# mkdir /usr/local/mysql/data

[root@001 ~]# yum install wget -y

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

--with-http_geoip_module 启用ngx_http_geoip_module支持(该模块创建基于与MaxMind GeoIP二进制文件相配的客户端IP地址的ngx_http_geoip_module变量) 

# mkdir /usr/local/mysql/log 新建一个目录

4.添加用户

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139965.htm

--with-http_sub_module 启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本) 

# chown -R mysql:mysql /usr/local/mysql/data/

[root@001 ~]# useradd nginx -s /sbin/nologin -M

图片 2

--with-http_dav_module 启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭,需编译开启 

# chown -R mysql:mysql /usr/local/mysql/log/

(关闭防火墙及selinux)

--with-http_flv_module 启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件) 

# chmod 750 /usr/local/mysql/data

二、安装 Nginx

--with-http_gzip_static_module 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流) 

# chmod 750 /usr/local/mysql/log 修改目录的所属者以及所属组

[root@001 ~]# wget

--with-http_random_index_module 启用ngx_http_random_index_module支持(从目录中随机挑选一个目录索引) 

# tar -zxv -f mysql-5.6.10.tar.gz 解包

[root@001 ~]# tar xf nginx-1.12.1.tar.gz -C /usr/local/src/

--with-http_secure_link_module 启用ngx_http_secure_link_module支持(计算和检查要求所需的安全链接网址) 

# cd mysql-5.6.10

[root@001 ~]# cd !$

--with-http_degradation_module 启用ngx_http_degradation_module支持(允许在内存不足的情况下返回204或444码) 

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

[root@001 src]# cd nginx-1.12.1

--with-http_stub_status_module 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态) 

-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock

[root@001 nginx-1.12.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module

--without-http_charset_module 禁用ngx_http_charset_module支持(重新编码web页面,但只能是一个方向–服务器端到客户端,并且只有一个字节的编码可以被重新编码) 

-DDEFAULT_CHARSET=gbk

--配置参数说明:

--without-http_gzip_module 禁用ngx_http_gzip_module支持(该模块同-with-http_gzip_static_module功能一样) 

-DDEFAULT_COLLATION=gbk_chinese_ci

--prefix=/usr/local/nginx #安装路径

--without-http_ssi_module 禁用ngx_http_ssi_module支持(该模块提供了一个在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的) 

-DEXTRA_CHARSETS=all

--user=nginx #进程用户

--without-http_userid_module 禁用ngx_http_userid_module支持(该模块用来处理用来确定客户端后续请求的cookies) 

-DWITH_MYISAM_STORAGE_ENGINE=1

--group=nginx #进程组

--without-http_access_module 禁用ngx_http_access_module支持(该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址) 

-DWITH_INNOBASE_STORAGE_ENGINE=1

--with-http_ssl_module #激活状态信息

--without-http_auth_basic_module禁用ngx_http_auth_basic_module(该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容) 

-DWITH_ARCHIVE_STORAGE_ENGINE=1

--with-http_stub_status_module #激活ssl功能 ---更多参数详解见文章尾部

--without-http_autoindex_module 禁用disable ngx_http_autoindex_module支持(该模块用于自动生成目录列表,只在ngx_http_index_module模块未找到索引文件时发出请求。) 

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

--查看编译参数使用 -V:

--without-http_geo_module 禁用ngx_http_geo_module支持(创建一些变量,其值依赖于客户端的IP地址) 

-DWITH_MEMORY_STORAGE_ENGINE=1

[root@001 sbin]# ./nginx -V

--without-http_map_module 禁用ngx_http_map_module支持(使用任意的键/值对设置配置变量) 

-DWITH_READLINE=1

nginx version: nginx/1.12.1

--without-http_split_clients_module 禁用ngx_http_split_clients_module支持(该模块用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等) 

-DENABLED_LOCAL_INFILE=1

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)

--without-http_referer_module 禁用disable ngx_http_referer_module支持(该模块用来过滤请求,拒绝报头中Referer值不正确的请求) 

-DMYSQL_DATADIR=/usr/local/mysql/data

built with OpenSSL 1.0.1e-fips 11 Feb 2013

--without-http_rewrite_module 禁用ngx_http_rewrite_module支持(该模块允许使用正则表达式改变URI,并且根据变量来转向以及选择配置。如果在server级别设置该选项,那么他们将在 location之前生效。如果在location还有更进一步的重写规则,location部分的规则依然会被执行。如果这个URI重写是因为location部分的规则造成的,那么 location部分会再次被执行作为新的URI。 这个循环会执行10次,然后Nginx会返回一个500错误。) 

-DMYSQL_USER=mysql

TLS SNI support enabled

--without-http_proxy_module 禁用ngx_http_proxy_module支持(有关代理服务器) 

-DMYSQL_TCP_PORT=3306

configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module

--without-http_fastcgi_module 禁用ngx_http_fastcgi_module支持(该模块允许Nginx 与FastCGI 进程交互,并通过传递参数来控制FastCGI 进程工作。 )FastCGI一个常驻型的公共网关接口。

# make

[root@001 nginx-1.12.1]# make && make install

--without-http_uwsgi_module 禁用ngx_http_uwsgi_module支持(该模块用来医用uwsgi协议,uWSGI服务器相关) 

# make install

[root@001 nginx-1.12.1]# cd /usr/local/nginx/sbin/

--without-http_scgi_module 禁用ngx_http_scgi_module支持(该模块用来启用SCGI协议支持,SCGI协议是CGI协议的替代。它是一种应用程序与HTTP服务接口标准。它有些像FastCGI但他的设计 更容易实现。) 

# 复制配置文件

[root@001 sbin]# ./nginx #启动

--without-http_memcached_module 禁用ngx_http_memcached_module支持(该模块用来提供简单的缓存,以提高系统效率) 

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

#无报错则编译安装成功

--without-http_limit_zone_module 禁用ngx_http_limit_zone_module支持(该模块可以针对条件,进行会话的并发连接数控制) 

# vi /etc/my.cnf

图片 3

--without-http_limit_req_module 禁用ngx_http_limit_req_module支持(该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件) 


图片 4

--without-http_empty_gif_module 禁用ngx_http_empty_gif_module支持(该模块在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用) 

[mysql]

三、将nginx加入到系统环境变量及service方式管理服务

--without-http_browser_module 禁用ngx_http_browser_module支持(该模块用来创建依赖于请求报头的值。如果浏览器为modern ,则$modern_browser等于modern_browser_value指令分配的值;如 果浏览器为old,则$ancient_browser等于 ancient_browser_value指令分配的值;如果浏览器为 MSIE中的任意版本,则 $msie等于1) 

# CLIENT #

1.将nginx加入到系统环境变量

--without-http_upstream_ip_hash_module 禁用ngx_http_upstream_ip_hash_module支持(该模块用于简单的负载均衡) 

port = 3306

[root@001 sbin]# vim /etc/profile    #在/etc/profile 中加入如下内容

--with-http_perl_module 启用ngx_http_perl_module支持(该模块使nginx可以直接使用perl或通过ssi调用perl) 

socket = /var/lib/mysql/mysql.sock

export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin

--with-perl_modules_path= 设定perl模块路径 

[mysqld]

[root@001 sbin]# source /etc/profile    #执行 source /etc/profile ,使配置文件生效。

--with-perl= 设定perl库文件路径 

# GENERAL #

[root@001 sbin]# nginx -s stop  #停止服务

--http-log-path= 设定access log路径 

user = mysql

[root@001 sbin]# nginx   #启动服务

--http-client-body-temp-path= 设定http客户端请求临时文件路径 

default_storage_engine = InnoDB

2.创建脚本把Nginx加为系统服务使其内使用(service nginx start/stop/restart)

--http-proxy-temp-path= 设定http代理临时文件路径 

socket = /var/lib/mysql/mysql.sock

[root@001 sbin]# vim /etc/init.d/nginx

--http-fastcgi-temp-path= 设定http fastcgi临时文件路径 

pid_file = /var/run/mysqld/mysqld.pid

#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx      #/注意你安装nginx是否这个路径
nginx_config=/usr/local/nginx/conf/nginx.conf      #/注意你安装nginx是否这个路径
nginx_pid=/log/nginx/nginx.pid      #/注意你安装nginx是否这个路径
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL

--http-uwsgi-temp-path= 设定http uwsgi临时文件路径 

# MyISAM #

[root@001 sbin]# chmod -R 755 /etc/init.d/nginx   #现在就可以使用service来关闭或开启服务

--http-scgi-temp-path= 设定http scgi临时文件路径 

key_buffer_size = 32M

图片 5

--without-http 禁用http server功能 

myisam_recover = FORCE,BACKUP

 =========================到这Nginx安装完成 =========================

--without-http-cache 禁用http cache功能 

# SAFETY #

四、部署基于域名、ip、端口测试站点

--with-mail 启用POP3/IMAP4/SMTP代理模块支持 

max_allowed_packet = 16M

Nginx目录下的目录说明:

--with-mail_ssl_module 启用ngx_mail_ssl_module支持 

max_connect_errors = 1000000

图片 6

--without-mail_pop3_module 禁用pop3协议(POP3即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。是因特网电子邮件的第一个离线协议标 准,POP3协议允许用户从服务器上把邮件存储到本地主机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。POP3协议是TCP/IP协议族中的一员,主要用于 支持使用客户端远程管理在服务器上的电子邮件)

skip_name_resolve

1.创建两个站点目录

--without-mail_imap_module 禁用imap协议(一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。IMAP协议运行在TCP/IP协议之上, 使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。) 

sql_mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY

[root@001 ~]# mkdir /usr/local/nginx/html/www

--without-mail_smtp_module 禁用smtp协议(SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。) 

sysdate_is_now = 1

[root@001 ~]# mkdir /usr/local/nginx/html/bbs

--with-google_perftools_module 启用ngx_google_perftools_module支持(调试用,剖析程序性能瓶颈) 

innodb = FORCE

2.编辑Nginx 配置文件

--with-cpp_test_module 启用ngx_cpp_test_module支持 

innodb_strict_mode = 1

[root@001 ~]# egrep -v "#|^$" /usr/local/nginx/conf/nginx.conf.default > /usr/local/nginx/conf/nginx.conf #去掉配置文件注释与空行

--add-module= 启用外部模块支持 

# DATA STORAGE #

3.基于域名站点目录

--with-cc= 指向C编译器路径 

datadir = /usr/local/mysql/data

[root@001 conf]# vim /usr/local/nginx/conf/nginx.conf

--with-cpp= 指向C预处理路径

# BINARY LOGGING #

修改如下内容:

--with-cc-opt= 设置C编译器参数(PCRE库,需要指定–with-cc-opt=”-I /usr/local/include”,如果使用select()函数则需要同时增加文件描述符数量,可以通过–with-cc- opt=”-D FD_SETSIZE=2048”指定。) 

log-bin =/usr/local/mysql/log/bin.log

worker_processes 1;

--with-ld-opt= 设置连接文件参数。(PCRE库,需要指定–with-ld-opt=”-L /usr/local/lib”。) 

expire_logs_days = 30

events {

--with-cpu-opt= 指定编译的CPU,可用的值为: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64 

sync_binlog = 1

worker_connections 1024;

--without-pcre 禁用pcre库 

# CACHES AND LIMITS #

}

--with-pcre 启用pcre库 

key_buffer = 256M

http {

--with-pcre= 指向pcre库文件目录 

max_allowed_packet = 64M

include mime.types;

--with-pcre-opt= 在编译时为pcre库设置附加参数 

sort_buffer_size = 256M

default_type application/octet-stream;

--with-md5= 指向md5库文件目录(消息摘要算法第五版,用以提供消息的完整性保护) 

read_buffer_size = 256M

sendfile on;

--with-md5-opt= 在编译时为md5库设置附加参数 –with-md5-asm 使用md5汇编源 

read_rnd_buffer_size = 256M

keepalive_timeout 65;

--with-sha1= 指向sha1库目录(数字签名算法,主要用于数字签名) 

thread_stack = 256M

server {

--with-sha1-opt= 在编译时为sha1库设置附加参数 

tmp_table_size = 32M

listen 80;

--with-sha1-asm 使用sha1汇编源 

max_heap_table_size = 32M

server_name www.test.com; #站点域名

--with-zlib= 指向zlib库目录 

query_cache_type = 1

location / {

--with-zlib-opt= 在编译时为zlib设置附加参数 

query_cache_size = 256M

root html/www; #站点目录

--with-zlib-asm= 为指定的CPU使用zlib汇编源进行优化,CPU类型为pentium, pentiumpro 

query_cache_limit = 256M

index index.html index.htm;

--with-libatomic 为原子内存的更新操作的实现提供一个架构 

max_connections = 2048

}

--with-libatomic= 指向libatomic_ops安装目录 

thread_cache_size = 512

}

--with-openssl= 指向openssl安装目录 

open_files_limit = 65535

添加:

--with-openssl-opt 在编译时为openssl设置附加参数 

table_definition_cache = 1024

server {

--with-debug 启用debug日志

table_open_cache = 2048

listen 80;

# INNODB #

server_name bbs.test.com; #站点域名

innodb_log_files_in_group = 2

location / {

innodb_log_file_size = 64M

root html/bbs; #站点目录

innodb_flush_log_at_trx_commit = 1

index index.html index.htm;

innodb_file_per_table = 1

}

innodb_buffer_pool_size = 2G

}

# LOGGING #

}

log-error=/usr/local/mysql/log/error.log

 

general_log=1

[root@001 html]# /usr/local/nginx/sbin/nginx -t #检查配置文件是否有错

general_log_file=/usr/local/mysql/log/mysql.log

[root@001 html]# /usr/local/nginx/sbin/nginx -s reload #重新加载配置文件

slow_query_log=1

Nginx 配置文件详解:

slow_query_log_file=/usr/local/mysql/log/slowquery.log

[root@001 html]# echo "www.test.com">> www/index.html #添加测试页面

log-output=FILE

[root@001 html]# echo "bbs.test.com">> bbs/index.html #添加测试页面

# 避免MySQL的外部锁定,减少出错几率增强稳定性 #

[root@001 html]# vim /etc/hosts #修改hosts配置文件

skip-external-locking

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

# 禁止sql读取本地文件 #

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

local-infile=0

192.168.1.222 www.test.com #添加


192.168.1.222 bbs.test.com #添加

# 进入安装路径

[root@001 sbin]# curl www.test.com

cd /usr/local/mysql

www.test.com #测试页面正常

# 执行配置脚本

[root@001 sbin]# curl bbs.test.com

scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

bbs.test.com #测试页面正常

# 复制服务启动脚本

3.基于IP或端口的虚拟测试站点

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

[root@001 conf]# ip addr help

# chkconfig --add mysqld #添加开机启动服务

Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]

# chkconfig --level 35 mysqld on #设置mysql启动

[ CONFFLAG-LIST]

# service mysqld start #启动数据库

ip addr del IFADDR dev STRING

# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 创建一个mysql接口的软链接

ip addr {show|flush} [ dev STRING ] [ scope SCOPE-ID ]

# /usr/local/mysql/bin/mysqladmin -u root password 123456 #设置密码

[ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]

# /usr/local/mysql/bin/mysql -u root -p123456 #连接数据库

IFADDR := PREFIX | ADDR peer PREFIX

mysql> create database phpwind; #---创建数据库

[ broadcast ADDR ] [ anycast ADDR ]

mysql> grant all privileges on *.* to [email protected]'%' identified by '123456' with grant option; #给root用户非本地链接所有权限,并改密码和赋予其给其他人下发权限.

[ label STRING ] [ scope SCOPE-ID ]

mysql> show variables; #查看mysql设置.

SCOPE-ID := [ host | link | global | NUMBER ]

# 这里是把mysql文件链接到默认位置,必须做这步,在编译其他软件的时候自定义mysql的库文件路径。

FLAG-LIST := [ FLAG-LIST ] FLAG

# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

FLAG := [ permanent | dynamic | secondary | primary |

# ln -s /usr/local/mysql/include/mysql /usr/include/mysql

tentative | deprecated | CONFFLAG-LIST ]

四.编译安装nginx(官方文档)

CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG

1.模块依赖性:

CONFFLAG := [ home | nodad ]

gzip 模块需要 zlib 库

LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]

rewrite 模块需要 pcre 库

LFT := forever | SECONDS

ssl 功能需要 openssl 库

[root@001 conf]# ip addr add 192.168.1.234 dev eth0 #给网卡添加IP

# yum install gcc openssl-devel pcre-devel zlib-devel

[root@001 conf]# ip addr del 192.168.1.234 dev eth0 #查出ip命令

2.nginx编译

编辑配置文件注:基于ip的虚拟主机只需给网卡添加ip并修改listen即可

先添加nginx用户和用户组

worker_processes 1;

# groupadd nginx

events {

# useradd -g nginx -s /bin/false -M nginx

worker_connections 1024;

解压源码包,这里采用最新的源码包1.4.0

}

# tar -zxvf nginx-1.4.0.tar.gz

http {

# cd nginx-1.4.0

include mime.types;

# ./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_dav_module --with-http_flv_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-debug --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi

default_type application/octet-stream;

# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/

sendfile on;

# make && make install

keepalive_timeout 65;

创建缓存目录:

server {

# mkdir -p /var/tmp/nginx/client

listen 192.168.1.222:800; #基于ip或端口

3.创建启动脚本

server_name www.test.com; #站点域名

# vi /etc/init.d/nginx

location / {


root html/www; #站点目录

#!/bin/sh

index index.html index.htm;

#

}

# nginx - this script starts and stops the nginx daemin

}

#

server {

# chkconfig: - 85 15

listen 192.168.1.234:808; #基于ip或端口

# description: Nginx is an HTTP(S) server, HTTP(S) reverse

server_name bbs.test.com; #站点域名

# proxy and IMAP/POP3 proxy server

location / {

# processname: nginx

root html/bbs; #站点目录

# config: /usr/local/nginx/conf/nginx.conf

index index.html index.htm;  #基于IP或端口

# pidfile: /usr/local/nginx/logs/nginx.pid

}

# Source function library.

}

. /etc/rc.d/init.d/functions

}

# Source networking configuration.

 

. /etc/sysconfig/network

附:Nginx编译参数详解:

# Check that networking is up.

--prefix= 指向安装目录

[ "$NETWORKING" = "no" ] && exit 0

--sbin-path 指向(执行)程序文件(nginx)

nginx="/usr/local/nginx/sbin/nginx"

--conf-path= 指向配置文件(nginx.conf)

prog=$(basename $nginx)

--error-log-path= 指向错误日志目录

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

--pid-path= 指向pid文件(nginx.pid)

lockfile=/var/lock/subsys/nginx

--lock-path= 指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)

start() {

--user= 指定程序运行时的非特权用户

[ -x $nginx ] || exit 5

--group= 指定程序运行时的非特权用户组

[ -f $NGINX_CONF_FILE ] || exit 6

--builddir= 指向编译目录

echo -n $"Starting $prog: "

--with-rtsig_module 启用rtsig模块支持(实时信号)

daemon $nginx -c $NGINX_CONF_FILE

--with-select_module 启用select模块支持(一种轮询模式,不推荐在高载环境下使用)禁用:--without-select_module

retval=$?

--with-poll_module 启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)

echo

--with-file-aio 启用file aio支持(一种APL文件传输格式)

[ $retval -eq 0 ] && touch $lockfile

--with-ipv6 启用ipv6支持

return $retval

--with-http_ssl_module 启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)

}

--with-http_realip_module 启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)

stop() {

--with-http_addition_module 启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)

echo -n $"Stopping $prog: "

--with-http_xslt_module 启用ngx_http_xslt_module支持(过滤转换XML请求)

killproc $prog -QUIT

--with-http_image_filter_module 启用ngx_http_image_filter_module支持(传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)

retval=$?

--with-http_geoip_module 启用ngx_http_geoip_module支持(该模块创建基于与MaxMind GeoIP二进制文件相配的客户端IP地址的ngx_http_geoip_module变量)

echo

--with-http_sub_module 启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本)

[ $retval -eq 0 ] && rm -f $lockfile

--with-http_dav_module 启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭,需编译开启

return $retval

--with-http_flv_module 启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)

}

--with-http_gzip_static_module 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)

restart() {

--with-http_random_index_module 启用ngx_http_random_index_module支持(从目录中随机挑选一个目录索引)

configtest || return $?

--with-http_secure_link_module 启用ngx_http_secure_link_module支持(计算和检查要求所需的安全链接网址)

stop

--with-http_degradation_module  启用ngx_http_degradation_module支持(允许在内存不足的情况下返回204或444码)

start

--with-http_stub_status_module 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)

}

--without-http_charset_module 禁用ngx_http_charset_module支持(重新编码web页面,但只能是一个方向--服务器端到客户端,并且只有一个字节的编码可以被重新编码)

reload() {

--without-http_gzip_module 禁用ngx_http_gzip_module支持(该模块同-with-http_gzip_static_module功能一样)

configtest || return $?

--without-http_ssi_module 禁用ngx_http_ssi_module支持(该模块提供了一个在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的)

echo -n $"Reloading $prog: "

--without-http_userid_module 禁用ngx_http_userid_module支持(该模块用来处理用来确定客户端后续请求的cookies)

killproc $nginx -HUP

--without-http_access_module 禁用ngx_http_access_module支持(该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址)

RETVAL=$?

--without-http_auth_basic_module禁用ngx_http_auth_basic_module(该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容)

echo

--without-http_autoindex_module 禁用disable ngx_http_autoindex_module支持(该模块用于自动生成目录列表,只在ngx_http_index_module模块未找到索引文件时发出请求。)

}

--without-http_geo_module 禁用ngx_http_geo_module支持(创建一些变量,其值依赖于客户端的IP地址)

force_reload() {

--without-http_map_module 禁用ngx_http_map_module支持(使用任意的键/值对设置配置变量)

restart

--without-http_split_clients_module 禁用ngx_http_split_clients_module支持(该模块用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等)

}

--without-http_referer_module 禁用disable ngx_http_referer_module支持(该模块用来过滤请求,拒绝报头中Referer值不正确的请求)

configtest() {

--without-http_rewrite_module 禁用ngx_http_rewrite_module支持(该模块允许使用正则表达式改变URI,并且根据变量来转向以及选择配置。如果在server级别设置该选项,那么他们将在 location之前生效。如果在location还有更进一步的重写规则,location部分的规则依然会被执行。如果这个URI重写是因为location部分的规则造成的,那么 location部分会再次被执行作为新的URI。这个循环会执行10次,然后Nginx会返回一个500错误。)

$nginx -t -c $NGINX_CONF_FILE

--without-http_proxy_module 禁用ngx_http_proxy_module支持(有关代理服务器)

}

--without-http_fastcgi_module 禁用ngx_http_fastcgi_module支持(该模块允许Nginx 与FastCGI 进程交互,并通过传递参数来控制FastCGI 进程工作。)FastCGI一个常驻型的公共网关接口。

rh_status() {

--without-http_uwsgi_module 禁用ngx_http_uwsgi_module支持(该模块用来医用uwsgi协议,uWSGI服务器相关)

status $prog

--without-http_scgi_module 禁用ngx_http_scgi_module支持(该模块用来启用SCGI协议支持,SCGI协议是CGI协议的替代。它是一种应用程序与HTTP服务接口标准。它有些像FastCGI但他的设计更容易实现。)

}

--without-http_memcached_module 禁用ngx_http_memcached_module支持(该模块用来提供简单的缓存,以提高系统效率)

rh_status_q() {

-without-http_limit_zone_module 禁用ngx_http_limit_zone_module支持(该模块可以针对条件,进行会话的并发连接数控制)

rh_status >/dev/null 2>&1

--without-http_limit_req_module 禁用ngx_http_limit_req_module支持(该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件)

}

--without-http_empty_gif_module 禁用ngx_http_empty_gif_module支持(该模块在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用)

case "$1" in

--without-http_browser_module 禁用ngx_http_browser_module支持(该模块用来创建依赖于请求报头的值。如果浏览器为modern ,则$modern_browser等于modern_browser_value指令分配的值;如果浏览器为old,则$ancient_browser等于 ancient_browser_value指令分配的值;如果浏览器为 MSIE中的任意版本,则 $msie等于1)

start)

--without-http_upstream_ip_hash_module 禁用ngx_http_upstream_ip_hash_module支持(该模块用于简单的负载均衡)

rh_status_q && exit 0

--with-http_perl_module 启用ngx_http_perl_module支持(该模块使nginx可以直接使用perl或通过ssi调用perl)

$1

--with-perl_modules_path= 设定perl模块路径

;;

--with-perl= 设定perl库文件路径

stop)

--http-log-path= 设定access log路径

rh_status_q || exit 0

--http-client-body-temp-path= 设定http客户端请求临时文件路径

$1

--http-proxy-temp-path= 设定http代理临时文件路径

;;

--http-fastcgi-temp-path= 设定http fastcgi临时文件路径

restart|configtest)

--http-uwsgi-temp-path= 设定http uwsgi临时文件路径

$1

--http-scgi-temp-path= 设定http scgi临时文件路径

;;

-without-http 禁用http server功能

reload)

--without-http-cache 禁用http cache功能

rh_status_q || exit 7

--with-mail 启用POP3/IMAP4/SMTP代理模块支持

$1

--with-mail_ssl_module 启用ngx_mail_ssl_module支持

;;

--without-mail_pop3_module 禁用pop3协议(POP3即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。POP3协议是TCP/IP协议族中的一员,主要用于支持使用客户端远程管理在服务器上的电子邮件)

force-reload)

--without-mail_imap_module 禁用imap协议(一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。)

force_reload

--without-mail_smtp_module 禁用smtp协议(SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。)

;;

--with-google_perftools_module 启用ngx_google_perftools_module支持(调试用,剖析程序性能瓶颈)

status)

--with-cpp_test_module 启用ngx_cpp_test_module支持

rh_status

--add-module= 启用外部模块支持

;;

--with-cc= 指向C编译器路径

condrestart|try-restart)

--with-cpp= 指向C预处理路径

rh_status_q || exit 0

--with-cc-opt= 设置C编译器参数(PCRE库,需要指定–with-cc-opt="-I /usr/local/include",如果使用select()函数则需要同时增加文件描述符数量,可以通过–with-cc- opt="-D FD_SETSIZE=2048"指定。)

;;

--with-ld-opt= 设置连接文件参数。(PCRE库,需要指定–with-ld-opt="-L /usr/local/lib"。)

*)

--with-cpu-opt= 指定编译的CPU,可用的值为: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-

--without-pcre 禁用pcre库

reload|configtest}"

--with-pcre 启用pcre库

exit 2

--with-pcre= 指向pcre库文件目录

esac

--with-pcre-opt= 在编译时为pcre库设置附加参数


--with-md5= 指向md5库文件目录(消息摘要算法第五版,用以提供消息的完整性保护)

# chmod 755 /etc/init.d/nginx

--with-md5-opt= 在编译时为md5库设置附加参数

# chkconfig --add nginx

--with-md5-asm 使用md5汇编源

# service nginx start

--with-sha1= 指向sha1库目录(数字签名算法,主要用于数字签名)

# chkconfig nginx on

--with-sha1-opt= 在编译时为sha1库设置附加参数

4.访问测试页面:

--with-sha1-asm 使用sha1汇编源

--with-zlib= 指向zlib库目录

图片 7

--with-zlib-opt= 在编译时为zlib设置附加参数

五.安装php模块

--with-zlib-asm= 为指定的CPU使用zlib汇编源进行优化,CPU类型为pentium, pentiumpro

1.处理依赖包

--with-libatomic 为原子内存的更新操作的实现提供一个架构

暂无..

--with-libatomic= 指向libatomic_ops安装目录

2.安装PHP

--with-openssl= 指向openssl安装目录

# wget

--with-openssl-opt 在编译时为openssl设置附加参数

# tar -jxvf php-5.4.13.tar.bz2

--with-debug 启用debug日志

# cd php-5.4.13

编译参数详解:

此处编译安装了我们项目经常用到的PHP模块,如有其它需要可以自定义添加.

Nginx 配置文件详解:

#./configure --prefix=/usr/local/php5--enable-fastcgi --enable-fpm--with-libxml-dir=/usr/local/lib --with-zlib-dir=/usr/local/lib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-gd --enable-soap --enable-sockets --enable-xml --enable-mbstring --with-png-dir=/usr/local --with-jpeg-dir=/usr/local --with-curl=/usr/lib --with-freetype-dir=/usr/include/freetype2/freetype/ --enable-bcmath --enable-maintainer-zts

 

在“./configure”编译选项中,“--enable-fastcgi”是启用对PHP的FastCGI支持,“--enable-fpm”是激活对FastCGI模式的fpm支持。

# make

# make install

安装结束后:

添加php配置文件,需要CP 一个源码里面的php.ini-development或php.ini-production

到/usr/local/php/lib 为 php.ini

# cd ~/php-5.4.13

# cp php.ini-development /usr/local/php5/lib/php.ini

PHP配置: (修改php.ini,默认目录/usr/local/php5/lib/php.ini)

# vi /usr/local/php5/lib/php.ini


expose_php = Off

display_errors = Off

date.timezone =PRC

log_errors = On

error_log = /usr/local/nginx/logs/php_error.log


配置启动FastCGI进程:

# cd /usr/local/php5/etc/

# cp php-fpm.conf.default php-fpm.conf

优化配置:

# vi php-fpm.conf

内存小于4G服务器(值可逐级递减):

修改如下参数:


pm=dynamic

pm.max_children=40

pm.start_servers=10

pm.min_spare_servers=10

pm.max_spare_servers=40


内存大于4G服务器(值可逐级递增):

修改如下参数:


pm=static

pm.max_children=100


启动服务:

# /usr/local/php5/sbin/php-fpm

# ps -ef|grep php-fpm


root 3829 1 0 01:33 ? 00:00:00 php-fpm: master process

(/usr/local/php5/etc/php-fpm.conf)

nobody 3830 3829 0 01:33 ? 00:00:00 php-fpm: pool www

nobody 3831 3829 0 01:33 ? 00:00:00 php-fpm: pool www

root 3836 1908 0 01:36 pts/0 00:00:00 grep php-fpm


重启fpm:

# pkill php-fpm

# /usr/local/php5/sbin/php-fpm

配置nginx支持php:

由于Nginx本身不会对PHP进行解析,因此要实现Nginx对PHP的支持,其实是将对PHP页面的请求交给fastCGI进程监听的IP地址及端口。如果把php-fpm当做动态应用服务器,那么Nginx其实就是一个反向代理服务器。

Nginx通过反向代理功能实现对PHP的解析,这就是Nginx实现PHP动态解析的原理。

这里假定Nginx的安装目录为/usr/local,则Nginx配置文件的路径为/usr/local/nginx/conf/nginx.conf。下面是在Nginx下支持PHP解析的一个虚拟主机配置实例。

# vi /usr/local/nginx/conf/nginx.conf

添加到http层级:


server {

server_name www.abc.com;

location / {

index index.html index.php;

root /usr/local/nginx/html/www.abc.com;

}

location ~ .php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/www.abc.com$fastcgi_script_name;

include fastcgi_params;

}

}


通过location指令,将所有以php为后缀的文件都交给127.0.0.1:9000来处理,而这里的IP地址和端口就是FastCGI进程监听的IP地址和端口。

fastcgi_param指令指定放置PHP动态程序的主目录,也就是$fastcgi_script_name前面指定的路径,这里是/usr/local/nginx/html/www.abc.com目录,建议将这个目录与Nginx虚拟主机指定的根目录保持一致.

fastcgi_params文件是FastCGI进程的一个参数配置文件,在安装Nginx后,会默认生成一个这样的文件,这里通过include指令将FastCGI参数配置文件包含了进来。

测试NGINX是否加载PHP

# vi /usr/local/nginx/html/www.abc.com/info.php


<?php

echo phpinfo();

?>


重启nginx服务

# service nginx restart

检查80端口是否打开

# lsof -i:80

浏览器输入(注意修改本机HOST文件)

显示有如下测试页面内容,PHP在GNINX下加载成功

图片 8图片 9

在配置完成Nginx FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化缓存指令。

推荐在项目稳定后可添加如下代码。

项目页面测试阶段或经常改动页面可能造成新添加的功能无法实现,不推荐使用。

下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级。

# vi /usr/local/nginx/conf/nginx.conf

添加到http层级:


fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

fastcgi_cache TEST;

fastcgi_cache_valid 200 302 1h;

fastcgi_cache_valid 301 1d;

fastcgi_cache_valid any 1m;


至此,MYSQL Nginx PHP(Fastcgi)大功告成。

---------备 注(大神可无视)-------------

什么是CGI

  CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。

  CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等

  什么是FastCGI

  FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

  FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

  FastCGI与CGI特点

  1、如CGI,FastCGI也具有语言无关性.

  2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。(APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器;恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。)

  3、FastCGI技术目前支持语言有:C/C 、Java、Perl、Tcl、Python、SmallTalk、Ruby等。相关模块在Apache, ISS, Lighttpd等流行的服务器上也是可用的。

  4、如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。

  FastCGI的工作原理

1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回WebServer。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistentdatabase connection)可以工作。

  FastCGI的不足

  因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。

Nginx 1.4.0 php-5.4.13(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。

补充:编译详细参数如下:

#Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。

--prefix=PATH

#Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为PATH/sbin/nginx。

--sbin-path=PATH

#在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为

PATH/conf/nginx.conf。

--conf-path=PATH

#在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为

PATH/logs/nginx.pid。

--pid-path=PATH

#nginx.lock文件的路径。

--lock-path=PATH

#在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为

PATH/logs/error.log。

--error-log-path=PATH

#在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为

PATH/logs/access.log。

--http-log-path=PATH

#在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。

--user=USER

#在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默

认为 nobody。

--group=GROUP

#指定编译的目录

--builddir=DIR

#启用 rtsig 模块

--with-rtsig_module

#允许或不允许开启SELECT模式,如果configure没有找到合适的模式,比如,kqueue(sun os)、epoll(linux

kenel 2.6 )、rtsig(实时信号)

--with-select_module(--without-select_module)

#允许或不允许开启POLL模式,如果没有合适的,则开启该模式。

--with-poll_module(--without-poll_module)

#开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在

DEBIAN上是libssl-dev

--with-http_ssl_module

--with-http_realip_module #启用 ngx_http_realip_module

--with-http_addition_module #启用 ngx_http_addition_module

--with-http_sub_module #启用 ngx_http_sub_module

--with-http_dav_module #启用 ngx_http_dav_module

--with-http_flv_module #启用 ngx_http_flv_module

--with-http_stub_status_module #启用 "server status" 页

--without-http_charset_module #禁用 ngx_http_charset_module

--without-http_gzip_module #禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。

--without-http_ssi_module #禁用 ngx_http_ssi_module

--without-http_userid_module #禁用 ngx_http_userid_module

--without-http_access_module #禁用 ngx_http_access_module

--without-http_auth_basic_module #禁用 ngx_http_auth_basic_module

--without-http_autoindex_module #禁用 ngx_http_autoindex_module

--without-http_geo_module #禁用 ngx_http_geo_module

--without-http_map_module #禁用 ngx_http_map_module

--without-http_referer_module #禁用 ngx_http_referer_module

--without-http_rewrite_module #禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。

--without-http_proxy_module #禁用 ngx_http_proxy_module

--without-http_fastcgi_module #禁用 ngx_http_fastcgi_module

--without-http_memcached_module #禁用 ngx_http_memcached_module

--without-http_limit_zone_module #禁用 ngx_http_limit_zone_module

--without-http_empty_gif_module #禁用 ngx_http_empty_gif_module

--without-http_browser_module #禁用 ngx_http_browser_module

--without-http_upstream_ip_hash_module #禁用ngx_http_upstream_ip_hash_module

--with-http_perl_module - #启用 ngx_http_perl_module

--with-perl_modules_path=PATH #指定 perl 模块的路径

--with-perl=PATH #指定 perl 执行文件的路径

--http-log-path=PATH #Set path to the http access log

--http-client-body-temp-path=PATH #Set path to the http client request body

temporary files

--http-proxy-temp-path=PATH #Set path to the http proxy temporary files

--http-fastcgi-temp-path=PATH #Set path to the http fastcgi temporary files

--without-http #禁用 HTTP server

--with-mail #启用 IMAP4/POP3/SMTP 代理模块

--with-mail_ssl_module #启用 ngx_mail_ssl_module

--with-cc=PATH #指定 C 编译器的路径

--with-cpp=PATH #指定 C 预处理器的路径

--with-cc-opt=OPTIONS #

--with-ld-opt=OPTIONS #Additional parameters passed to the linker. With the use

of the system library PCRE in FreeBSD, it is necessary to indicate --with-ld-opt="-L

/usr/local/lib".

--with-cpu-opt=CPU #为特定的 CPU 编译,有效的值包括:pentium, pentiumpro,

pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64

--without-pcre #禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在

"location" 配置指令中的正则表达式也需要 PCRE 。

--with-pcre=DIR #指定 PCRE 库的源代码的路径。

--with-pcre-opt=OPTIONS #设置PCRE的额外编译选项。

--with-md5=DIR #使用MD5汇编源码。

--with-md5-opt=OPTIONS #Set additional options for md5 building.

--with-md5-asm #Use md5 assembler sources.

--with-sha1=DIR #Set path to sha1 library sources.

--with-sha1-opt=OPTIONS #Set additional options for sha1 building.

--with-sha1-asm #Use sha1 assembler sources.

--with-zlib=DIR #Set path to zlib library sources.

--with-zlib-opt=OPTIONS #Set additional options for zlib building.

--with-zlib-asm=CPU #Use zlib assembler sources optimized for specified CPU, valid values are:

pentium, pentiumpro

--with-openssl=DIR #Set path to OpenSSL library sources

--with-openssl-opt=OPTIONS #Set additional options for OpenSSL building

--with-debug #启用调试日志

--add-module=PATH #Add in a third-party module found in directory PATH

在不同版本间,选项可能会有些许变化,请总是使用 ./configure --help 命令来检查一下当前的选项列表。

N倍的NGINX玩了下。研究 测试前后就是一个下午时间,在此把自己的心得整理了下。 (最后的备注为...

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:全功能编译安装笔记,2稳定版本tcp四层负载安装

关键词: