来源:Linux社区 作者:sbman 本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146095.htm |
在CentOS 7 下编译安装PHP 5.6过程记录。
1.下载PHP安装包
wget http:
//php
.net
/distributions/php-5
.6.31.
tar
.gz
默认情况下Nginx和PHP他俩之间是一点感觉没有的。Apache+PHP编译后生成的是模块文件,而Nginx+PHP需要PHP生成可执行文件才可以,所以要利用fastcgi技术来实现Nginx与PHP的整合,这个只要我们安装时启用 FastCGI即可。此次我们安装PHP不仅使用了FastCGI,而且还使用了PHP-FPM这么一个东东,PHP-FPM说白了是一个管理 FastCGI的一个管理器,它作为PHP的插件存在,在安装PHP时要想使用PHP-FPM就需要把PHP-FPM以补丁的形式安装到PHP中,而且 PHP要与PHP-FPM版本一致,这是必须的,切记!
2.解压安装
tar
-zxvf php-5.6.31.
tar
.gz
cd
php-5.6.3
.
/configure
--prefix=
/usr/local/php
--with-config-
file
-path=
/usr/local/php/etc
--with-png-
dir
=
/usr/local/libpng
--with-jpeg-
dir
=
/usr/local/jpeg
--with-freetype-
dir
=
/usr/local/freetype
--with-zlib-
dir
=
/usr/local/zlib
--with-mcrypt=
/usr/local/libmcrypt
--with-libxml-
dir
=
/usr/local/libxml2/
--with-iconv-
dir
=
/usr/local/libiconv
--
enable
-libxml --
enable
-xml --
enable
-bcmath --
enable
-shmop --
enable
-sysvsem --
enable
-inline-optimization --
enable
-opcache --
enable
-mbregex --
enable
-fpm --
enable
-mbstring=all --
enable
-gd-native-ttf --with-openssl --
enable
-pcntl --
enable
-sockets --with-xmlrpc --
enable
-zip --
enable
-soap --without-pear --with-gettext --
enable
-session --with-curl --
enable
-ctype --
enable
-shared --with-gd
在安装过程中报了下面的错误:
原来是没安装插件 gcc。
继续安装:
yum
install
gcc
插件安装完毕后,我们继续安装PHP
最后又报以下错误:
没安装libxml2插件,因为我的是新装的centos系统,所以里面会缺失各种依赖包,继续安装版libxml2插件:
yum
install
libxml2
提示:
libxml2已存在,可能libxml2-dev未安装,我们安装libxml2-devel
yum
install
libxml2-devel
安装好后我们继续安装PHP,又提示:
我们安装openssl插件
yum
install
openssl openssl-devel
安装完后我们继续执行PHP的安装,还报确实插件liburl
安装liburl
yum -y
install
curl-devel
安装好后继续执行PHP的安装,报GD库未安装,我们继续安装GD库
yum
install
libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel -y
继续安装PHP报缺失插件libmcrypt
centos尝试用yum安装libmcrypt:
#yum install libmcrypt libmcrypt-devel mcrypt mhash
Setting up Install Process
No package php-mcrypt available.
Error: Nothing to do
我们会看到centos yum从仓库中根本找不到这几个包。但我不想使用源码编译就想使用yum安装,怎么办?
yum install epel-release //扩展包更新包
yum update //更新yum源
安装完epel-release ,yum update 可能会报错如下:
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
解决办法是编辑/etc/yum.repos.d/epel.repo,把基础的恢复,镜像的地址注释掉
#baseurl
mirrorlist
改成
baseurl
#mirrorlist
只改下面这一项就ok了。
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearc
h
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
yum install libmcrypt libmcrypt-devel mcrypt mhash
yum安装libmcrypt不成功,可以采用编译安装:#使用wget可以通过以下路径下载
wget
ftp
:
//mcrypt
.hellug.gr
/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2
.5.7.
tar.gz
#解压
tar
-zxvf libmcrypt-2.5.7.
tar.gz
#进入目录
cd
libmcrypt-2.5.7
#编译(默认安装到/usr/local/lib/)
.
/configure
--prefix=
/usr/local/libmcrypt
#执行安装
make
&&
make
install
安装完后继续执行PHP的安装,这回终于提示成功:
接下来就是编译、安装PHP
编译php源码
编译源码只需要执行命令: make
安装php源码
安装源码只需要执行命令: make install
复制php配置到安装php安装目录
1. 复制php.ini命令: cp php.ini-development /usr/local/php/lib/php.ini
2. 复制php-fmp配置命令: cp ./sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
3. 查看php是否安装成功: /usr/local/php/bin/php --version
显示php版本就安装成功了
php5.6.31就编译安装完了
fpm路径: /usr/local/php/sbin/php-fpm
fpc配置路径: /usr/local/php/etc/php-fpm.conf
php.ini路径: /usr/local/php/lib/php.ini
php常用命令
1. 查看php版本: /usr/local/php/bin/php -v
2. 查看phpinfo: /usr/local/php/bin/php -i
3. 查看php编译模块: /usr/local/php/bin/php -m
4. 查看php.ini配置文件路径和目录: /usr/local/php/bin/php --ini
php-fpm常用命令
查看php-fpm占用端口号: ps -ef | grep php-fpm
1. 配置php-fmp: vi /usr/local/php/etc/php-fpm.conf
修改
user = nobody
group = nobody
改为
user = www
group = www
如果www用户不存在,那么先添加www用户
groupadd www # 新增用户组
useradd -g www www # 新增用户并设置用户组
2. 使用信号管理php-fpm
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块
示例:
1. 启动服务:
/usr/local/php/sbin/php-fpm
指定配置路径启动服务
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
2. 平滑重启服务(会重启加载配置):
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
3. 重新打开日志文件:
kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`
4. 停止服务:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
5. 平滑停止服务:
kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`
6. 测试php-fpm配置
/usr/local/php/sbin/php-fpm -t
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini -y /usr/local/php/etc/php-fpm.conf -t
php5.6.31就编译安装完了
3.总结
编译安装个PHP不容易啊,总结一下:
安装PHP必须提前安装的依赖包有:gcc、libxml2、openssl、curl、libmcrypt,但每个人的环境不一样,可能还会有不同的插件缺失,大家可根据提示去逐一安装。