0基础自学linux

0基础自学linux运维-2.13-centos 7 yum安装

2019-06-20  本文已影响15人  hualinux

一、需求

   有些时候我们需要安装不同版本的php,目前php版本的php5.4、php5.5、php5.6、php7.0已经没有下载地址了,只有php7.1、php7.2、php7.3,那么如何安装其中一个版本呢?安装版本后发现插件少了一个需要安装怎搞?

1.安装任意一个版本可以用remi源安装,默认的源只有php5.5

2.如果要安装插件可以直接yum install插件名或者用phpize进行安装

二、指定安装php版本

2.1 安装指定的php版本

#1.安装epel和remi源

mkdir /disk1/tools

cd /disk1/tools/

#不行就用wget下载

rpm-Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

wge thttp://rpms.famillecollet.com/enterprise/remi-release-7.rpm

rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

rpm -ih remi-release-7.rpm

#2. 指定源

#指定源我们会用到yum的一个参数

--enablerepo=[repo]   启用一个或多个软件源(支持通配符)

如:我这里用的是remi源,所以格式为

yum --enablerepo=remi <参数> <name>

#还可以多个,如我指定php73的,可以写成

yum --enablerepo=remi,php73 install xxx

#3.安装依赖

yum -y install libxml2-develbzip2-devel libpng-devel libmcrypt-devel libjpeg \

libjpeg-devel freetype freetype-devel  openssl-devel libcurl-devel gmp-devel \

libxslt-devel zlib zlib-develcurl curl-devel ncurses ncurses-devel gd-devel \

openssl-devel  ImageMagick-devel

#4.在这里我想安装最新的php7.3及一些常用的php扩展模块,命令如下

#remi源安装php7.3(gd+freetype)+imagick

yum --enablerepo=remi,remi-php73-y install php php-devel php-mysql php-gd \

php-bcmath php-mbstringphp-mcrypt php-mhash php-pdo php-pecl-imagick php-fpm

从上面的图中可以看出,在安装的时候使用了指定的remi源,如果不指定可能会找不到。

#查看所安装模拟

 php –m


三、安装php扩展

3.1 直接用yum安装扩展(方法一)

安装php扩展最方便的方式就是:

yum --enablerepo=remi,php73 install <php-名字/php-pecl-名字>

你肯定会问什么时候用“php-名字”什么时候用“php-pecl-名字”,这得先说一下什么是pecl?百科解释:

PECL 的全称是The PHP Extension Community Library ,是一个开放的并通过 PEAR(PHP Extension and

Application Repository,PHP 扩展和应用仓库)打包格式来打包安装的 PHP 扩展库仓库。通过 PEAR 的Package Manager 的安装管理方式,可以对 PECL 模块进行下载和安装。与以往的多数 PEAR 包不同的是,PECL 扩展包含的是可以编译进 PHP Core 的 C 语言代码,因此可以将 PECL 扩展库编译成为可动态加载的 .so 共享库,或者采用静态编译方式与 PHP 源代码编译为一体的方法进行扩展。PECL 扩展库包含了对于 XML 解析,数据库访问,邮件解析,嵌入式的 Perl 以及Python 脚本解释器等诸多的 PHP 扩展模块,因此从某种意义上来说,在运行效率上 PECL 要高于以往诸多的 PEAR 扩展库。

    就一句话:就是php的扩展仓库,它包含各种php模块,有它就找php扩展就方便,只要按照它的说明安装就好。pecl官网地址:http://pecl.php.net

    从上面来说“php-名字”和“php-pecl-名字”区别是一个是在pecl仓库的,一个是不在的一些php自带的就可以直接用”php-名字”,其它都用”php-pecl”。

如果还是一脸懵,那就是先用“php-名字”,不行再用“php-pecl-名字”安装^_^

#如上面少了一个redis,我后面发现要安装一个redis,那么就可以直接

yum --enablerepo=remi,remi-php73 install -y php-pecl-redis

#卸载也简单

yum remove php-pecl-redis –y

细心的朋友会发现怎么redis版本都会自动匹配的,如果我想安装其它版本呢?或者我

“yum --enablerepo=remi,remi-php73 install xxx”出不来php的扩展呢。那么得就用phpize安装pecl扩展了。

3.2 用phpize安装php扩展(方法二)

3.2.1 什么是phpize

在使用php的过程中,我们常常需要去添加一些PHP扩展库。但是重新对php进行编译是比较蛮烦的,所以这时候我们可以使用phpize对php进行添加扩展。并且phpize编译的扩展库可以随时启用或停用,比较灵活。

3.2.2 phpize使用方法

extention为要挂载的扩展包

1) wget extension.tar.gz下载相应的扩展包并解压。

2) cd extension/切换到扩展extension的目录中

3) /php/bin/phpize 运行php安装目录下的phpize文件,这时候会在extension目录下生成相应的configure文件。

4) ./configure --with-php-config=/php/bin/php-config 运行配置,如果你的服务器上只是装了一个版本的php则不需要添加--with-php-config 。后面的参数只是为了告诉phpize要建立基于哪个版本的扩展。

5) make && make install 编译模块

6) 编译好模块之后,需要让php启用它。在php.ini文件中加入把extension.so开启即可。重启php服务。

其实phpize是一个运行脚本,主要作用是检测php的环境还有就是在特定的目录生成相应的configure文件,这样makeinstall之后,生成的.so文件才会自动加载到php扩展目录下面。

3.2.3 例子

我们还是以redis为例子,进行操作

#1. 去pecl官网pecl.php.net,去搜索一下redis,发现只有一个redis,点击进入redis下载面页面,在这里我下载redis4的最新版本

#也可以用wget下载

wget http://pecl.php.net/get/redis-4.3.0.tgz

#2.安装redis扩展

tar -xf redis-4.3.0.tgz

cd redis-4.3.0

phpize

./configure --with-php-config=/usr/bin/php-config

make

make test

make install

cd

通过上图知道php的redis模块所在的位置

ll /usr/lib64/php/modules/redis.so

#3.把模块配置到php中去

因为是yum安装的php,模块已经放在默认位置了,所以直接打这个功能打开就行了

cp /etc/php.ini /etc/php.ini.orig

#在第915行和别的扩展一样,添加extension=redis.so

sed -i '910a\extension=redis.so' /etc/php.ini

grep 'redis.so' /etc/php.ini

#重启php生效,因为我用的是LNNP所以重启php-fpm就行了

systemctl restart php-fpm

php -m|grep redis


四、小结

这里介绍了php指定版本的安装使用的是remi源,并没有使用源安装,也符合“方便易维护”的原则。

在使用安装php扩展的时候我也尽量用yum安装,不行的话也是用“yum+phpize”安装方式,也是为了方便维护。

上一篇 下一篇

猜你喜欢

热点阅读