記一次安裝多版本的php的四個雷區,你踩着了嗎php
需求:公司須要在同一臺服務器上安裝不一樣版本的php,而這一臺的服務上已經安裝了php.7.1,現須要同時存在兩個版本,而另外一個版本爲php5.六、mysql
原版本的php是使用一鍵安裝工具oneinstack來裝的 工具下載可參考官網:https://oneinstack.com/install/nginx
(如下安裝都是以oneinstack來安裝)sql
1、安裝另外一個版本php5.6vim
注意如下是正確的安裝,遇到的坑下面再說bash
1、 安裝php5.6服務器
由於之前的php也是使用oneinstack安裝的因此啓動文件是是php-fpm,咱們須要修改php-fpm文件名,防止再次安裝被覆蓋。php7
中止本地的php7.1composer
#service php-fpm stop
更改php-fpm啓動文件名ide
#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.六、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、查看多版本運行狀況
以下圖:
安裝完成
2、容易的踩到的雷區及解決辦法
雷區1、沒有備份php-fpm文件,直接安裝
過程緣由:
第一安裝的時候,可把我給害慘了,沒有對oneinstack用的很熟練而後就直接安裝了,致使一會兒忘記把php-fpm備份
結果:
安裝完後,發現,原來的php-fpm文件給覆蓋了,致使把原來的php7.1重裝。
雷區2、沒有修改php-fpm.conf文件就啓動php
過程緣由:
直接啓動php7.1,再啓動5.6,發現啓動不了,搞了好久,才發現原來是php-cgi.sock文件佔用問題
結果:
把php56目錄下的的php-fpm.conf文件的php-cgi.sock配置改爲php5-cgi.sock後,重啓,完畢。
雷區3、沒有修改環境變量
過程緣由:
由於安裝php5.6或,隨着就會更改環境變量的文件/etc/profile的變量環境目錄,會把原來的/usr/local/php改成/usr/local/php56,這個更改,致使個人一些命令執行出錯,好比composer,php等等。
結果:
把/etc/profile的/usr/local/php56改成/usr/local/php,執行php -v,發現版本回來了,命令執行也能夠了。
雷區4、 修改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,項目部署成功。
3、總結
一個服務的多版本問題,主要考慮的是的兼容性,當咱們在一臺服務器上安裝多個版本的服務,咱們須要有足夠的把握,纔去部署,你能夠在本地安裝測試完再部署到線上的環境,另外,對一些熱門的軟件,須要要熟練的掌握才行,避免操做出錯。