记一次安装多版本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,项目部署成功。
三、总结
一个服务的多版本问题,主要考虑的是的兼容性,当我们在一台服务器上安装多个版本的服务,我们需要有足够的把握,才去部署,你可以在本地安装测试完再部署到线上的环境,另外,对一些热门的软件,需要要熟练的掌握才行,避免操作出错。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Consul + Nginx实现自动扩容平台
几个月没有更新博客了,已经长草了,特意来除草。之前基于nginx反向代理使用的是:nginx + confd + etcd的存储方式,最近发现部门DBA同事使用consul + redis + 哨兵实现的主从自动选举切换,不影响业务的方式,还有看到有些公司分享的consul + mha的方式,觉得不错,于是研究了下consul,本案例是基于consul +consul-template + nginx + flask + mysql构成的。既然consul这么传神,我们先来看看consul是什么: consul是HashiCorp公司(曾经开发过vgrant) 推出的一款开源工具, 基于go语言开发, 轻量级, 用于实现分布式系统的服务发现与配置。 与其他类似产品相比, 提供更“一站式”的解决方案。 consul内置有KV存储, 服务注册/发现, 健康检查, HTTP+DNS API, Web UI等多种功能。官网:https://www.consul.io/其他同类服务发现与配置的主流开源产品有:zookeeper和ETCD。 consul的优势: 1. 支持多数据中心, 内外...
- 下一篇
Spring Boot集成ElasticSearch实现简单的增删查改接口
SpringBoot集成ElasticSearch pom.xml文件中,依赖的各jar包版本如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> &...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8编译安装MySQL8.0.19
- Red5直播服务器,属于Java语言的直播服务器
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题