PHP7+Nginx的配置与安装教程详解


Posted in PHP onMay 10, 2016

下面三水点靠木小编把PHP7+Nginx的配置与安装教程分享给大家,供大家参考,本文写的不好还请见谅。

系统环境:centos6.5 x64

软件版本:nginx-1.10.0 php-7.0.6

安装 Nginx

Nginx官网:http://nginx.org/

先安装编译依赖的一些组件

yum install pcre pcre-devel openssl openssl-devel -y

1、解压程序包

tar xf nginx-1.10.0.tar.gz 

cd nginx-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 && make install

4、替换配置文件

nginx.conf

user www www;
worker_processes 1;
error_log /u01/data/log/nginx/error.log crit;
pid /u01/data/server/nginx/logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
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;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
log_format main '$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 {
listen 8080;
server_name localhost;
index index.html index.htm index.php;
root /u01/data/www;
location ~ .*\.(php|php5)?$
{
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
###this is to use open website lianjie like on apache##
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location ~ /.svn/ {
deny all;
}
###end##
access_log /u01/data/log/nginx/access/test.log main;
}

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 ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ] && netstat -tunpl | grep nginx &> /dev/null;then
echo "nginx already running...."
exit 1
fi
echo -n $"Starting $prog!"
$nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog!"
$nginxd -s stop
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/nginx
}
# reload nginx service functions.
reload() {
echo -n $"Reloading $prog!"
stop() {
echo -n $"Stopping $prog!"
$nginxd -s stop
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/nginx
}
# reload nginx service functions.
reload() {
echo -n $"Reloading $prog!"
#kill -HUP `cat ${nginx_pid}`
$nginxd -s reload
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|help}"
exit 1
esac
exit $RETVAL

只需要稍加修改程序路径就可立即使用

安装 PHP7

PHP官网:http://php.net/

PHP扩展:http://pecl.php.net/

先安装一些为编译依赖的组建

yum -y install gcc gcc-c++ gcc-g77 make libtool autoconf patch unzip automake libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl libmcrypt libmcrypt-devel libpng libpng-devel libjpeg-devel openssl openssl-devel curl curl-devel libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl autoconf automake libaio*

1、解压程序包

tar xf php-7.0.6.tar.bz2

cd php-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
tar xf jpegsrc.v6b.tar.gz 
cd jpeg-6b/
./configure --prefix=/usr/local/jpeg.6/
make && make install
# 安装 libpng-1.2.50.tar.gz
tar xf libpng-1.2.50.tar.gz
cd libpng-1.2.50
./configure --prefix=/usr/local/libpng.1.2.50
make && make install
# 安装 freetype-2.1.10.tar.gz
tar xf freetype-2.1.10.tar.gz
cd freetype-2.1.10
./configure --prefix=/usr/local/freetype.2.1.10/
make && make install

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 && make install

5、提供php.ini文件

cp php.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
while test $try -lt 35 ; 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`
sleep 1
done
}
case "$1" in
start)
echo -n "Starting php-fpm "
$php_fpm_BIN --daemonize $php_opts
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi
wait_for_pid created $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Gracefully shutting down php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -QUIT `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed. Use force-quit"
exit 1
else
echo " done"
fi
;;
status)
if [ ! -r $php_fpm_PID ] ; then
echo "php-fpm is stopped"
exit 0
fi
PID=`cat $php_fpm_PID`
if ps -p $PID | grep -q $PID; then
echo "php-fpm (pid $PID) is running..."
else
echo "php-fpm dead but pid file exists"
fi
;;
force-quit)
echo -n "Terminating php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -TERM `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reload service php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -USR2 `cat $php_fpm_PID`
echo " done"
;;
*)
echo "Usage: $0 {start|stop|force-quit|restart|reload|status}"
exit 1
;;
esac

八、启动php-fpm程序

/etc/init.d/php-fpm start
# 修改套接字文件权限
chown -R /var/run/php-fpm/
PHP 相关文章推荐
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
May 15 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
php外部执行命令函数用法小结
Oct 11 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 PHP
php+mysql实现的二级联动菜单效果详解
May 10 #PHP
浅析Yii2缓存的使用
May 10 #PHP
php简单统计在线人数的方法
May 10 #PHP
使用php实现从身份证中提取生日
May 09 #PHP
PHP使用内置函数生成图片的方法详解
May 09 #PHP
php时间计算相关问题小结
May 09 #PHP
php数据访问之查询关键字
May 09 #PHP
You might like
php仿ZOL分页类代码
2008/10/02 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
onpropertypchange
2006/07/01 Javascript
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
查看python下OpenCV版本的方法
2018/08/03 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
英文版餐饮运营管理求职信
2013/11/06 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
会计系毕业生求职信
2014/05/28 职场文书
学校财务管理制度
2015/08/04 职场文书
Python基础知识学习之类的继承
2021/05/31 Python