PHP7+Nginx的配置与安装教程详解
本文分步骤,通过文字说明的形式给大家介绍PHP7+Nginx的配置与安装的相关知识,感兴趣的朋友参考下吧。
下面PHP粉丝网小编把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/