• Nginx+PHP7 安装及配置


    系统环境: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
    # nginx Startup script for the Nginx HTTP Server
    
    nginxd=/alidata/server/nginx/sbin/nginx
    nginx_config=/alidata/server/nginx/conf/nginx.conf
    nginx_pid=/alidata/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!"
        #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 gd-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
    # http://www.ijg.org/
    #这个需要先创建好存放程序的文件夹不然会报错
    
    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
    # http://www.libpng.org/pub/png/libpng.html
    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
    # https://www.freetype.org/download.html
    
    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=/usr/local/php7 
    --enable-opcache 
    --with-config-file-path=/usr/local/php7/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
    
    # make ZEND_EXTRA_LIBS='-liconv'
     

    5、提供php.ini文件

    cp php.ini-production /usr/local/php7/etc/php.ini
     
    • 配置php.ini

    # 在840行左右-设置PHP的opcache和memcache扩展库
    
    zend_extension=opcache.so
    extension=memcache.so
    
    # 722行左右-设置PHP的扩展库路径
    
    extension_dir = "/usr/local/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
    request_terminate_timeout = 30
    
    # 设置工作进程数(根据实际情况设置)
    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=/usr/local/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 www.www /var/run/php-fpm/

    著作权归作者所有:来自51CTO博客作者qw87112的原创作品
  • 相关阅读:
    Linux(CentOS)下安装OMNet++
    Linux(CentOS)安装JDK
    给电脑安装Linux系统(CentOS)
    OmNet++遇到的问题
    数论倒数总结
    [AHOI2007]密码箱
    [AHOI2005]约数研究
    Spark scala groupBy后求和
    Scala Seq创建简单的Spark DataFrame
    Spark DataFrame分组后选取第一行
  • 原文地址:https://www.cnblogs.com/bowen-li/p/s121213.html
Copyright © 2020-2023  润新知