Nginx + PHP 7 설치 및 설정

12789 단어 nginxPHPfpm
오늘 은 Nginx + PHP 7 컴 파일 설치 와 설정 을 몇 시간 동안 고생 시 켰 습 니 다.
시스템 환경: centos 6.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

    프로그램 경 로 를 조금 만 수정 하면 바로 사용 할 수 있다.
    PHP 7 설치
    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

    8. php - fpm 프로그램 시작
    /etc/init.d/php-fpm start
    
    #          
    chown -R  /var/run/php-fpm/

    좋은 웹페이지 즐겨찾기