一.源码编译
在企业中,我们常常是需要什么模块才会添加什么模块,而源码编译就可以让我们按需安装。
yum安装的优缺点:
- yum安装的优点:安装东西,方便快捷,特别是不用考虑包依赖。
- yum安装的缺点:安装过程,人为无法干预,不能按需安装。源里面有什么就安装什么,安装的版本也比较低。
源码安装的优缺点
- 源码安装的优点,编译安装过程,可以设定参数,按照需求,进行安装,并且安装的版本,可以自己选择,灵活性比较大。
- 源码安装的缺点,由于安装包过新或者是其他问题,导致依赖的包没有,或者版本过低。这个时候就要解决包的依赖问题,linux系统中有的包,一个依赖一个,可能装一个小东西,就要解决一堆包的依赖问题,花很多时间解决包的依赖问题,得不尝失。源码安装的多了,不敢升级系统,升级系统,可能会导致以前手动装的东西,不能用。
二.源码编译PHP
第一步:编译三部曲
物理机里:将所需要的安装包发送给hang1
[root@foundation11 Desktop]# scp -r libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm php-5.6.35.tar.bz2 root@172.25.11.1:/mnt
在hang1将得到的php源码包进行解压(#加强系统对支持字符编码转换的功能)
root@hang1 ~]# cd /mnt
[root@hang1 mnt]# ls
[root@hang1 mnt]# tar jxf php-5.6.35.tar.bz2
[root@hang1 mnt]# ls
[root@hang1 ~]# mkdir /usr/local/lnmp
[root@hang1 mnt]# cd php-5.6.35
[root@hang1 php-5.6.35]# yum install gcc -y
没图,记得创建文件夹哟……
./configure --prefix=/usr/local/lnmp/php \ #安装的位置
--with-config-file-path=/usr/local/lnmp/php/etc \ #php配置文件的位置
--with-openssl \ #支持openssl加密
--with-snmp \
--with-gd \
--with-zlib \
--with-curl \
--with-libxml-dir\
--with-png-dir \ #php处理图片的格式
--with-jpeg-dir \
--with-freetype-dir \
--with-gmp \
--with-gettext \
--with-pear \
--enable-mysqlnd \ #支持mysql数据库之间建立联系
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-inline-optimization \
--enable-soap --enable-ftp \
--enable-sockets \
--enable-mbstring \
--enable-fpm \ #开启fpm模式(nginx等服务用的)
--with-fpm-user=nginx \ #对php服务的限制通过nginx用户来实现)
--with-fpm-group=nginx \ #php以nginx用户组身份运行
--with-mcrypt \ #提供了对多种块算法的支持,主要用来实现加密等算法
--with-mhash #加密算法
会发现要解决依赖性(很多,这里我就只举个例子):
去解决依赖性,然后继续预编译,一般是解决一个依赖性,在去试着预编译,直到不出错。
所要解决的依赖性安装包如下:
73 yum install xml2-config-devel -y
75 yum install openssl-devel -y
77 yum install libcurl-devel -y
79 yum whatprovides */jpeglib.h
80 yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64 -y
82 yum whatprovides */png.h
83 yum install -y libpng-devel-1.2.49-1.el6_2.x86_64
86 yum install freetype-devel -y
88 yum whatprovides */gmp.h
89 yum install gmp-devel-4.3.1-7.el6_2.2.x86_64 -y
91 cd /mnt
93 yum install libmcrypt-* #因为这个我传过来的包在/mnt下
95 cd -
96 yum install net-snmp-devel -y
成功预编译完成的界面如下:
在这里教大家一个小窍门,在源码编译的时候,遇到以.h结尾的依赖性,可以用yum whatprovides去寻找这个文件属于那个包,然后安装符合自己版本的安装包。如果不是以.h结尾,我们可以在这个依赖性名称后面加上-devel,然后去安装这个包。比如现在告诉你你的依赖性是fre