记一次安装多版本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

#service php-fpm stop

更改php-fpm启动文件名

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

2、修改oneinstack的options.conf文件

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

进入options.conf文件

#vim /root/oneinstack/options.conf

把php_install_dir=/usr/local/php 改为

php_install_dir=/usr/local/php56

3、执行安装脚本安装

#./install.sh

然后是漫长的等待

4、修改php配置文件

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

停止php5.6

#service php-fpm stop

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

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

恢复本地php7.1启动脚本

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

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

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

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

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

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

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

修改为:

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

7、修改php的环境变量

vim /etc/profile

去到最后一行

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

改为

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

#service php-fpm start

启动php5.6

#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,项目部署成功。

三、总结

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

原文地址:http://blog.51cto.com/xiaozhagn/2134202

时间: 2024-10-09 03:54:02

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

使用Nuget 安装指定版本package或者更新package到指定版本

最近在琢磨MVC和EntityFramework,使用的VS是2013版的,在Nuget的GUI界面下安装了EntityFramework(默认安装最新版的,怎么安装指定版本还没找到),按照MVC的示例项目MusicStore逐步做的过程中发现MVC4不支持EntityFramwok 6. 尝试去更新MVC版本各种失败,只能试着去降低EntityFramework版本.但是通过Nuget的GUI界面无法安装或更新到指定版本的EntityFramwok.在网上搜了搜相关资料(事实上也很容易搜到),

解决安装不同版本office后造成的PIA COM组件调用失败

症状:TF400422, TF400423, TF400424: Failed to open in Microsoft Excel (Project, Outlook): Unable to cast COM object of type 'Microsoft.Office.Interop.Excel(Project, Outlook).ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Applicatio

记:Android 安装apk的代码实现

private void installApk(String fileUri) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file://" + fileUri), "application/vnd.android.package-archive"); startActivity(intent); this.finish();} 记:Androi

ubuntu16.04 ,安装最新版本docker

环境:ubuntu16.04 ,安装最新版本docker 1.  添加GPG key: sudo apt-key adv--keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys58118E89F3A912897C070ADBF76221572C52609D 2. 添加源 新建文件:/etc/apt/sources.list.d/docker.list, 在里面添加内容: debhttps://apt.dockerproject.or

【LINUX】降级安装低版本GCC,G++

由于要制作crosstool,需要用到gcc 4.1.2来编译,而Ubuntu 12.04下的gcc版本是gcc 4.6.3,高版本的gcc也不是好事啊. 下面介绍gcc 4.1.2的编译安装方法: 1. 下载并解压源码:wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2tar jxvf gcc-4.1.2.tar.bz2 2. 安装依赖库及软件:sudo apt-get install libc6-dev li

pip 安装特定版本的模块

要用 pip 安装特定版本的 Python 包,只需通过 == 操作符 指定,例如: pip install -v pycrypto==2.3 将安装 pycrypto 2.3 版本.

IIS7(Windows7)下最简单最强安装多版本PHP支持环境

IIS7(Windows7)下最简单最强安装多版本PHP支持环境 来源自:http://www.myhack58.com/Article/sort099/sort0100/2012/35593.htm 最近调试程序,要在PHP5.2和5.3之间换来换去,而习惯了windows下的开发,就琢磨怎么在iis下安装多版本支持,赫然发现其实微软都为我们准备了好工具. 微软对PHP的支持越来越强,这点在IIS7中体现明显,不但有FastCgi的大力支持,还为PHP的管理专门增加了个PHP Manager.

java 同时安装多版本问题

java 同时安装多版本问题(转) http://www.cnblogs.com/SamuelSun/p/6022296.html http://blog.csdn.net/u013256622/article/details/49096875

CentOS下安装高版本GCC

CentOS下安装高版本GCC 微信分享: 有时编译需要用到4.8以上版本的GCC,由于CentOS源没有提供高版本的GCC安装包,这时就不能通过安装包安装.通常的解决方案就是通过编译安装高版本的GCC. 这里介绍一个更高级.更好用.更简单的方法来升级系统GCC,本文将介绍如何利用CentOS的新特性SCL进行高版本GCC的安装. 什么是SCL 请参考:如何在CentOS上启用软件集Software Collections一文 通过SCL安装GCC 官方SCL仓库 devtoolset-3: h