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

二、创建用户组php-fpm,创建用户 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

参数解释:

>创建php用户组(-r选项是创建一个系统用户组的意思) 

> 添加新用户

> -r: 添加系统用户( 这里指将要被创建的系统用户php ) 

> -g: 指定要创建的用户所属组( 这里指添加到新系统用户php到php系统用户组 ) 

> -s: 新帐户的登录shell( `/sbin/nologin` 这里设置为将要被创建系统用户php不能用来登录系统 ) 

> -d: 新帐户的主目录( 这里指定将要被创建的系统用户php的家目录为 `/usr/local/php` ) 

> -M: 不要创建用户的主目录( 也就是说将要被创建的系统用户php不会在 `/home` 目录下创建 `php` 家目录 )  

三、下载依赖安装包

源码包放在/usr/local/src 目录。我的软件安装目录统一指定在 /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执行文件所在目录]--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环境下该库在默认情况下不开启]--with-mhash \ [Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启]--with-openssl \ [OpenSSL 是一个安全套接字层密码库]--with-mysqli=shared,mysqlnd \ [php依赖mysql库]--with-pdo-mysql=shared,mysqlnd \ [php依赖mysql库]--with-gd \ [gd库] --with-iconv \ [关闭iconv函数,种字符集间的转换] --with-zlib \ [zlib是提供数据压缩用的函式库]--enable-zip \ [打开对zip的支持]--enable-inline-optimization \ [优化线程]--disable-debug \ [关闭调试模式]--disable-rpath \ [关闭额外的运行库文件]--enable-shared \ [启用动态库]--enable-xml \ [开启xml扩展]--enable-bcmath \ [打开图片大小调整,用到zabbix监控的时候用到了这个模块]--enable-shmop \ [共享内存]--enable-sysvsem \ [内存共享方案]--enable-mbregex \ [开启多字节正则表达式的字符编码。]--enable-mbstring \ [开启多字节字符串函数]--enable-ftp \ [开启ftp]--enable-gd-native-ttf \ [开启gd库原有字体]--enable-pcntl \ [PHP的进程控制支持实现了Unix方式的多进程创建] --enable-sockets \ [开启套节字]--with-xmlrpc \ [打开xml-rpc的c语言]--enable-soap \ [开启简单对象访问协议简单对象访问协议]--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 \ [数据库函数使用可扩展散列和类似于标准UNIX dbm的工作]--enable-fast-install \ [为快速安装优化]--disable-fileinfo

4、可能会出现要求开启 --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

执行ldconfig,使其重新加载一次

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、修改时区,找到 `timezone` 修改时区如下:

date.timezone = PRC 

c、开启OPcache,开启OPcache

文件的最后一行(shift+G), 输入以下内容:zend_extension=opcache.so;

d、开启 mysqli 扩展

; For UNIX OS open mysqli extension  

extension=mysqli.so 

extension=pdo_mysql.so  

六、配置php-fpm

1、添加 php-fpm 管理相关的配置文件到系统配置目录 /etc/init.d

将php源码编译目录下的 `sapi/fpm/init.d.php-fpm` 文件拷贝到系统配置 `/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安装目录到系统环境变量

创建并打开文件php.sh 

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

添加内容如下:export PATH=$PATH:/usr/local/php/bin/:/usr/local/php/sbin/

保存并退出

[root@ study  php-7.1.20]# wq!

使用source立即生效刚刚添加的php环境变量

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

八、设置PHP日志目录和php-fpm运行进程的ID文件目录

1、 添加系统用户组nginx (如果你没有创建过系统用户组nginx请创建)

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

2、 创建新的系统用户nginx, 并添加到系统用户组nginx, 设置不允许此用户名登录shell (如果你没有创建过系统用户nginx请创建)

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

3、 创建 `php-fpm` 日志目录

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

4、 创建 `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、创建 `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状态

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

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

# nginx运行的用户名

user nginx;

# nginx启动进程,通常设置成和cpu的数量相等,这里为自动

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.

# 用来加载其他动态模块的配置(暂时不清楚)

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

# 工作模式和连接数上限

events {

    # 每个worker_processes的最大并发链接数

    # 并发总数:worker_processes*worker_connections

    worker_connections 1024;

}

# 与提供http服务相关的一些配置参数类似的还有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函数输出文件

    sendfile            on;

    # 数据包最大时发包(使用Nagle算法)

    tcp_nopush          on;

    # 立刻发送数据包(禁用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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容