Centos安裝PHP7及配置php-fpm開機啟動


版權聲明:本文為 樂意黎 原創文章,未經允許不得鏡像、采集博客內容。如有轉載, 請務必注明來源。

https://blog.csdn.net/aerchi/article/details/83858180

 


centos 7 編譯安裝 php-7.2.11的步驟

在官網下載php-7.2.11的php壓縮包,centos 7 安裝 php-7.2.11的步驟,http://cn2.php.net/distributions/php-7.2.11.tar.gz

cd /usr/local/src
wget -c http://cn2.php.net/distributions/php-7.2.11.tar.gz
下載好后解壓 php-7.2.11.tar.gz 壓縮包,並進入解壓后的目錄

tar -xzvf php-7.2.11.tar.gz
cd php-7.2.11
安裝php7需要的一些依賴庫包 libxml2和一些其他依賴的擴展庫

yum -y install libxml2 
yum -y install libxml2-devel 
yum -y install openssl 
yum -y install openssl-devel 
yum -y install curl-devel 
yum -y install libjpeg-devel 
yum -y install libpng-devel 
yum -y install freetype-devel
yum -y install bzip2-devel
yum -y install libmcrypt libmcrypt-devel
yum -y install postgresql-devel
yum -y install aspell-devel
yum -y install readline-devel
yum -y install libxslt-devel
yum -y install net-snmp-devel
yum -y install unixODBC-devel
yum -y install libicu-devel
yum -y install libc-client-devel
yum -y install libXpm-devel
yum -y install libvpx-devel
yum -y install enchant-devel
yum -y install openldap
yum -y install openldap-devel
yum -y install db4-devel
yum -y install gmp-devel
yum -y install sqlite-devel
yum -y install mysql-devel
安裝前的環境配置檢查,php7的一些依賴包的檢查和php擴展的啟動,這個過程如果缺少php依賴的庫包會有報錯提示。

添加用戶和組: (此處用戶和組為 nginx, 我 nginx 用的用戶名 ) groupadd -r nginx && useradd -r -g nginx -s /sbin/nologin

php 安裝配置

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-xmlrpc --with-openssl --with-mcrypt --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache

 

對php7進行編譯和安裝的操作

make && make install

( 如果出現 make: *** [sapi/cli/php] Error 1 的錯誤,通過繼續執行 make ZEND_EXTRA_LIBS='-liconv' 命令解決

編譯成功,查看php版本

/usr/local/php/bin/php -v

運行php-fpm

/usr/local/php/sbin/php-fpm
 

啟動php-fpm可能會遇到的錯誤,基本都是配置文件配置和重命名的問題:

錯誤一:缺少www.conf配置文件(WARNING: Nothing  matches the include pattern /usr/local/php/etc/php-fpm.d/*.conf),需要把/usr/local/php/etc/php-fpm.d/*.conf目錄中的www.conf.default重命名為www.conf。

錯誤二:缺少php-fpm.conf配置文件 需要在/usr/local/php/etc/php-fpm.conf 把默認的配置文件php-fpm.conf.default改成php-fpm.conf

錯誤三:缺少php.ini配置文件 php7編譯安裝好后會發現沒有php.ini配置文件,需要在解壓包的根目錄中復制php.ini-production或php.ini-development並重命名為php.ini到php編譯好的安裝目錄中的/usr/local/php/etc文件夾即可。

在centos7中編譯安裝好php后,系統重啟后並不會對php進行開機啟動,所以需要對centos7添加開機啟動腳本對php進行開機啟動服務。

php7編譯安裝方法:http://zixuephp.net/article-207.html    

手動啟動:

/usr/local/php/sbin/php-fpm
開機自動啟動:

開啟配置php-fpm pid

#找到php-fpm.conf配置文件
/usr/local/php/etc/php-fpm.conf
#開啟pid ,去掉分號注釋
pid = run/php-fpm.pid
創建開機啟動腳本

在Linux中將php-fpm配置成服務的方法

PHP 源文件路徑:   /usr/local/src/php-7.2.11/
PHP 安裝后路徑:   /usr/local/php/

1. 配置 php-fpm.conf

vim /usr/local/php/etc/php-fpm.conf

php-fpm.pid 目錄必須指向:/usr/local/php/var/run/php-fpm.pid
 

2. 拷貝php-fpm腳本至/etc/init.d目錄

cp /usr/local/src/php-7.2.11/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
 
prefix=/usr/local/php
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"
    ;;
 
    configtest)
        $php_fpm_BIN -t
    ;;
 
    *)
        echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}"
        exit 1
    ;;
 
esac

 


3.設置權限並啟動php-fpm:

chmod 755 /etc/init.d/php-fpm

/etc/init.d/php-fpm start

chkconfig –add php-fpm

最后,給出php-fpm以服務的方式啟動、停止和重啟:

service php-fpm start

service php-fpm stop

service php-fpm reload

PHP-FPM 自啟動配置服務:  
vim /etc/rc.d/rc.local

 

 

查看開機啟動的所有服務

chkconfig --list

nginx demo 配置:(不要忘記chown www-data:www-data 網站目錄 不然沒權限)

 

server {
listen 80;
server_name {{ server_name }};
access_log /data/logs/nginx/{{ server_name }}/access.log;
error_log /data/logs/nginx/{{ server_name }}/error.log;
location / {
index index.php index.html index.htm;
root /data/www/wwwroot/{{ server_name }}/;

if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php;
}
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
}
}
 

php-fpm配置 (重命名兩個文件 其他看實際情況配置(略。。。))
www.conf.default -> www.conf
php-fpm.conf.default -> php-fpm.conf
啟動: php-fpm -D
nginx -s reload
---------------------
作者:aerchi
來源:CSDN
原文:https://blog.csdn.net/aerchi/article/details/83858180
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM