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/