记一次安装多版本php的四个雷区,你踩着了吗

记一次安装多版本的php的四个雷区,你踩着了吗

需求:公司需要在同一台服务器上安装不同版本的php,而这一台的服务上已经安装了php.7.1,现需要同时存在两个版本,而另一个版本为php5.6、

原版本的php是使用一键安装工具oneinstack来装的 工具下载可参考官网:https://oneinstack.com/install/

(以下安装都是以oneinstack来安装)

一、安装另一个版本php5.6

注意以下是正确的安装,遇到的坑下面再说

1、 安装php5.6

因为以前的php也是使用oneinstack安装的所以启动文件是是php-fpm,我们需要修改php-fpm文件名,防止再次安装被覆盖。

停止本地的php7.1

1
#service php-fpm stop

更改php-fpm启动文件名

1
#mv /etc/init.d/php-fpm   /etc/init.d/php-fpm.bk

2、修改oneinstack的options.conf文件

使用oneinstack工具安装,每次都会读取options.conf这跟文件,然后再安装,所以需要修改该文件的php路径,否则会提示,已经安装

进入options.conf文件

1
#vim /root/oneinstack/options.conf

把php_install_dir=/usr/local/php 改为

php_install_dir=/usr/local/php56

3、执行安装脚本安装

1
#./install.sh

然后是漫长的等待

4、修改php配置文件

我们需要先停止刚刚安装php-fpm因为使用oneinstack默认安装完自动启动

停止php5.6

1
#service php-fpm stop

把php-fpm更改成php5-fpm ,变成php5.6的启动文件

1
#mv /etc/init.d/php-fpm /etc/init.d/php5-fpm

恢复本地php7.1启动脚本

1
mv /etc/init.d/php-fpm.bk /etc/init.d/php-fpm

5、设置php5.6、php7.1开机自启动:

1
2
#chkconfig --add php5-fpm
#chkconfig --add php-fpm
1
2
#chkconfig php5-fpm on
#chkconfig php-fpm on

6、修改sock的冲突文件,防止启动冲突

更改php5.6的配置文件就好

1
2
#vim /usr/local/php56/etc/php-fpm.conf

1
listen = /dev/shm/php-cgi.sock

修改为:

1
listen = /dev/shm/php5-cgi.sock

7、修改php的环境变量

1
vim /etc/profile

去到最后一行

1
export PATH=/usr/local/php56/bin:/usr/local/php/bin:$JAVA_HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:$PATH

改为

1
export PATH=/usr/local/php/bin:/usr/local/php/bin:$JAVA_HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:$PATH

这个为什么要改呢,因为php5.6版本,在我执行一些命令的时候,出现错误(原项目一直用的是php7.1的,就需要改,这是一个大坑,下面再说)

8、重启php服务

启动php7.1

1
#service php-fpm start

启动php5.6

1
#service php5-fpm start

9、查看多版本运行情况

如下图:

安装完成

二、容易的踩到的雷区及解决办法

雷区一、没有备份php-fpm文件,直接安装

过程原因:

第一安装的时候,可把我给害惨了,没有对oneinstack用的很熟练然后就直接安装了,导致一下子忘记把php-fpm备份

结果:

安装完后,发现,原来的php-fpm文件给覆盖了,导致把原来的php7.1重装。

雷区二、没有修改php-fpm.conf文件就启动php

过程原因:

直接启动php7.1,再启动5.6,发现启动不了,搞了很久,才发现原来是php-cgi.sock文件占用问题

结果:

把php56目录下的的php-fpm.conf文件的php-cgi.sock配置改成php5-cgi.sock后,重启,完毕。

雷区三、没有修改环境变量

过程原因:

因为安装php5.6或,随着就会更改环境变量的文件/etc/profile的变量环境目录,会把原来的/usr/local/php改为/usr/local/php56,这个更改,导致我的一些命令执行出错,比如composer,php等等。

结果:

把/etc/profile的/usr/local/php56改为/usr/local/php,执行php -v,发现版本回来了,命令执行也可以了。

雷区四、 修改nginx虚拟主机应用php版本

过程原因:

oneinstack执行./vhost.sh脚本创建虚拟主机是,默认是默认调用php的接口是的php-cgi.sock文件,而我的新的项目上,是调用php5.6。

结果:

把新建完的虚拟主机所调用的php接口改为fastcgi_pass unix:/dev/shm/php-cgi.sock; 改为fastcgi_pass unix:/dev/shm/php5-cgi.sock;重新新加载nginx,项目部署成功。

三、总结

一个服务的多版本问题,主要考虑的是的兼容性,当我们在一台服务器上安装多个版本的服务,我们需要有足够的把握,才去部署,你可以在本地安装测试完再部署到线上的环境,另外,对一些热门的软件,需要要熟练的掌握才行,避免操作出错。

©著作权归作者所有:来自51CTO博客作者技术小疯子的原创作品,如需转载,请注明出处,否则将追究法律责任

2

分享

收藏

 
 
技术小疯子

41篇文章,13W+人气,0粉丝

关注
 

