摘要:因?yàn)閷?duì)二進(jìn)制比較熟悉,所以沒有用的方式進(jìn)行安裝,采用的二進(jìn)制安裝方式比較靈活,但是因?yàn)榈谝淮伟惭b的高版本,也引入了很多的問題,總而言之,就是在錯(cuò)誤中不斷摸索錯(cuò)誤,最終找到一個(gè)還能用的道路。
通過性能評(píng)測(cè),可以看出PHP7對(duì)性能進(jìn)行了較大的優(yōu)化,相比與PHP5.x有50%-150%的性能提升,因此,為了提升我們服務(wù)的響應(yīng)速度,降低機(jī)器負(fù)載,需要進(jìn)行版本升級(jí)。
因?yàn)閷?duì)二進(jìn)制比較熟悉,所以沒有用yum的方式進(jìn)行安裝,采用的二進(jìn)制安裝方式比較靈活,但是因?yàn)榈谝淮伟惭bPHP的高版本,也引入了很多的問題,總而言之,就是在錯(cuò)誤中不斷摸索錯(cuò)誤,最終找到一個(gè)還能用的道路。
下載PHP7.2官方下載地址:
wget http://cn2.php.net/get/php-7.2.13.tar.bz2/from/this/mirror -O php-7.2.13.tar.bz2 tar -xjvf php-7.2.13.tar.bz2 // 用于后面編譯的生成代碼目錄 mkdir php7 cd php-7.2.13配置PHP
PHP編譯前提供了大量的參數(shù)進(jìn)行配置,包括支持的擴(kuò)展、執(zhí)行用戶等,可以查看參數(shù)列表。
我們進(jìn)行最簡單的配置,只支持php-fpm管理,因?yàn)槲覀兊?b>PHP是配合Ngnix來進(jìn)行服務(wù),因此還要指定執(zhí)行的用戶:
./configure --prefix=/home/work/lnmp/php7 --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx
我的第一次編譯報(bào)錯(cuò):configure: error: OpenSSL version 1.0.1 or greater required.
解決這個(gè)問題,需要首先看自己的openssl的版本信息:
$ openssl version OpenSSL 1.0.0-fips 29 Mar 2010
因此更新openssl版本:
wget https://www.openssl.org/source/openssl-1.1.0j.tar.gz tar -xzvf openssl-1.1.0j.tar.gz cd openssl-1.1.0j ./config --prefix=/usr/local/ssl shared zlib-dynamic make make install mv /usr/bin/openssl /usr/bin/openssl1.0.0 ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
安裝完畢再次配置依然報(bào)相同錯(cuò)誤,因此我們需要手動(dòng)指定openssl的位置:
// 查看指定openssl的參數(shù) $./configure --help | grep openssl --with-openssl=DIR Include OpenSSL support (requires OpenSSL >= 1.0.1) --with-openssl-dir=DIR FTP: openssl install prefix --with-openssl-dir=DIR SNMP: openssl install prefix $ ./configure --prefix=/home/work/lnmp/php7 --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-openssl=/usr/bin/openssl安裝
make && make install
啟動(dòng)因?yàn)槲沂巧?jí),所以原有Nginx和代碼以及配置文件都是OK的狀態(tài),可能在這個(gè)階段你會(huì)遇到不同的問題,這個(gè)得結(jié)合你的情況進(jìn)行解決。
cd php7 // 復(fù)制php.ini和php-fpm.conf到etc/目錄下,這個(gè)過程你也可以自己配置啊 // 生成兩個(gè)目錄用于日志和sock文件保存 mkdir log mkdir run sbin/php-fpm -c etc/php.ini -y etc/php-fpm.conf -p .
啟動(dòng)成功,訪問URL,報(bào)錯(cuò):502 Bad Gateway
502 Bad Gateway根據(jù)nginx的訪問日志可以看出:
$ cat error.log 2018/12/14 10:54:18 [crit] 6260#0: *206 open() "./run/factcgi_temp/0000000015" failed (13: Permission denied) while reading upstream, client: 172.24.162.178, se rver: , request: "GET /oss/index.php HTTP/1.1", upstream: "fastcgi://unix:run/phpfpm.sock:", host: "xx.xx. com"
查閱【資料1】【資料2】可以知道,在PHP老版本里,有一個(gè)bug,任何能夠連接socket文件的用戶可以通過它執(zhí)行任何命令,特別是在Ubuntu系統(tǒng)里允許www-data用戶執(zhí)行任何代碼。因此最新版本里修復(fù)了這個(gè)錯(cuò)誤,但也導(dǎo)致我們出現(xiàn)了502的問題,因此我們需要配套升級(jí)我們的配置文件:
// 在nginx.conf頭部添加執(zhí)行用戶 user www www; // 在php-fpm.conf里放棄注釋這3行 ; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. ; Default Values: user and group are set as the running user ; mode is set to 0666 listen.owner = www listen.group = www listen.mode = 0660
重啟nginx和php-fpm進(jìn)程,依然報(bào)錯(cuò):
nginx: [emerg] getpwnam("www") failed
因?yàn)槲覀儧]有加上這個(gè)用戶:
useradd -r www
搞定,重啟nginx和php-fpm進(jìn)程,服務(wù)正常。
總結(jié)使用二進(jìn)制來安裝PHP7.2,在編譯的時(shí)候按需加載擴(kuò)展,如果有問題,我們可以重新編譯,也可以動(dòng)態(tài)擴(kuò)展。過程比較簡單,但我的服務(wù)并沒有正常服務(wù),因?yàn)槭褂玫?b>Yii2.0不能夠完美兼容PHP7,我還得對(duì)Yii2.0進(jìn)行升級(jí),以及對(duì)自身的代碼進(jìn)行升級(jí)。
參考資料PHP7.2下載地址:http://php.net/downloads.php
PHP的性能演進(jìn):http://www.laruence.com/2016/...
OpenSSl downloads:https://www.openssl.org/source/
OpenSSL 安裝、介紹:https://www.jianshu.com/p/291...
Centos7 安裝 PHP7最新版:https://www.jianshu.com/p/246...
CentOS 7 Linux 安裝PHP7.2 - 編譯安裝:https://blog.csdn.net/ai_zxc/...
nginx error connect to php5-fpm.sock failed (13: Permission denied):https://stackoverflow.com/que...
nginx安裝 nginx: [emerg] getpwnam(“www”) failed 錯(cuò)誤:https://blog.csdn.net/justdoi...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/29822.html
摘要:因?yàn)閷?duì)二進(jìn)制比較熟悉,所以沒有用的方式進(jìn)行安裝,采用的二進(jìn)制安裝方式比較靈活,但是因?yàn)榈谝淮伟惭b的高版本,也引入了很多的問題,總而言之,就是在錯(cuò)誤中不斷摸索錯(cuò)誤,最終找到一個(gè)還能用的道路。 通過性能評(píng)測(cè),可以看出PHP7對(duì)性能進(jìn)行了較大的優(yōu)化,相比與PHP5.x有50%-150%的性能提升,因此,為了提升我們服務(wù)的響應(yīng)速度,降低機(jī)器負(fù)載,需要進(jìn)行版本升級(jí)。 因?yàn)閷?duì)二進(jìn)制比較熟悉,所以沒...
摘要:可選,拋出異常的級(jí)別。示例教程更新一條數(shù)據(jù)標(biāo)題。命令行下執(zhí)行進(jìn)入數(shù)據(jù)庫進(jìn)入庫可查看當(dāng)前庫用戶列表執(zhí)行新建用戶設(shè)置賬戶密碼,并指定級(jí)別。重啟服務(wù)重新進(jìn)入數(shù)據(jù)庫,發(fā)現(xiàn)命令無法執(zhí)行,報(bào)權(quán)限不足錯(cuò)誤。命令可以正常執(zhí)行。 1.MongoDB 簡介 MongoDB 是由C++語言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫系統(tǒng)。在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。MongoDB ...
摘要:可選,拋出異常的級(jí)別。示例教程更新一條數(shù)據(jù)標(biāo)題。命令行下執(zhí)行進(jìn)入數(shù)據(jù)庫進(jìn)入庫可查看當(dāng)前庫用戶列表執(zhí)行新建用戶設(shè)置賬戶密碼,并指定級(jí)別。重啟服務(wù)重新進(jìn)入數(shù)據(jù)庫,發(fā)現(xiàn)命令無法執(zhí)行,報(bào)權(quán)限不足錯(cuò)誤。命令可以正常執(zhí)行。 1.MongoDB 簡介 MongoDB 是由C++語言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫系統(tǒng)。在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。MongoDB ...
閱讀 2078·2023-04-25 17:57
閱讀 1284·2021-11-24 09:39
閱讀 2482·2019-08-29 16:39
閱讀 3311·2019-08-29 13:44
閱讀 3116·2019-08-29 13:14
閱讀 2313·2019-08-26 11:36
閱讀 3810·2019-08-26 11:00
閱讀 948·2019-08-26 10:14