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

CentOS下Nginx+PHP7 安裝及配置

今天花了幾個小時折騰了下Nginx+PHP7編譯安裝和配置,寫個文章記錄下。

系統(tǒng)環(huán)境: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、預編譯配置參數(shù)

./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、執(zhí)行編譯

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/
#這個需要先創(chuàng)建好存放程序的文件夾不然會報錯

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、預編譯配置參數(shù)

./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、執(zhí)行編譯

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的時區(qū)

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

# ???置主進程打開的最大文件數(shù)
rlimit_files = 102400

•www.conf 進程服務擴展配置文件

# 設置用戶和用戶組
user = www
group = www

# 設置php監(jiān)聽方式
# 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

# 設置工作進程數(shù)(根據(jù)實際情況設置)
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 庫以后,還是出現(xiàn)該錯誤,那么可能是編譯工具找不到相關庫(jpeg、gd),應該在編譯參數(shù)后面添加  LDFLAGS=’-L /usr/path_to/lib’ 如果是 64 位的系統(tǒng)應該寫為: 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號
国产成人精品国内自产拍| 日韩一级片在线观看| 精品人妻av区乱码| 久久这里只精品99re免费| 国产午夜亚洲精品午夜鲁丝片 | 国产伦精品一区三区视频| 精品久久人妻av中文字幕| 亚洲一区无码精品色| 亚洲日韩乱码中文无码蜜桃臀| 国产精品视频无圣光一区| 国产麻豆精品一区二区三区| 亚洲性色精品一区二区在线| 久久6这里只有精品| 麻豆文化传媒精品一区二区| 亚洲精品天天影视综合网| 久久精品中文字幕| 日本精品久久久久中文字幕| 国内揄拍高清国内精品对白| 国产在线无码精品电影网| 2048亚洲精品国产| 亚州日韩精品专区久久久| 精品少妇人妻av无码专区 | 中文字幕一精品亚洲无线一区 | 精品久久久久中文字| 亚洲AV永久无码精品一区二区国产| 精品国精品自拍自在线| 日韩视频在线观看| 日韩在线视频一区二区三区| 日韩在线一区二区三区视频| 日韩一级在线播放| 色哟哟国产精品免费观看| 色妞www精品视频免费看| 日本精品一区二区三区四区| 黑人巨大精品播放| 亚洲国产高清精品线久久| 亚洲精品国产自在久久| 国产精品青青在线观看爽香蕉 | 久久久久久久久毛片精品 | 日韩在线观看网站| 亚洲欧洲中文日韩av乱码| 日韩精品无码一区二区三区|