PHP 7.1.9 編譯安裝與配置

背景:本人博客自2014年上線以來,一直使用阿里云ECS最低配的實(shí)例,由于最近阿里云ECS進(jìn)行了升級(jí)遷移筷狼,原來的低配實(shí)例已經(jīng)不存在了棍潘,升級(jí)后實(shí)例的配置有所提升恃鞋,當(dāng)然價(jià)格更高了,為了更好的發(fā)揮服務(wù)器性能亦歉,所以就想利用空閑時(shí)間對(duì)整站進(jìn)行升級(jí)恤浪,包含阿里云ecs更換系統(tǒng)盤MySQL 5.7.19 編譯安裝與配置, Nginx 1.12.1 編譯安裝與配置, PHP 7.1.9 編譯安裝與配置等肴楷。

服務(wù)器環(huán)境
CentOS 6.3 64位 全新純凈的系統(tǒng) / 1核1GB / 經(jīng)典網(wǎng)絡(luò) 1MB

進(jìn)入PHP官網(wǎng)下載頁(yè)面水由,如果你需要下載php-7.1.9.tar.gz版本,請(qǐng)點(diǎn)擊此處
進(jìn)入/usr/local/src目錄赛蔫,一般我喜歡把下載的文件放在此目錄砂客,根據(jù)自己的喜好設(shè)定

[root@iZ2864f6btwZ src]# cd /usr/local/src

使用wget下載php文件,如果wget沒有安裝呵恢,yum -y install wget即可安裝

[root@iZ2864f6btwZ src]# wget http://cn2.php.net/distributions/php-7.1.9.tar.gz

安裝編譯所需的常用組件和依賴包 [ 參考于網(wǎng)絡(luò)博客 ]

[root@iZ2864f6btwZ src]# yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libmcrypt mcrypt mhash

創(chuàng)建php用戶組和用戶鞠值,用來運(yùn)行php, -g指定用戶組, -r創(chuàng)建系統(tǒng)用戶
[root@iZ2864f6btwZ src]# groupadd php
[root@iZ2864f6btwZ src]# useradd -r -g php -s /bin/false -M php
解壓php渗钉,進(jìn)入 php-7.1.9 目錄

[root@iZ2864f6btwZ src]# tar zxvf php-7.1.9.tar.gz && cd php-7.1.9

注意:
部分源碼執(zhí)行./buildconf提示如下信息彤恶,說明你下載的是發(fā)行版本钞钙,不需要再執(zhí)行此命令生成配置文件

[root@iZ2864f6btwZ php-7.1.9]# ./buildconf
You should not run buildconf in a release package.
use buildconf --force to override this check.
生成Makefile文件,所有擴(kuò)展參考于網(wǎng)絡(luò)博客声离,可根據(jù)個(gè)人需要安裝相應(yīng)的擴(kuò)展
[root@iZ2864f6btwZ php-7.1.9]# ./configure \
--prefix=/usr/local/php \
--exec-prefix=/usr/local/php \
--bindir=/usr/local/php/bin \
--sbindir=/usr/local/php/sbin \
--includedir=/usr/local/php/include \
--libdir=/usr/local/php/lib/php \
--mandir=/usr/local/php/php/man \
--with-config-file-path=/usr/local/php/etc \
--with-mysql-sock=/var/run/mysql/mysql.sock \
--with-mcrypt=/usr/include \
--with-mhash \
--with-openssl \
--with-mysql=shared,mysqlnd \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-gd \
--with-iconv \
--with-zlib \
--enable-zip \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache \
--enable-fpm \
--enable-fastcgi \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--without-gdbm \
configure 完成

注意:
php-fpm用戶和用戶組必須與nginx用戶和用戶對(duì)應(yīng)

--with-fpm-user=nginx \
--with-fpm-group=nginx \
編譯并安裝

[root@iZ2864f6btwZ php-7.1.9]# make && make install

編譯完成

注意:
檢查安裝后的目錄和文件芒炼,查看相應(yīng)的擴(kuò)展文件是否存在

