centos7編譯安裝php7.1

一、安裝依賴包。

[root@study?~]# yum -y install gcc gcc++ gcc-c++ wget make libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel bison autoconf

二、創(chuàng)建用戶組php-fpm,創(chuàng)建用戶 php-fpm?所屬組 php-fpm?設置不能登錄。

[root@study ~]#groupadd -r php-fpm && useradd -r -g php-fpm -s /sbin/nologin -d /usr/local/php?-M php-fpm

參數(shù)解釋:

>創(chuàng)建php用戶組(-r選項是創(chuàng)建一個系統(tǒng)用戶組的意思)?

> 添加新用戶

> -r: 添加系統(tǒng)用戶( 這里指將要被創(chuàng)建的系統(tǒng)用戶php )?

> -g: 指定要創(chuàng)建的用戶所屬組( 這里指添加到新系統(tǒng)用戶php到php系統(tǒng)用戶組 )?

> -s: 新帳戶的登錄shell( `/sbin/nologin` 這里設置為將要被創(chuàng)建系統(tǒng)用戶php不能用來登錄系統(tǒng) )?

> -d: 新帳戶的主目錄( 這里指定將要被創(chuàng)建的系統(tǒng)用戶php的家目錄為 `/usr/local/php` )?

> -M: 不要創(chuàng)建用戶的主目錄( 也就是說將要被創(chuàng)建的系統(tǒng)用戶php不會在 `/home` 目錄下創(chuàng)建 `php` 家目錄 ) ?

三、下載依賴安裝包

源碼包放在/usr/local/src 目錄。我的軟件安裝目錄統(tǒng)一指定在 /usr/local/'軟件名'(如:/usr/local/nginx、/usr/local/mysql)

1、?下載PHP語法分析器re2c?

[root@study src]#wget -c https://github.com/skvadrik/re2c/releases/download/0.16/re2c-0.16.tar.gz?

#進入解壓后的源碼目錄編譯并安裝

[root@study src]#tar -zxvf re2c-0.16.tar.gz

[root@study src]#?cd re2c-0.16

[root@study?re2c-0.16]# ./configure

[root@study??re2c-0.16]# make && make install

2、?加密支持擴展庫libmcrypt (使用php mcrypt 前必須先安裝Libmcrypt)

[root@study src]#?wget -c https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

#?進入解壓后的源碼目錄編譯并安裝

[root@study src]# tar -zxvf libmcrypt-2.5.8.tar.gz

[root@study src]#??cd libmcrypt-2.5.8

[root@?study libmcrypt-2.5.8]# ./configure?

[root@?study libmcrypt-2.5.8]# make && make install?

3、??加密方式擴展庫mhash

[root@study src]#?wget -c https://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz

#?進入解壓后的源碼目錄編譯并安裝?

[root@?study src?]# tar -zxvf mhash-0.9.9.9.tar.gz

[root@study src]#?cd mhash-0.9.9.9

[root@?study?mhash-0.9.9.9]# ./configure

[root@?study mhash-0.9.9.9]# make && make install?

4、加密方式擴展庫mcrypt

[root@study src]#?wget -c https://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

#?進入解壓后的源碼目錄編譯并安裝??

[root@?study src?]#?tar -zxvfmcrypt-2.6.8.tar.gz?

[root@study src]#?cd mcrypt-2.6.8

#由于在編譯mcrypt時,會找不到libmcrypt的鏈接庫,導致無法編譯,因為Libmcrypt的鏈接庫在/usr/local/lib文件夾下> 所以,在編譯mcrypt時要加入LD_LIBRARY_PATH=/usr/local/lib導入間接庫

[root@?study?mcrypt-2.6.8]# ./configure LD_LIBRARY_PATH=/usr/local/lib

[root@?study?mcrypt-2.6.8]# make && make install??

四、下載php,編譯安裝

1、下載php、解壓

[root@study src]#?wget -c https://github.com/php/php-src/archive/php-7.1.20.tar.gz

[root@?study src?]#?tar -zxvf?php-7.1.20.tar.gz

[root@study src]#?cd?php-7.1.20

2、生成php源碼目錄下的配置文件?configure

[root@study php-7.1.20]#?./buildconf --force

3、正式編譯php7.1(如果使用此編譯選項列表, 請將?\?反斜線后面的注釋去除, 并且后面不能有空白字符)