Ctrl+Enter 发布

发布

记一次安装多版本php的四个雷区,你踩着了吗的更多相关文章

  1. 记录:Ubuntu 18.04 安装 tensorflow-gpu 版本

    狠下心来重新装了系统,探索一下 gpu 版本的安装.比较令人可喜的是,跟着前辈们的经验,还是让我给安装成功了.由于我是新装的系统,就像婴儿般纯净,所以进入系统的第一步就是安装 cuda,只要这个不出错 ...

  2. npm安装指定版本

    今天犯了一个低级错误,在npm安装依赖时,命令写成下了格式 npm i --save iview 2.0.0 要安装指定版本应该使用 npm i --save iview@2.0.0 谨记

  3. VS2019打开项目加载失败:无法找到 .NET Core SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配。

    问题描述: 用VS2019创建了asp.net core项目,正常运行:过几天后,再次打开,发现无法加载项目,报错无法找到.net core sdk.   分析过程: 首先怀疑环境变量的问题,重新设置 ...

  4. 如何为eclipse安装合适版本的python插件pydev

    pydev是一款优秀的Eclipse插件,大多数喜欢在eclipse开发软件的程序员(也许是java程序员)在开发python软件时希望继续使用eclipse,那么pydev是非常理想的选择. 1.安 ...

  5. ubuntu14.04下配置Java环境以及安装最新版本的eclipse

    首先是配置JDK 步骤一:下载最新版本的JDK,链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html 步骤二:首先 ...

  6. Python 基础之在ubuntu系统下安装双版本python

    前言:随着python升级更新,新版本较于老版本功能点也有不同地方,作为一个初学者应该了解旧版本的规则,也要继续学习新版本的知识.为了能更好去学习python,我在ubuntu安装python2和py ...

  7. 在树莓派(Raspberry Pi)上编译安装更新版本的Python

    Raspiban Wheezy上预装的Python3版本是3.2.3,本文将介绍升级到3.4.3的方法. 此文也适用于安装其它版本(比如最新版本)的Python. 我用的是B+型的树莓派,装的系统是2 ...

  8. 安装指定版本的cordova

    安装指定版本的cordova 刚接触cordova看到教程肯定是直接 npm install -g cordova 然后下载个集成的adt 以为万事大吉,开始hello world 玩玩没有想到最新的 ...

  9. yum安装高版本mysql(5.5)

    1.导入第三方源webtatic rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm 2.如果已安装低版本的mysql就删除 yum r ...

随机推荐

  1. Report Studio中目录结构报表浅析

    一:场景:在一个报表中如果存在多个页面,每个页面显示不同的数据,如何通过目录控件实现对每一个报表的友好访问呢?下面我们就来看一下下面的效果,如下图1,2 图1:-------------------- ...

  2. dTree无限级文件夹树和JQuery同步Ajax请求

    曾经都是用JQuery对树的支持来实现文件夹树的,近来闲来无事就弄了下dTree,感觉其无限级文件夹还是挺好的,并且它的使用也比較方便,基本上就是先把要用的js文件即dtree.js和css文件dtr ...

  3. 吐槽win7

    在纠结了N次后,终于重装win7了.其间还是不死心,又找了新的xp版本来装了一下,确实不行,才心不甘情不愿地再次回到win7下. 说实话,Win7的各种新功能,我没有感觉到有多好,只有不适应,如: 资 ...

  4. DBA眼中的CLR

    SQL Server 2005引入CLR之後,開發者們熱情地接受了它. CLR作爲一個強有力的工具,開發者可在數據庫中利用它調用其它面嚮對象語言編寫而成的功能. 從DBA的視角來看,CLR的引入淡化了 ...

  5. Python模块学习 --- urllib

    urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据.每当使用这个模块的时候,老是会想起公司产品的客户端,同事用C++下载Web上的图片,那种“痛苦”的表情.我以前翻 ...

  6. 遇到了一个问题,php数组的

    这两天整一个数据,捯饬了好久... 需求是这样的   <?php $a = array (); $a[] = ['week'=>'1','day'=>'1']; $a[] = ['w ...

  7. 缺少网络连接需要的Windows套接字注册表项(浏览器无法连网)

      缺少网络连接需要的Windows套接字注册表项(浏览器无法连网) CreateTime--2018年4月25日14:17:42 Author:Marydon 1.异常信息 此计算机上缺少一个或多个 ...

  8. ubuntu——printk()函数总结,关于日志文件

    我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况. 对程序的调试起到了很重要的作用. (下文中的日志级别和控制台日志控制级别 ...

  9. Ant—怎样Windows操作系统中搭建Apache Ant环境

    介绍一下怎样在Windows操作系统中搭建Apache Ant环境: 一.下载Apache Ant压缩文件:http://download.csdn.net/detail/wangshuxuncom/ ...

  10. 类型转换运算符、*运算符重载、->运算符重载、operator new 和 operator delete

    一.类型转换运算符 必须是成员函数,不能是友元函数 没有参数 不能指定返回类型 函数原型:operator 类型名();  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 1 ...