国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Linux安裝二進制PHP7.2

yanest / 732人閱讀

摘要:因為對二進制比較熟悉,所以沒有用的方式進行安裝,采用的二進制安裝方式比較靈活,但是因為第一次安裝的高版本,也引入了很多的問題,總而言之,就是在錯誤中不斷摸索錯誤,最終找到一個還能用的道路。

通過性能評測,可以看出PHP7對性能進行了較大的優化,相比與PHP5.x50%-150%的性能提升,因此,為了提升我們服務的響應速度,降低機器負載,需要進行版本升級。

因為對二進制比較熟悉,所以沒有用yum的方式進行安裝,采用的二進制安裝方式比較靈活,但是因為第一次安裝PHP的高版本,也引入了很多的問題,總而言之,就是在錯誤中不斷摸索錯誤,最終找到一個還能用的道路。

下載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編譯前提供了大量的參數進行配置,包括支持的擴展、執行用戶等,可以查看參數列表。

我們進行最簡單的配置,只支持php-fpm管理,因為我們的PHP是配合Ngnix來進行服務,因此還要指定執行的用戶:

./configure --prefix=/home/work/lnmp/php7 --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx
我的第一次編譯報錯:configure: error: OpenSSL version 1.0.1 or greater required.

解決這個問題,需要首先看自己的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

安裝完畢再次配置依然報相同錯誤,因此我們需要手動指定openssl的位置:

// 查看指定openssl的參數
$./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

啟動

因為我是升級,所以原有Nginx和代碼以及配置文件都是OK的狀態,可能在這個階段你會遇到不同的問題,這個得結合你的情況進行解決。

cd php7
// 復制php.ini和php-fpm.conf到etc/目錄下,這個過程你也可以自己配置啊
// 生成兩個目錄用于日志和sock文件保存
mkdir log
mkdir run
sbin/php-fpm -c etc/php.ini -y etc/php-fpm.conf -p .

啟動成功,訪問URL,報錯:502 Bad Gateway

502 Bad Gateway

根據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老版本里,有一個bug,任何能夠連接socket文件的用戶可以通過它執行任何命令,特別是在Ubuntu系統里允許www-data用戶執行任何代碼。因此最新版本里修復了這個錯誤,但也導致我們出現了502的問題,因此我們需要配套升級我們的配置文件:

// 在nginx.conf頭部添加執行用戶
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

重啟nginxphp-fpm進程,依然報錯:

nginx: [emerg] getpwnam("www") failed

因為我們沒有加上這個用戶:

useradd -r www

搞定,重啟nginxphp-fpm進程,服務正常。

總結

使用二進制來安裝PHP7.2,在編譯的時候按需加載擴展,如果有問題,我們可以重新編譯,也可以動態擴展。過程比較簡單,但我的服務并沒有正常服務,因為使用的Yii2.0不能夠完美兼容PHP7,我還得對Yii2.0進行升級,以及對自身的代碼進行升級。

參考資料

PHP7.2下載地址:http://php.net/downloads.php

PHP的性能演進: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 錯誤:https://blog.csdn.net/justdoi...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40258.html

相關文章

  • Linux安裝進制PHP7.2

    摘要:因為對二進制比較熟悉,所以沒有用的方式進行安裝,采用的二進制安裝方式比較靈活,但是因為第一次安裝的高版本,也引入了很多的問題,總而言之,就是在錯誤中不斷摸索錯誤,最終找到一個還能用的道路。 通過性能評測,可以看出PHP7對性能進行了較大的優化,相比與PHP5.x有50%-150%的性能提升,因此,為了提升我們服務的響應速度,降低機器負載,需要進行版本升級。 因為對二進制比較熟悉,所以沒...

    gghyoo 評論0 收藏0
  • MongoDB 入門教程

    摘要:可選,拋出異常的級別。示例教程更新一條數據標題。命令行下執行進入數據庫進入庫可查看當前庫用戶列表執行新建用戶設置賬戶密碼,并指定級別。重啟服務重新進入數據庫,發現命令無法執行,報權限不足錯誤。命令可以正常執行。 1.MongoDB 簡介 MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。MongoDB ...

    Vicky 評論0 收藏0
  • MongoDB 入門教程

    摘要:可選,拋出異常的級別。示例教程更新一條數據標題。命令行下執行進入數據庫進入庫可查看當前庫用戶列表執行新建用戶設置賬戶密碼,并指定級別。重啟服務重新進入數據庫,發現命令無法執行,報權限不足錯誤。命令可以正常執行。 1.MongoDB 簡介 MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。MongoDB ...

    zhonghanwen 評論0 收藏0

發表評論

0條評論

yanest

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<