[root@iZ2864f6btwZ php-7.1.9]# cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
[root@iZ2864f6btwZ no-debug-non-zts-20160303]# ll
total 7608
-rwxr-xr-x 1 root root 1375334 Sep 24 23:56 mysqli.a
-rwxr-xr-x 1 root root  648840 Sep 24 23:56 mysqli.so
-rwxr-xr-x 1 root root 3391640 Sep 24 23:56 opcache.a
-rwxr-xr-x 1 root root 1631520 Sep 24 23:56 opcache.so
-rwxr-xr-x 1 root root  497702 Sep 24 23:56 pdo_mysql.a
-rwxr-xr-x 1 root root  229568 Sep 24 23:56 pdo_mysql.so
[root@iZ2864f6btwZ no-debug-non-zts-20160303]#
將 php 添加到環(huán)境變量,新建/etc/profile.d/php7.sh文件术徊,在php7.sh文件中添加export PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH
[root@iZ2864f6btwZ no-debug-non-zts-20160303]# vim /etc/profile.d/php7.sh
[root@iZ2864f6btwZ no-debug-non-zts-20160303]# source /etc/profile.d/php7.sh
查看PHP版本
[root@iZ2864f6btwZ no-debug-non-zts-20160303]# php -v
PHP 7.1.9 (cli) (built: Sep 24 2017 23:55:54) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
[root@iZ2864f6btwZ no-debug-non-zts-20160303]#
配置php.ini文件本刽,從php源碼拷貝php.ini-production/usr/local/php/etc/目錄,編譯php.ini文件弧关,一般只需要設(shè)置擴(kuò)展目錄及相應(yīng)的擴(kuò)展和時(shí)區(qū)即可
[root@iZ2864f6btwZ etc]# cp /usr/local/src/php-7.1.9/php.ini-production /usr/local/php/etc/php.ini
[root@iZ2864f6btwZ etc]# vim /usr/local/php/etc/php.ini

