CentOS7安装Nginx-1.9.9+PHP5.6
linux系统CentOS7 Nginx 下载地址http://nginx.org/en/download.html wget下载路径http://nginx.org/download/nginx-1.9.9.tar.gz 这里用到的是 nginx-1.9.9.tar.gz PCRE 下载地址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.gz zlib 下载地址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.gz openssl 下载地址http://www.openssl.org/source/ wget下载路径http://www.openssl.org/source/openssl-1.0.2e.tar.gz 这里用到的是 openssl-1.0.2e.tar.gz 用 WinSCP上传到指定的目录下,这里是 /data/work/soft shell端 先安装其他必须软件,安装gcc、gcc-c++ yum -y install gcc gcc-c++ 进入到安装包目录 cd /data/work/soft 解压缩PCRE到当前文件夹 tar -zxvf pcre-8.37.tar.gz 进入解压缩目录 cd pcre-8.37 配置安装目录 ./configure --prefix=/data/work/pcre 编译 make 安装 make install 返回上级目录 cd ../ 解压缩zlib到当前文件夹 tar -zxvf zlib-1.2.8.tar.gz 进入解压缩目录 cd zlib-1.2.8 配置安装目录 ./configure --prefix=/data/work/zlib 编译 make 安装 make install 返回上级目录 cd ../ 解压缩openssl到当前文件夹 tar -zxvf openssl-1.0.2e.tar.gz 进入解压缩目录 cd openssl-1.0.2e 配置安装目录 ./config --prefix=/data/work/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=/data/work/nginx \ --conf-path=/data/work/nginx/conf/nginx.conf \ --pid-path=/data/work/nginx/logs/nginx.pid \ --sbin-path=/data/work/nginx/sbin/nginx \ --lock-path=/data/work/nginx/logs/nginx.lock \ --with-http_ssl_module \ --with-pcre=/data/work/soft/pcre-8.37 \ --with-zlib=/data/work/soft/zlib-1.2.8 \ --with-openssl=/data/work/soft/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; #} 将前面的#全部去掉 并将所有 root html; 变成 root /data/work/web/test; 将 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 变成 fastcgi_param SCRIPT_FILENAME /data/work/web/test$fastcgi_script_name; location对应匹配不同请求方式或请求路径 root该请求访问的页面存放目录 nginx要调用fastcgi解析PHP文件,/data/work/web/test是fastcgi要读取PHP文件的具体位置 nginx默认用9000端口调用php-fpm的 如果保存报错则 :wq! 强制保存(前提root管理权限) vim /data/work/nginx/conf/nginx.conf /* 启动nginx /data/work/nginx/sbin/nginx 重启 /data/work/nginx/sbin/nginx -s reload */ 将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: /data/work/nginx/logs/nginx.pid # config: /data/work/nginx/conf/nginx.conf #nginx程序--sbin-path路径 nginxd=/data/work/nginx/sbin/nginx #nginx配置文件--conf-path路径 nginx_config=/data/work/nginx/conf/nginx.conf #nginx pid文件--sbin-path的路径 nginx_pid=/data/work/nginx/logs/nginx.pid #nginx lock文件--lock-path的路径 nginx_lock=/data/work/nginx/logs/nginx.lock RETVAL=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 1 fi 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" 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 :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-devel yum 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=/data/work/php --with-config-file-path=/data/work/php --with-mysql=/data/work/mysql --with-mysqli=/data/work/mysql/bin/mysql_config --enable-fastCGI --enable-fpm 编译 make 安装 make install 将安装包里的开发版php.ini复制到配置php安装时指定存放php.ini的位置即--with-config-file-path指向的位置 cp php.ini-development /data/work/php/php.ini 将/data/work/php/etc/php-fpm.conf.default同目录下复制一份命名php-fpm.conf cp /data/work/php/etc/php-fpm.conf.default /data/work/php/etc/php-fpm.conf 使php-fpm.pid保存在指定目录/data/work/php/var/run/php-fpm.pid(设定开机启动时用到) 找到 ;pid = run/php-fpm.pid 去掉前面的 ; vim /data/work/php/etc/php-fpm.conf /* 启动php-fpm /data/work/php/sbin/php-fpm */ 编辑php.ini php5默认<?php echo date("Y-m-d H:i:s");?>时间与北京时间相差八小时(少八小时) 为什么呢?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 = On vim /data/work/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: /data/work/php/var/run/php-fpm.pid # config: /data/work/php/etc/php-fpm.conf php_command=/data/work/php/sbin/php-fpm php_config=/data/work/php/etc/php-fpm.conf php_pid=/data/work/php/var/run/php-fpm.pid RETVAL=0 #使service可控制的名称 prog="php-fpm" # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network #start function start(){ 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" in start) start ;; stop) stop ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|status}" exit 1 esac exit $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=<path> : Nginx安装路径。如果没有指定,默认为 /data/work/nginx。 --sbin-path=<path> : Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为<prefix>/sbin/nginx。 --conf-path=<path> : 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为<prefix>/conf/nginx.conf。 --pid-path=<path> : 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 <prefix>/logs/nginx.pid。 --lock-path=<path> : nginx.lock文件的路径,默认为<prefix>/logs/nginx.lock --error-log-path=<path> : 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 <prefix>/logs/error.log。 --http-log-path=<path> : 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 <prefix>/logs/access.log。 --user=<user> : 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。 --group=<group> : 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。 --builddir=<DIR> : 指定编译的目录 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=<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> : 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 /data/work/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=<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 /data/work/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> : Set additional options for PCRE building. --with-md5=<DIR> : Set path to md5 library sources. --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 PAT