centos 7.2 安裝PHP7及新增php-fpm開機啟動
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依賴的庫包會有報錯提示。
新增使用者和組 groupadd -r www && useradd -r -g www -s /sbin/nologin
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --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
或 - /usr/local/php/sbin/php-fpm -D
啟動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
建立開機啟動指令碼
- vim /etc/init.d/php-fpm #編輯 i
#reboot script
#!/bin/sh
# chkconfig: 2345 15 95
# processname: php-fpm
# config: /usr/local/php/etc/php.ini
# description: PHP-FPM
# Comments to support chkconfig on CentOS
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="php-fpm daemon"
NAME=php-fpm
DAEMON=/usr/local/php/sbin/$NAME
CONFIGFILE=/usr/local/php/etc/php-fpm.conf
PIDFILE=/usr/local/php/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
d_start() {
$DAEMON -y $CONFIGFILE || echo -n " already running"
}
d_stop() {
kill -QUIT `cat $PIDFILE` || echo -n " not running"
}
d_reload() {
kill -HUP `cat $PIDFILE` || echo -n " can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC is success"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC is success"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC configuration..."
d_reload
echo "reloaded."
;;
restart)
echo -n "Restarting $DESC is success"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
對開機啟動指令碼新增所有人都執行的許可權
- chmod a+x /etc/init.d/php-fpm
php-fpm加入開機啟動服務
- chkconfig --add php-fpm
- chkconfig php-fpm on
檢視開機啟動的所有服務
- chkconfig --list
服務操作
- #啟動服務
- service php-fpm start
- #停止服務
- service php-fpm stop
- #重啟服務
- service php-fpm reload
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