OneinStack PHP多版本共存教程

  • A+
Categories:Linux

教程基于《OneinStack》一键PHP/JAVA安装工具中lnmp模式,很用户希望一个网站运行在php5.4,另一个网站运行在php7下,一台服务器上同时支持多个PHP版本,步骤如下:

1. 安装OneinStack

选择lnmp模式,默认安装php5.4,安装步骤参考:http://oneinstack.com/install/

选项如下:

  1. Install Nginx
  2. Do not install Apache
  3. Do not install Tomcat
  4. Install MySQL-5.6
  5. Install php-5.4
  6. ....

2. 安装php7

  1. service php-fpm stop #后面需要再安装php,需要停止php
  2. mv /etc/init.d/php-fpm{,_bk} #后面需要再安装php会覆盖,备份启动脚本

默认php5.4安装路径是/usr/local/php,如果再次安装会提示php已经安装,因此必须修改options.conf的php安装目录,将php7安装路径设置为/usr/local/php7,修改/root/oneinstack/options.conf:

  1. php_install_dir=/usr/local/php7

再次执行./install.sh,选择Install php-7,其余均选择n,等待ing

3. 修改php配置文件

  1. service php-fpm stop #停止php7启动脚本
  2. mv /etc/init.d/php-fpm /etc/init.d/php7-fpm  #重命名php7启动脚本
  3. mv /etc/init.d/php-fpm_bk /etc/init.d/php-fpm  #恢复php5.4启动脚本

设置php5.4、php7开机自启动:

  1. # CentOS:
  2. chkconfig --add php7-fpm
  3. chkconfig --add php-fpm
  4. chkconfig php7-fpm on
  5. chkconfig php-fpm on
  6. # Ubuntu/Debian:
  7. update-rc.d php7-fpm defaults
  8. update-rc.d php-fpm defaults

防止php5.4、php7监听sock冲突,修改php7的listen,更改配置文件/usr/local/php7/etc/php-fpm.conf:

  1. listen = /dev/shm/php-cgi.sock
  2. #改成
  3. listen = /dev/shm/php7-cgi.sock

手工启动php5.4、php7:

  1. service php-fpm start  #启动php5.4
  2. service php7-fpm start #启动php7

如下图:

4. 修改nginx虚拟主机配置文件

./vhost.sh绑定域名,默认是运行在php5.4,如需要将网站运行在php7下,需要修改/usr/local/nginx/conf/vhost/www.oneinstack.com.conf(www.oneinstack.com改成自己绑定域名):

  1. fastcgi_pass unix:/dev/shm/php-cgi.sock;
  2. #改成
  3. fastcgi_pass unix:/dev/shm/php7-cgi.sock;

重新加载nginx,使配置生效:

  1. service nginx reload

Tue Feb 2 13:00:31 CST 2016

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

Replies to:25   Visitors  15   Admin  10

    • avatar CC 2

      Debian 9 重启自启动 多版本PHP 启动不了.
      root@vultr:/etc# update-rc.d php56-fpm defaults
      insserv: script php56-fpm: service php-fpm already provided!
      insserv: script php70-fpm: service php-fpm already provided!
      提示加入了自启动, 但是重启之后, 只看到只有一个 php-fpm 启动了 php56 php70 未启动.

      搞不明白了…

        • avatar yeho Admin

          @CC 对应脚本名字没改。

        • avatar Vickers 0

          按照上诉方法在7上安装了5.6共存成功,但是子域名依然不能调用5.6,求指教

          • avatar 绿血贵族 0

            我现在安装的是Nginx+Apache+Tomcat+Php5.3.29和其它都是默认安装的第一项,如何实现PHP5.3.29+PHP7共存呢

              • avatar yeho Admin

                @绿血贵族 更改apache php路径 再安装apache php,并更改apache监听端口,更改对应nginx配置

              • avatar Lee 1

                非常爽,感谢。
                问下如果要 php5 and php7 都使用redis,该怎么操作呢?

                比如 php5 安装的同时安装了redis,如果php7 安装的时候也选择不就装2次了?

                扩展会在没选择安装redis的情况下 自动安装吗?

                  • avatar yeho Admin

                    @Lee 都选择redis即可

                  • avatar 睿客网 0

                    先收藏,改天亲测一下

                    • avatar smartweb 1

                      我将过a+n使用mod_php5的方式 也可以,安装好php5.6之后将libphp5.so改为libphp56.so,按方法将php安装配置路径改为php54再安装php5.4,就会有libphp5.so和libphp56.so两个文件。再在apache网站配置文件httpd.conf中的LoadModule php5_module modules/libphp5.so 删除,再在0.conf的下一行加入LoadModule modules/libphp56.so再重apache两次就可以看到php版本改了,就是不明白为什么要两次。

                      • avatar smartweb 1

                        我想用apache+ng的,该怎样做呢?

                          • avatar yeho Admin

                            @smartweb 安装前更改apache php安装路径 ,Listen将88 改成89

                          • avatar 折扣团 0

                            请问下,博主,装了php5.6版本,能再装PHP7同时运行吗?

                            • avatar 小米 0

                              成功了,谢谢老大。

                              • avatar m1911 1

                                我先安装了7 可不可以在安装5?

                                • avatar Jason 0

                                  如果5.4安装过redis、memcached、memcache、imagick、gmagick这些扩展模块了,再安装PHP7还需要再安装一遍吗?

                                  • avatar 米粒博客 0

                                    学习了 谢谢博主

                                    • avatar ClayMore 0

                                      建议加入OneinStack

                                      • avatar miming 1

                                        有新版本 PHP,如果要升级 PHP5.4 及 PHP7 版本,该如何升级?

                                          • avatar yeho Admin

                                            @miming 修改options.conf 来回切换升级。注意/etc/init.d/php-fpm 备份

                                          • avatar 小翼 0

                                            如果使用MEMCACHED之类的,还需要做什么操作吗?