linux系统CentOS7Nginx下载地址http://nginx.org/en/download.htmlwget下载路径http://nginx.org/download/nginx-1.9.9.tar.gz这里用到的是nginx-1.9.9.tar.gzPCRE下载地址ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/wget下载路径ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz这里用到的是pcre-8.37.tar.gzzlib下载地址http://www.zlib.net/wget下载路径http://jaist.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz这里用到的是zlib-1.2.8.tar.gzopenssl下载地址http://www.openssl.org/source/wget下载路径http://www.openssl.org/source/openssl-1.0.2e.tar.gz这里用到的是openssl-1.0.2e.tar.gz用 WinSCP上传到指定的目录下,这里是/usr/local/srcshell端先安装其他必须软件,安装gcc、gcc-c++yum -y install gcc gcc-c++进入到安装包目录cd /usr/local/src解压缩PCRE到当前文件夹tar -zxvf pcre-8.37.tar.gz进入解压缩目录cd pcre-8.37配置安装目录./configure --prefix=/usr/local/pcre编译make安装make install返回上级目录cd ../解压缩zlib到当前文件夹tar -zxvf zlib-1.2.8.tar.gz进入解压缩目录cd zlib-1.2.8配置安装目录./configure --prefix=/usr/local/zlib编译make安装make install返回上级目录cd ../解压缩openssl到当前文件夹tar -zxvf openssl-1.0.2e.tar.gz进入解压缩目录cd openssl-1.0.2e配置安装目录./config --prefix=/usr/local/openssl编译make安装make install返回上级目录cd ../解压缩Nginx到当前文件夹tar -zxvf nginx-1.9.9.tar.gz进入Nginx的解压目录cd nginx-1.9.9配置--with-pcre 指的是pcre解压缩后的源码路径。--with-zlib 指的是zlib解压缩后的源码路径。--with-openssl指的是openssl解压缩后的源码路径。./configure \--prefix=/usr/local/nginx \--conf-path=/usr/local/nginx/conf/nginx.conf \--pid-path=/usr/local/nginx/logs/nginx.pid \--sbin-path=/usr/local/nginx/sbin/nginx \--lock-path=/usr/local/nginx/logs/nginx.lock \--with-http_ssl_module \--with-pcre=/usr/local/src/pcre-8.37 \--with-zlib=/usr/local/src/zlib-1.2.8 \--with-openssl=/usr/local/src/openssl-1.0.2e编译make安装make install返回上级目录cd ../编辑配置文件找到#location ~ \.php$ { # root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}将前面的#全部去掉并将fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;变成fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;nginx要调用fastcgi解析PHP文件,/usr/local/nginx/html是fastcgi要读取PHP文件的具体位置nginx默认用9000端口调用php-fpm的如果保存报错则 :wq! 强制保存(前提root管理权限)vim /usr/local/nginx/conf/nginx.conf/*启动nginx/usr/local/nginx/sbin/nginx*/将nginx放到service控制中将下面代码新建保存到/etc/init.d/nginx中(该方法对于其他服务也同样适用,比如Mysql,php-fpm等等)#!/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: /usr/local/nginx/logs/nginx.pid# config: /usr/local/nginx/conf/nginx.conf#nginx程序--sbin-path路径nginxd=/usr/local/nginx/sbin/nginx#nginx配置文件--conf-path路径nginx_config=/usr/local/nginx/conf/nginx.conf#nginx pid文件--sbin-path的路径nginx_pid=/usr/local/nginx/logs/nginx.pid#nginx lock文件--lock-path的路径nginx_lock=/usr/local/nginx/logs/nginx.lockRETVAL=0#使service可控制的名称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 1fi echo -n $"Starting $prog: " daemon $nginxd -c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch $nginx_lock return $RETVAL}# Stop nginx daemons functions.stop() { echo -n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f $nginx_lock $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" instart) start ;;stop) stop ;;reload) reload ;;restart) stop start ;;status) status $prog RETVAL=$? ;;*) echo $"Usage: $prog {start|stop|restart|reload|status|help}" exit 1esacexit $RETVAL:wq 保存并退出vim /etc/init.d/nginx设置文件的访问权限chmod 755 /etc/init.d/nginx可以使用service控制nginx启用关闭了service nginx start让nginx服务加入到开机启动指令管理的服务列表中chkconfig --add nginx设置开机启动chkconfig nginx on开放防火墙80端口访问firewall-cmd --zone=public --add-port=80/tcp --permanent重启防火墙firewall-cmd --reload安装php前需要安装libxml2和libxml2-develyum install -y libxml2 libxml2-devel解压缩PHP到当前文件夹tar -zxvf php-5.6.15.tar.gz进入解压缩目录cd php-5.6.15配置PHP安装,Nginx+PHP整合,在安装时必须启用-–enable-fastcgi和--enable-fpm./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-fastCGI --enable-fpm编译make安装make install将安装包里的开发版php.ini复制到配置php安装时指定存放php.ini的位置即--with-config-file-path指向的位置cp php.ini-development /usr/local/php/php.ini将/usr/local/php/etc/php-fpm.conf.default同目录下复制一份命名php-fpm.confcp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf使php-fpm.pid保存在指定目录/usr/local/php/var/run/php-fpm.pid(设定开机启动时用到)找到 ;pid = run/php-fpm.pid 去掉前面的 ;vim /usr/local/php/etc/php-fpm.conf/*启动php-fpm/usr/local/php/sbin/php-fpm*/编辑php.iniphp5默认 时间与北京时间相差八小时(少八小时)为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时查找;date.timezone =将;去掉,并修改成date.timezone = PRC除了E_NOTICE类型的错误(Notice)不报告,其他的都报告,查找error_reporting = E_ALL改成error_reporting = E_ALL & ~E_NOTICE使 include 等可以包含域外网页如 include_once "http://www.126.com";找到allow_url_include = Off改成allow_url_include = Onvim /usr/local/php/php.ini将php-fpm放到service控制中将下面代码新建保存到/etc/init.d/php-fpm中#!/bin/bash# php-fpm Startup script for the php-fpm # it is v.5.5.0 version.# chkconfig: - 85 15# description: php-fpm is very good# processname: php-fpm# pidfile: /usr/local/php/var/run/php-fpm.pid# config: /usr/local/php/etc/php-fpm.confphp_command=/usr/local/php/sbin/php-fpmphp_config=/usr/local/php/etc/php-fpm.confphp_pid=/usr/local/php/var/run/php-fpm.pidRETVAL=0#使service可控制的名称prog="php-fpm"# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network#start functionstart(){ if [ -e $php_pid ] then echo "php-fpm already start..." exit 1 fi $php_command}stop(){ if [ -e $php_pid ] then parent_pid=`cat $php_pid` all_pid=`ps -ef | grep php-fpm | awk '{if('$parent_pid' == $3){print $2}}'` for pid in $all_pid do kill $pid done kill $parent_pid fi exit 1}restart(){ stop start}# See how we were called.case "$1" instart) start ;;stop) stop ;;restart) stop start ;;status) status $prog RETVAL=$? ;;*) echo $"Usage: $prog {start|stop|restart|status}" exit 1esacexit $RETVAL:wq 保存并退出vim /etc/init.d/php-fpm设置文件的访问权限chmod 755 /etc/init.d/php-fpm可以使用service控制nginx启用关闭了service php-fpm start让nginx服务加入到开机启动指令管理的服务列表中chkconfig --add php-fpm设置开机启动chkconfig php-fpm on附录nginx configure 配置选项--prefix=: Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。--sbin-path= : Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为 /sbin/nginx。--conf-path= : 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为 /conf/nginx.conf。--pid-path= : 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 /logs/nginx.pid。--lock-path= : nginx.lock文件的路径,默认为 /logs/nginx.lock--error-log-path= : 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 /logs/error.log。--http-log-path= : 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 /logs/access.log。--user= : 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。--group= : 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。--builddir= : 指定编译的目录nginx configure 配置选项模块部分--with-rtsig_module : 启用 rtsig 模块--with-select_module --without-select_module : 允许或不允许开启SELECT模式,如果 configure 没有找到更合适的模式,比如:kqueue(sun os),epoll (linux kenel 2.6+), rtsig(实时信号)或者/dev/poll(一种类似select的模式,底层实现与SELECT基本相 同,都是采用轮训方法) SELECT模式将是默认安装模式--with-poll_module --without-poll_module : Whether or not to enable the poll module. This module is enabled by default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure.--with-http_ssl_module : 开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl--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= : 指定 perl 模块的路径--with-perl= : 指定 perl 执行文件的路径--http-log-path= : Set path to the http access log--http-client-body-temp-path= : Set path to the http client request body temporary files--http-proxy-temp-path= : Set path to the http proxy temporary files--http-fastcgi-temp-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= : 指定 C 编译器的路径--with-cpp= : 指定 C 预处理器的路径--with-cc-opt= : Additional parameters which will be added to the variable CFLAGS. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-cc-opt="-I /usr/local/include". If we are using select() and it is necessary to increase the number of file descriptors, then this also can be assigned here: --with-cc-opt="-D FD_SETSIZE=2048".--with-ld-opt= : 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 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64--without-pcre : 禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在 "location" 配置指令中的正则表达式也需要 PCRE 。--with-pcre= : 指定 PCRE 库的源代码的路径。--with-pcre-opt= : Set additional options for PCRE building.--with-md5= : Set path to md5 library sources.--with-md5-opt= : Set additional options for md5 building.--with-md5-asm : Use md5 assembler sources.--with-sha1= : Set path to sha1 library sources.--with-sha1-opt= : Set additional options for sha1 building.--with-sha1-asm : Use sha1 assembler sources.--with-zlib= : Set path to zlib library sources.--with-zlib-opt= : Set additional options for zlib building.--with-zlib-asm= : Use zlib assembler sources optimized for specified CPU, valid values are: pentium, pentiumpro--with-openssl= : Set path to OpenSSL library sources--with-openssl-opt= : Set additional options for OpenSSL building--with-debug : 启用调试日志--add-module= : Add in a third-party module found in directory PAT