站長資訊網
        最全最豐富的資訊網站

        CentOS下Nginx+PHP7 安裝及配置

        今天花了幾個小時折騰了下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/

        九、相關錯誤處理

        錯誤一:configure: error: GD build test failed. Please check the config.log for details

        在本地已經安裝了 gd 和 gd-devel 庫以后,還是出現該錯誤,那么可能是編譯工具找不到相關庫(jpeg、gd),應該在編譯參數后面添加  LDFLAGS=’-L /usr/path_to/lib’ 如果是 64 位的系統應該寫為: LDFLAGS=’-L /usr/lib64′  然后重新 configure 即可。

        # example
        ./configure –prefix=/usr/server/php –enable-opcache –enable-opcache –enable-opcache –with-mysqli=mysqlnd –with-mysqli=mysqlnd LDFLAGS=’-L /usr/lib64′

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 无码国内精品久久人妻麻豆按摩| 一本一本久久a久久精品综合麻豆| 久久精品亚洲男人的天堂| 精品福利一区二区三区免费视频 | 国产精品亚洲不卡一区二区三区| 精品熟女少妇a∨免费久久| 国产精品热久久无码av| 精品九九久久国内精品| japanese乱人伦精品| 无码精品黑人一区二区三区| 亚洲精品成人网久久久久久| 精品久久久久久无码人妻热| 99热精品久久只有精品| 国产亚洲欧洲精品| 国产成人久久精品激情| 久久精品国产亚洲AV香蕉| 亚洲精品成人片在线播放 | 久久精品国产亚洲5555| 无码精品一区二区三区免费视频| aaa级精品久久久国产片| 国产精品对白刺激久久久| 乱色精品无码一区二区国产盗| 亚洲中文久久精品无码ww16| 亚欧乱色国产精品免费视频| 欧美日韩国产精品| 少妇亚洲免费精品| 亚洲国产午夜中文字幕精品黄网站 | 人妻少妇看A偷人无码精品视频| 狠狠精品久久久无码中文字幕 | 欧美成人精品第一区二区三区 | 国产精品偷伦视频免费观看了| 午夜精品免费在线观看| 99久久婷婷国产综合精品草原| 国产福利精品视频自拍 | 亚洲国产精品一区二区第一页免| 四虎国产精品永久在线无码| 无翼乌无遮挡全彩老师挤奶爱爱帝国综合社区精品 | 久久精品中文字幕一区| 久久五月精品中文字幕| 无码乱码观看精品久久| 亚洲精品中文字幕乱码三区|