...
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303"
zend_extension=opcache.so
extension=mysqli.so
extension=pdo_mysql.so
...
date.timezone = PRC
...
[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=1
...
設(shè)置php-fpm.conf文件盅安,此文件是php-fpm運(yùn)行配置文件,先將php-fpm腳本文件拷貝到/ect/init.d/目錄并給出執(zhí)行權(quán)限世囊,并添加到開機(jī)自動(dòng)啟動(dòng)别瞭,編譯php-fpm.conf,設(shè)置好擴(kuò)展配置文件的路徑和錯(cuò)誤日志保存路徑
[root@iZ2864f6btwZ etc]# cp /usr/local/src/php-7.1.9/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@iZ2864f6btwZ etc]# chmod +x /etc/init.d/php-fpm
[root@iZ2864f6btwZ etc]# chkconfig --add php-fpm
[root@iZ2864f6btwZ etc]# chkconfig php-fpm on
[root@iZ2864f6btwZ etc]# 
[root@iZ2864f6btwZ etc]# cp php-fpm.conf.default php-fpm.conf
[root@iZ2864f6btwZ etc]# vim php-fpm.conf

...
error_log = /var/log/php-fpm/error.log
....
include=/usr/local/php/etc/php-fpm.d/*.conf
...
設(shè)置www.conf文件株憾,此文件是php-fpm運(yùn)行的擴(kuò)展配置文件
[root@iZ2864f6btwZ etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf
[root@iZ2864f6btwZ etc]# vim php-fpm.d/www.conf

...
user = nginx
group = nginx
...
listen = /var/run/php-fpm/php-fpm.sock
...
slowlog = /var/log/php-fpm/$pool.log.slow
 
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_slowlog_timeout = 1m
...
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
...

注意:
此配置文件參考于網(wǎng)絡(luò)博客蝙寨,請(qǐng)務(wù)必注意以上user,group,listen,slowlog,request_slowlog_timeout,php_value等位置的配置,listen= /var/run/php-fpm/php-fpm.sock是根據(jù)個(gè)人喜愛來設(shè)定的嗤瞎,你也可以配置成listen = 127.0.0.1:9000墙歪,只不過到時(shí)候nginx.conf配置文件里面的fastcgi_pass指定的監(jiān)聽方式不同,后續(xù)步驟整合php和nginx將會(huì)提及到贝奇。

設(shè)置php-fpm運(yùn)行目錄及相關(guān)目錄和權(quán)限
[root@iZ2864f6btwZ etc]# mkdir -p /var/log/php-fpm /var/run/php-fpm
[root@iZ2864f6btwZ etc]# chown nginx:nginx -R /var/run/php-fpm/
[root@iZ2864f6btwZ etc]# ll -d /var/run/php-fpm/
drwxr-xr-x 2 nginx nginx 40 Sep 25 10:30 /var/run/php-fpm/
[root@iZ2864f6btwZ etc]# 

注意:
由于之前我們?cè)?code>www.conf中使用的的usergroup來運(yùn)行php-fpm的虹菲,所以/var/run/php-fpm運(yùn)行時(shí)的目錄一定要把擁有者改變?yōu)橄鄳?yīng)的用戶和組,即nginx用戶和nginx組掉瞳,否則啟動(dòng)php-fpm時(shí)會(huì)報(bào)錯(cuò)毕源。

/etc/init.d/php-fpm中添加如下代碼,讓php-fpm運(yùn)行目錄自動(dòng)創(chuàng)建并修改權(quán)限
...
php_fpm_log="/var/log/php-fpm"
php_fpm_run="/var/run/php-fpm"

if [ ! -d $php_fpm_log ];then
  mkdir -p  $php_fpm_log 
  chown -R nginx.nginx $php_fpm_run
fi

if [ ! -d $php_fpm_run ];then
  mkdir -p  $php_fpm_run 
  chown -R nginx.nginx $php_fpm_run
fi

chown -R nginx:nginx /var/run/php-fpm/
...
設(shè)置session的存儲(chǔ)目錄
[root@iZ2864f6btwZ etc]# mkdir -p /var/lib/php/session && chown nginx.nginx -R !$
mkdir -p /var/lib/php/session && chown nginx.nginx -R /var/run/php-fpm/
[root@iZ2864f6btwZ etc]# 

注意:
上述命令中!$為簡(jiǎn)寫陕习,意為上次使用的路徑

檢測(cè)php-fpm配置啟動(dòng)php-fpm進(jìn)程
[root@iZ2864f6btwZ etc]# php-fpm -t
[25-Sep-2017 10:58:58] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful
[root@iZ2864f6btwZ etc]# service php-fpm start
Starting php-fpm  done
[root@iZ2864f6btwZ etc]# 

注意:
啟動(dòng)php-fpm進(jìn)程后霎褐,最好檢查一下php-fpm.sock的所有者和權(quán)限,如果不是nginx更換成nginx

[root@iZ2864f6btwZ  etc]# chown nginx.nginx -R /var/run/php-fpm/php-fpm.sock 
[root@iZ2864f6btwZ etc]# ll !$
total 0
srw-rw---- 1 root root 0 Sep 25 13:40 /var/run/php-fpm/php-fpm.sock
配置nginx.conf文件该镣,添加index.php索引冻璃,并添加php腳本解析引擎
...
 location / {
            root   html;
            index  index.php index.html index.htm;
            autoindex  on;
 }
...
location ~ \.php$ {
            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
 }
...
include conf.d/*.conf;
...

注意:
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;配置信息必須與www.conf設(shè)置的 listen 保持一致,fastcgi_param 路徑中根據(jù)/scripts替換為$document_root损合,不然無(wú)法找到php腳本文件省艳。

重啟nginx服務(wù)器和php-fpm
[root@iZ2864f6btwZ conf]# service nginx restart
Restarting nginx (via systemctl):                          [  OK  ]
[root@iZ2864f6btwZ conf]# 
[root@iZ2864f6btwZ conf]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@iZ2864f6btwZ conf]# 

注意:
如果你在啟動(dòng) nginx 的時(shí)候遇到如下錯(cuò)誤,請(qǐng)仔細(xì)檢查你的nginx.conf文件是否某個(gè)位置少寫了分號(hào)或是配置文件語(yǔ)法是否有誤

[root@iZ2864f6btwZ conf]# service nginx restart
Starting nginx (via systemctl):  Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
                                                          [FAILED]
測(cè)試訪問php文件是否正常嫁审,在網(wǎng)站根目錄新建info.php文件跋炕,在瀏覽器地址欄輸入 http://服務(wù)器ip/info.php
[root@iZ2864f6btwZ etc]# cd /usr/local/nginx/html/
[root@iZ2864f6btwZ html]# ll
total 8
-rw-r--r-- 1 nginx nginx 537 Sep 24 15:07 50x.html
-rw-r--r-- 1 nginx nginx 612 Sep 24 15:07 index.html
[root@iZ2864f6btwZ html]# vim info.php

<?php phpinfo();
phpinfo 信息

結(jié)尾:
至此,php 7.1.9 編譯安裝與配置全部完成土居,有問題的朋友請(qǐng)給我留言,如有毛病,歡迎指正擦耀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棉圈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子眷蜓,更是在濱河造成了極大的恐慌分瘾,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吁系,死亡現(xiàn)場(chǎng)離奇詭異德召,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)汽纤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門上岗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蕴坪,你說我怎么就攤上這事肴掷。” “怎么了背传?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵呆瞻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我径玖,道長(zhǎng)痴脾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任梳星,我火速辦了婚禮赞赖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丰泊。我一直安慰自己薯定,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布瞳购。 她就那樣靜靜地躺著话侄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪学赛。 梳的紋絲不亂的頭發(fā)上年堆,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音盏浇,去河邊找鬼变丧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛绢掰,可吹牛的內(nèi)容都是我干的痒蓬。 我是一名探鬼主播童擎,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼攻晒!你這毒婦竟也來了顾复?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鲁捏,失蹤者是張志新(化名)和其女友劉穎芯砸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體给梅,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡假丧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了动羽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片包帚。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖曹质,靈堂內(nèi)的尸體忽然破棺而出婴噩,到底是詐尸還是另有隱情,我是刑警寧澤羽德,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布几莽,位于F島的核電站,受9級(jí)特大地震影響宅静,放射性物質(zhì)發(fā)生泄漏章蚣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一姨夹、第九天 我趴在偏房一處隱蔽的房頂上張望纤垂。 院中可真熱鬧,春花似錦磷账、人聲如沸峭沦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吼鱼。三九已至,卻和暖如春绰咽,著一層夾襖步出監(jiān)牢的瞬間菇肃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工取募, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琐谤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓玩敏,卻偏偏與公主長(zhǎng)得像斗忌,于是被迫代替她去往敵國(guó)和親质礼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容