zoukankan      html  css  js  c++  java
  • PHP7+Nginx的配置与安装教程详解

    下面脚本之家小编把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/
  • 相关阅读:
    Android Listview 隐藏滚动条
    打开Activity时,不自动显示(弹出)虚拟键盘
    Spring Boot web API接口设计之token、timestamp、sign
    WPF ListView点击删除某一行并获取绑定数据
    WPF中控件的显示与隐藏
    WPF 格式化输出- IValueConverter接口的使用 datagrid列中的值转换显示
    WPF之DataGrid应用 翻页
    WPF中修改DataGrid单元格值并保存
    DataGrid获取单元格的值
    WPF DataGrid 列宽填充表格方法
  • 原文地址:https://www.cnblogs.com/hechunhua/p/7009412.html
Copyright © 2011-2022 走看看