[root@study php-7.1.20]#./configure \--prefix=/usr/local/php \ [php安裝的根目錄]--exec-prefix=/usr/local/php \ [php執(zhí)行文件所在目錄]--bindir=/usr/local/php/bin \ [php/bin目錄]--sbindir=/usr/local/php/sbin \ [php/sbin目錄]--includedir=/usr/local/php/include \ [php包含文件所在目錄]--libdir=/usr/local/php/lib/php \ [php/lib目錄]--mandir=/usr/local/php/php/man \ [php/man目錄]--with-config-file-path=/usr/local/php/etc \ [php的配置目錄]--with-mysql-sock=/var/run/mysql/mysql.sock \ [php的Unix socket通信文件]--with-mcrypt \ [是php里面重要的加密支持擴展庫,linux環(huán)境下該庫在默認情況下不開啟]--with-mhash \ [Mhash是基于離散數(shù)學原理的不可逆向的php加密方式擴展庫,其在默認情況下不開啟]--with-openssl \ [OpenSSL 是一個安全套接字層密碼庫]--with-mysqli=shared,mysqlnd \ [php依賴mysql庫]--with-pdo-mysql=shared,mysqlnd \ [php依賴mysql庫]--with-gd \ [gd庫] --with-iconv \ [關(guān)閉iconv函數(shù),種字符集間的轉(zhuǎn)換] --with-zlib \ [zlib是提供數(shù)據(jù)壓縮用的函式庫]--enable-zip \ [打開對zip的支持]--enable-inline-optimization \ [優(yōu)化線程]--disable-debug \ [關(guān)閉調(diào)試模式]--disable-rpath \ [關(guān)閉額外的運行庫文件]--enable-shared \ [啟用動態(tài)庫]--enable-xml \ [開啟xml擴展]--enable-bcmath \ [打開圖片大小調(diào)整,用到zabbix監(jiān)控的時候用到了這個模塊]--enable-shmop \ [共享內(nèi)存]--enable-sysvsem \ [內(nèi)存共享方案]--enable-mbregex \ [開啟多字節(jié)正則表達式的字符編碼。]--enable-mbstring \ [開啟多字節(jié)字符串函數(shù)]--enable-ftp \ [開啟ftp]--enable-gd-native-ttf \ [開啟gd庫原有字體]--enable-pcntl \ [PHP的進程控制支持實現(xiàn)了Unix方式的多進程創(chuàng)建] --enable-sockets \ [開啟套節(jié)字]--with-xmlrpc \ [打開xml-rpc的c語言]--enable-soap \ [開啟簡單對象訪問協(xié)議簡單對象訪問協(xié)議]--without-pear \ [開啟php擴展與應用庫]--with-gettext \ [開戶php在當前域中查找消息]--enable-session \ [允許php會話session]--with-curl \ [允許curl擴展]--with-jpeg-dir \ [指定jpeg安裝目錄yum安裝過后不用再次指定會自動找到]--with-freetype-dir \ [指定freetype安裝目錄yum安裝過后不用再次指定會自動找到]--enable-opcache \ [開啟使用opcache緩存]--enable-fpm \ [開啟fpm]--with-fpm-user=nginx \ [php-fpm的用戶]--with-fpm-group=nginx \ [php-fpm的用戶組]--without-gdbm \ [數(shù)據(jù)庫函數(shù)使用可擴展散列和類似于標準UNIX dbm的工作]--enable-fast-install \ [為快速安裝優(yōu)化]--disable-fileinfo

4、可能會出現(xiàn)要求開啟?--enable-opcache=on?的錯誤提示

configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no

解決辦法,編輯/etc/ld.so.conf

加入/usr/local/lib

執(zhí)行l(wèi)dconfig,使其重新加載一次

5、如果沒有錯誤。

[root@study php-7.1.20]#make && make install

沒有錯誤,則表示編譯安裝完成。

可以查看php版本

[root@study php-7.1.20]#/usr/local/php/bin/php -v

五、配置php

1、修改php配置文件之-》添加php配置文件。將php源碼編譯目錄下的 `php.ini-production` 拷貝到php安裝目錄下的 `etc` 目錄下

[root@study php-7.1.20]# cp php.ini-production /usr/local/php/etc/php.ini

2、修改php配置文件之-》

[root@?study? php-7.1.20]#?vim /usr/local/php/etc/php.ini

a、修改php擴展目錄所在位置 ,找到 `extension_dir` 修改擴展目錄位置如下:

extension_dir = "../lib/php/extensions/no-debug-non-zts-20160303/" ?# `相對路徑`

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/" ?#`絕對路徑

b、修改時區(qū),找到 `timezone` 修改時區(qū)如下:

date.timezone = PRC?

c、開啟OPcache,開啟OPcache

文件的最后一行(shift+G), 輸入以下內(nèi)容:zend_extension=opcache.so;

d、開啟?mysqli?擴展

; For UNIX OS open mysqli extension ?

extension=mysqli.so?

extension=pdo_mysql.so ?

六、配置php-fpm

1、添加?php-fpm?管理相關(guān)的配置文件到系統(tǒng)配置目錄?/etc/init.d

將php源碼編譯目錄下的 `sapi/fpm/init.d.php-fpm` 文件拷貝到系統(tǒng)配置 `/etc/init.d` 目錄下并重命名為 `php-fpm`

[root@?study php-7.1.20]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

2、添加?php-fpm?配置文件

將php安裝目錄下的 `/usr/local/php/etc/php-fpm.conf.default` 文件拷貝同目錄下并重命名為 `php-fpm.conf`

[root@?study php-7.1.20]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

3、添加?www.conf?配置文件

將php安裝目錄下的 `/usr/local/php/etc/php-fpm.d/www.conf.default` 文件拷貝同目錄下并重命名為 `www.conf`

