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 相关文章推荐
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 PHP
PHP 读取和编写 XML
Nov 19 PHP
PHP连接操作access数据库实例
Mar 30 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHP与Web页面的交互示例详解二
Aug 04 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 XML数据解析代码
2010/05/26 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
python实现各进制转换的总结大全
2017/06/18 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
Python中函数的返回值示例浅析
2019/08/28 Python
django框架forms组件用法实例详解
2019/12/10 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
C#的几个面试问题
2016/05/22 面试题
会计专业自荐信范文
2013/12/02 职场文书
旷课检讨书2000字
2014/01/14 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
八项规定整改措施
2014/02/12 职场文书
护理见习报告范文
2014/11/03 职场文书
2014年英语工作总结
2014/12/20 职场文书
继续教育个人总结
2015/03/03 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
HTML基础详解(上)
2021/10/16 HTML / CSS
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL