PHP7+Nginx的配置与安装教程详解
下面毛票票小编把PHP7+Nginx的配置与安装教程分享给大家,供大家参考,本文写的不好还请见谅。
系统环境:centos6.5x64
软件版本:nginx-1.10.0php-7.0.6
安装Nginx
Nginx官网:http://nginx.org/
先安装编译依赖的一些组件
yuminstallpcrepcre-developensslopenssl-devel-y
1、解压程序包
tarxfnginx-1.10.0.tar.gz cdnginx-1.10.0
2、预编译配置参数
./configure--user=www\ --group=www\ --prefix=/data/server/nginx\ --with-http_stub_status_module\ --without-http-cache\ --with-http_ssl_module\ --with-http_gzip_static_module
3、执行编译
make&&makeinstall
4、替换配置文件
nginx.conf
userwwwwww; worker_processes1; error_log/u01/data/log/nginx/error.logcrit; pid/u01/data/server/nginx/logs/nginx.pid; #Specifiesthevalueformaximumfiledescriptorsthatcanbeopenedbythisprocess. worker_rlimit_nofile65535; events { useepoll; worker_connections65535; } http{ includemime.types; default_typeapplication/octet-stream; #charsetgb2312; server_names_hash_bucket_size128; client_header_buffer_size32k; large_client_header_buffers432k; client_max_body_size8m; sendfileon; tcp_nopushon; keepalive_timeout60; tcp_nodelayon; fastcgi_connect_timeout300; fastcgi_send_timeout300; fastcgi_read_timeout300; fastcgi_buffer_size64k; fastcgi_buffers464k; fastcgi_busy_buffers_size128k; fastcgi_temp_file_write_size128k; gzipon; gzip_min_length1k; gzip_buffers416k; gzip_http_version1.0; gzip_comp_level2; gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml; gzip_varyon; #limit_zonecrawler$binary_remote_addr10m; log_formatmain'$remote_addr-"$request_time"[$time_local]"$request"' '"$status"$body_bytes_sent"$http_referer"' '"$http_user_agent"$http_x_forwarded_for'; log_format'$remote_addr-$remote_user[$time_local]"$request"' '$status$body_bytes_sent"$http_referer"' '"$http_user_agent"$http_x_forwarded_for"$request_time"'; include/u01/alidata/server/nginx/conf/vhosts/*.conf;
虚拟主机配置文件模板
server{ listen8080; server_namelocalhost; indexindex.htmlindex.htmindex.php; root/u01/data/www; location~.*\.(php|php5)?$ { fastcgi_passunix:/var/run/php-fpm/php-fpm.sock; fastcgi_indexindex.php; includefastcgi.conf; } location~.*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires30d; } location~.*\.(js|css)?$ { expires1h; } ###thisistouseopenwebsitelianjielikeonapache## location/{ if(!-e$request_filename){ rewrite^(.*)$/index.php?s=$1last; break; } } location~/.svn/{ denyall; } ###end## access_log/u01/data/log/nginx/access/test.logmain; }
5、提供Nginx启动脚本
#!/bin/bash # nginxd=/u01/data/server/nginx/sbin/nginx nginx_config=/u01/data/server/nginx/conf/nginx.conf nginx_pid=/u01/data/server/nginx/logs/nginx.pid RETVAL=0 prog="nginx" [-x$nginxd]||exit0 #Startnginxdaemonsfunctions. start(){ if[-e$nginx_pid]&&netstat-tunpl|grepnginx&>/dev/null;then echo"nginxalreadyrunning...." exit1 fi echo-n$"Starting$prog!" $nginxd-c${nginx_config} RETVAL=$? echo [$RETVAL=0]&&touch/var/lock/nginx return$RETVAL } #Stopnginxdaemonsfunctions. stop(){ echo-n$"Stopping$prog!" $nginxd-sstop RETVAL=$? echo [$RETVAL=0]&&rm-f/var/lock/nginx } #reloadnginxservicefunctions. reload(){ echo-n$"Reloading$prog!" stop(){ echo-n$"Stopping$prog!" $nginxd-sstop RETVAL=$? echo [$RETVAL=0]&&rm-f/var/lock/nginx } #reloadnginxservicefunctions. reload(){ echo-n$"Reloading$prog!" #kill-HUP`cat${nginx_pid}` $nginxd-sreload RETVAL=$? echo } #Seehowwewerecalled. case"$1"in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; *) echo$"Usage:$prog{start|stop|restart|reload|help}" exit1 esac exit$RETVAL
只需要稍加修改程序路径就可立即使用
安装PHP7
PHP官网:http://php.net/
PHP扩展:http://pecl.php.net/
先安装一些为编译依赖的组建
yum-yinstallgccgcc-c++gcc-g77makelibtoolautoconfpatchunzipautomakelibxml2libxml2-develncursesncurses-devellibtool-ltdl-devellibtool-ltdllibmcryptlibmcrypt-devellibpnglibpng-devellibjpeg-developensslopenssl-develcurlcurl-devellibxml2libxml2-develncursesncurses-devellibtool-ltdl-devellibtool-ltdlautoconfautomakelibaio*
1、解压程序包
tarxfphp-7.0.6.tar.bz2 cdphp-7.0.6
2、安装编译依赖的图片库
jpegsrc.v6b.tar.gz libpng-1.2.50.tar.gz freetype-2.1.10.tar.gz
#安装jpegsrc.v6b.tar.gz #这个需要先创建好存放程序的文件夹不然会报错 mkdir/usr/local/jpeg.6/{bin,lib,include,man/man1}-pv tarxfjpegsrc.v6b.tar.gz cdjpeg-6b/ ./configure--prefix=/usr/local/jpeg.6/ make&&makeinstall #安装libpng-1.2.50.tar.gz tarxflibpng-1.2.50.tar.gz cdlibpng-1.2.50 ./configure--prefix=/usr/local/libpng.1.2.50 make&&makeinstall #安装freetype-2.1.10.tar.gz tarxffreetype-2.1.10.tar.gz cdfreetype-2.1.10 ./configure--prefix=/usr/local/freetype.2.1.10/ make&&makeinstall
3、预编译配置参数
./configure--prefix=/data/server/php\ --enable-opcache\ --with-config-file-path=/u01/data/server/php/etc\ --enable-mysqlnd\ --with-mysqli=mysqlnd\ --with-pdo-mysql=mysqlnd\ --enable-fpm\ --enable-static\ --enable-inline-optimization\ --enable-sockets\ --enable-wddx\ --enable-zip\ --enable-calendar\ --with-gd\ --with-iconv\ --with-openssl\ --with-zlib\ --enable-bcmath\ --enable-soap\ --with-xmlrpc\ --enable-mbstring\ --enable-shared\ --with-curl\ --enable-xml\ --enable-ftp\ --with-mcrypt\ --with-mhash\ --enable-shmop\ --enable-sysvsem\ --enable-mbregex\ --enable-gd-native-ttf\ --enable-pcntl\ --enable-session\ --with-gettext\ --with-freetype-dir=/usr/local/freetype.2.1.10\ --with-jpeg-dir=/usr/local/jpeg.6\ --with-png-dir=/usr/local/libpng.1.2.50\ --disable-ipv6\ --disable-debug\ --disable-maintainer-zts\ --disable-rpath\ --disable-fileinfo\ --without-gdbm\
4、执行编译
make&&makeinstall
5、提供php.ini文件
cpphp.ini-production/u01/data/server/php/etc/php.ini
配置php.ini
#在840行左右-设置PHP的opcache和memcache扩展库 zend_extension=opcache.so extension=memcache.so #722行左右-设置PHP的扩展库路径 extension_dir="/u01/data/server/php7/lib/php/extensions/no-debug-non-zts-20151012/" #避免PHP信息暴露在http头中 expose_php=Off #避免暴露php调用mysql的错误信息 display_errors=Off #开启PHP错误日志(路径在php-fpm.conf中配置) log_errors=On #设置PHP的时区 date.timezone=PRC #开启opcache(1733行左右) opcache.enable=1 #设置PHP脚本允许访问的目录 #open_basedir=/usr/share/nginx/html;
6、配置php-fpm
php-fpm.conf进程服务主配置文件
#设置错误日志的路径 error_log=/var/log/php-fpm/error.log #引入www.conf文件中的配置 include=/usr/local/php7/etc/php-fpm.d/*.conf #设置主进程打开的最大文件数 rlimit_files=102400 www.conf进程服务扩展配置文件 #设置用户和用户组 user=www group=www #设置php监听方式 #listen=127.0.0.1:9000 #注意这里要设置PHP套接字文件的权限,默认是root,Nginx无法访问。 listen=/var/run/php-fpm/php-fpm.sock #开启慢日志 slowlog=/var/log/php-fpm/php-slow.log request_slowlog_timeout=10s #设置工作进程数(根据实际情况设置) pm.max_children=50 #这里需要注意,pm.start_servers不能小于pm.min_spare_servers pm.start_servers=5 pm.min_spare_servers=5 pm.max_spare_servers=10 pm.max_requests=10240 #设置php的session目录(所属用户和用户组都是www) php_value[session.save_handler]=files php_value[session.save_path]=/var/tmp/php/session
7、提供php-fpm启动脚本
#!/bin/sh # prefix=/u01/data/server/php7 exec_prefix=${prefix} php_fpm_BIN=${exec_prefix}/sbin/php-fpm php_fpm_CONF=${prefix}/etc/php-fpm.conf php_fpm_PID=${prefix}/var/run/php-fpm.pid php_opts="--fpm-config$php_fpm_CONF--pid$php_fpm_PID" wait_for_pid(){ try=0 whiletest$try-lt35;do case"$1"in 'created') if[-f"$2"];then try='' break fi ;; 'removed') if[!-f"$2"];then try='' break fi ;; esac echo-n. try=`expr$try+1` sleep1 done } case"$1"in start) echo-n"Startingphp-fpm" $php_fpm_BIN--daemonize$php_opts if["$?"!=0];then echo"failed" exit1 fi wait_for_pidcreated$php_fpm_PID if[-n"$try"];then echo"failed" exit1 else echo"done" fi ;; stop) echo-n"Gracefullyshuttingdownphp-fpm" if[!-r$php_fpm_PID];then echo"warning,nopidfilefound-php-fpmisnotrunning?" exit1 fi kill-QUIT`cat$php_fpm_PID` wait_for_pidremoved$php_fpm_PID if[-n"$try"];then echo"failed.Useforce-quit" exit1 else echo"done" fi ;; status) if[!-r$php_fpm_PID];then echo"php-fpmisstopped" exit0 fi PID=`cat$php_fpm_PID` ifps-p$PID|grep-q$PID;then echo"php-fpm(pid$PID)isrunning..." else echo"php-fpmdeadbutpidfileexists" fi ;; force-quit) echo-n"Terminatingphp-fpm" if[!-r$php_fpm_PID];then echo"warning,nopidfilefound-php-fpmisnotrunning?" exit1 fi kill-TERM`cat$php_fpm_PID` wait_for_pidremoved$php_fpm_PID if[-n"$try"];then echo"failed" exit1 else echo"done" fi ;; restart) $0stop $0start ;; reload) echo-n"Reloadservicephp-fpm" if[!-r$php_fpm_PID];then echo"warning,nopidfilefound-php-fpmisnotrunning?" exit1 fi kill-USR2`cat$php_fpm_PID` echo"done" ;; *) echo"Usage:$0{start|stop|force-quit|restart|reload|status}" exit1 ;; esac
八、启动php-fpm程序
/etc/init.d/php-fpmstart #修改套接字文件权限 chown-R/var/run/php-fpm/