加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-06-18 15:35:23 所属栏目:PHP教程 来源:互联网
导读:本文分步骤,通过文字说明的形式给大家介绍PHP7+Nginx的配置与安装的相关知识,感兴趣的朋友参考下吧。 下面PHP粉丝网小编把PHP7+Nginx的配置与安装教程分享给大家,供大家参考,本文写的不好还请见谅。 系统环境:centos6.5 x64 软件版本:nginx-1.10.0 php-
  本文分步骤,通过文字说明的形式给大家介绍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/。
 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!