[root@study php-7.1.20]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

七、添加php安裝目錄到系統(tǒng)環(huán)境變量

創(chuàng)建并打開文件php.sh?

[root@study php-7.1.20]# vim /etc/profile.d/php.sh

添加內(nèi)容如下:export PATH=$PATH:/usr/local/php/bin/:/usr/local/php/sbin/

保存并退出

[root@?study? php-7.1.20]# wq!

使用source立即生效剛剛添加的php環(huán)境變量

[root@?study??php-src-php-7.1.20]#source /etc/profile.d/php.sh

八、設置PHP日志目錄和php-fpm運行進程的ID文件目錄

1、 添加系統(tǒng)用戶組nginx (如果你沒有創(chuàng)建過系統(tǒng)用戶組nginx請創(chuàng)建)

[root@study? php-7.1.20]# groupadd -r nginx

2、 創(chuàng)建新的系統(tǒng)用戶nginx, 并添加到系統(tǒng)用戶組nginx, 設置不允許此用戶名登錄shell (如果你沒有創(chuàng)建過系統(tǒng)用戶nginx請創(chuàng)建)

[root@study? php-7.1.20]# useradd -r -g nginx -s /sbin/nologin -d /usr/local/nginx -M nginx

3、 創(chuàng)建 `php-fpm` 日志目錄

[root@study?php-7.1.20]# mkdir -p /var/log/php-fpm/

4、 創(chuàng)建 `php-fpm` 進程的ID(php-fpm.sock)文件運行目錄

[root@study?php-7.1.20]# mkdir -p /var/run/php-fpm

5、 修改 `php-fpm` 進程的ID(php-fpm.sock)文件運行目錄的所屬用戶和組

[root@study?php-7.1.20]# chown -R nginx:nginx /var/run/php-fpm/

九、修改session的目錄配置

1、創(chuàng)建 `session` 存放目錄

[root@study php-7.1.20]# mkdir -p /var/lib/php/session

2、修改 `session` 存放目錄的所屬用戶和組

[root@study?php-7.1.20]# chown -R nginx:nginx /var/lib/php

3、再次修改 `php.ini` 文件

[root@study php-7.1.20]# vim /usr/local/php/etc/php.ini

修改session.save_path = "/var/lib/php/session"

十、php-fpm加入啟動服務,設置開機啟動

[root@study?php-7.1.20]#cp ./sapi/fpm/php-fpm.service /usr/lib/systemd/system/

[root@study?php-7.1.20]#systemctl enable php-fpm

systemctl start php-fpm #啟動php-fpm

systemctl status php-fpm #查看php-fpm狀態(tài)

十一、修改nginx配置文件使之使用nginx反向php解釋器

修改nginx.conf配置文件,?/usr/local/nginx/conf/nginx.conf

# nginx運行的用戶名

user nginx;

# nginx啟動進程,通常設置成和cpu的數(shù)量相等,這里為自動

worker_processes 1;

# errorlog文件位置

error_log /usr/local/nginx/logs/error.log;

# pid文件地址,記錄了nginx的pid,方便進程管理

pid /usr/local/nginx/logs/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.

# 用來加載其他動態(tài)模塊的配置(暫時不清楚)

# include /usr/share/nginx/modules/*.conf;

# 工作模式和連接數(shù)上限

events {

? ? # 每個worker_processes的最大并發(fā)鏈接數(shù)

? ? # 并發(fā)總數(shù):worker_processes*worker_connections

? ? worker_connections 1024;

}

# 與提供http服務相關(guān)的一些配置參數(shù)類似的還有mail

http {

? ? # 設置日志的格式

? ? log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '

? ? ? ? ? ? ? ? ? ? ? '$status $body_bytes_sent "$http_referer" '

? ? ? ? ? ? ? ? ? ? ? '"$http_user_agent" "$http_x_forwarded_for"';

? ? # access_log記錄訪問的用戶、頁面、瀏覽器、ip和其他的訪問信息

? ? access_log /usr/local/nginx/logs/access.log? main;

? ? # 這部分下面會單獨解釋

? ? # 設置nginx是否使用sendfile函數(shù)輸出文件

? ? sendfile? ? ? ? ? ? on;

? ? # 數(shù)據(jù)包最大時發(fā)包(使用Nagle算法)

? ? tcp_nopush? ? ? ? ? on;

? ? # 立刻發(fā)送數(shù)據(jù)包(禁用Nagle算法)

? ? tcp_nodelay? ? ? ? on;

? ? # 鏈接超時時間

? ? keepalive_timeout? 60;

? ? # 這個我也不清楚...

? ? #types_hash_max_size 2048;

? ? # 引入文件擴展名與文件類型映射表

? ? include? ? ? ? ? ? /usr/local/nginx/conf/mime.types;

? ? # 默認文件類型

? ? default_type? ? ? ? application/octet-stream;

? ? # Load modular configuration files from the /etc/nginx/conf.d directory.

? ? # See http://nginx.org/en/docs/ngx_core_module.html#include

? ? # for more information.

? ? include /usr/local/nginx/conf/vhost/*.conf;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

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