V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jimduan
V2EX  ›  PHP

请问, 各位大大, 如何使 php5.4 , PHP 5.6, php7 环境 在一台服务器上共存?

  •  
  •   jimduan · 2017-08-28 00:25:18 +08:00 · 4689 次点击
    这是一个创建于 2682 天前的主题,其中的信息可能已经有所发展或是发生改变。

    运维很渣的 PHP 新手, 请问, 现公司服务器 lnmp 环境, php 版本还是 5.4 的, 太老了, composer 一些包有的都跑不起来, 想升级到 5.6 或者 PHP7 ! 但是很多老项目运行在上面, 不敢, 轻易升级! Q1: 有没有什么办法? 老项目依旧在 5.4 下运行, 以后开发的新项目运行在 5.6 下或者 7 下, 他们能在一台服务器上 和谐共存? Q2: 最近, 关注到 docker, 是不是一个很好的解决方案呢?

    28 条回复    2017-09-16 00:27:55 +08:00
    Sikoay
        1
    Sikoay  
       2017-08-28 00:35:40 +08:00 via Android   ❤️ 1
    配置 nginx 的 php-fpm ? 把对应的站点配置到对应的 PHP 版本就行了吧
    Sanko
        2
    Sanko  
       2017-08-28 00:36:16 +08:00 via Android
    宝塔面板不知道行不行
    jimduan
        3
    jimduan  
    OP
       2017-08-28 00:37:21 +08:00
    @Sikoay nginx 可以配置 多个 php-fpm 对应着不同 php 版本?
    WordTian
        4
    WordTian  
       2017-08-28 00:37:51 +08:00 via Android   ❤️ 2
    对啊,不同版本的 php 监听不同的端口,在不同网站的 nginx 配置文件把 php 转发到对应版本的端口就行啊
    jimduan
        5
    jimduan  
    OP
       2017-08-28 00:38:45 +08:00
    @Sanko 谢谢, 没怎么用过面板, 我 GOOGLE 下, 什么东东
    jimduan
        6
    jimduan  
    OP
       2017-08-28 00:40:11 +08:00
    @WordTian 好的好的, 我去恶补下 , 相关的知识
    Sikoay
        7
    Sikoay  
       2017-08-28 00:40:33 +08:00 via Android
    @WordTian 对,就是这个
    msg7086
        8
    msg7086  
       2017-08-28 01:33:35 +08:00   ❤️ 1
    docker 比较好点其实。
    比起在宿主上折腾 3 个 PHP 还要保证他们不冲突(也就是势必要自己编译安装,自己创立配置文件等等),docker 是直接提供了 3 个新的操作系统运行环境,并且上面跑的是 3 个原生的 PHP 安装,比你自己折腾要方便。

    PS: 我们有一个类似需求是在 Debian 9 里运行 Ubuntu 14.04 环境的程序,最后是用的 chroot 而不是 docker。
    WordTian
        9
    WordTian  
       2017-08-28 01:57:59 +08:00 via Android
    不用自己编译安装啊,不同版本安装不冲突的。就比如 centos,安装 php7.1 是 yum install php71w-*,其他版本类似,每版本的包名都有区别。但就是都监听 9000 端口,需要改其他版本的监听端口。
    ETiV
        10
    ETiV  
       2017-08-28 02:08:55 +08:00 via iPhone
    docker php apache 最简单了

    外层 nginx 设置一个 http proxy 就可以用
    wangxiyu191
        11
    wangxiyu191  
       2017-08-28 02:15:47 +08:00 via Android
    如果用的是比较传统的部署方式,那也可以看看 lxc。感觉比 docker 容易适应一些。
    kslr
        12
    kslr  
       2017-08-28 08:15:20 +08:00 via Android
    如果监听 sock 是可以直接包安装
    scofieldpeng
        13
    scofieldpeng  
       2017-08-28 08:17:58 +08:00
    这不就是 docker 的应用场景?
    dangyuluo
        14
    dangyuluo  
       2017-08-28 08:55:46 +08:00
    docker 是干嘛的。。。。
    loadinger
        15
    loadinger  
       2017-08-28 09:21:50 +08:00
    或者编译一个 PHP7,然后把端口改为非 9000,对应着 nginx 改一下就可以了.
    zgk
        16
    zgk  
       2017-08-28 09:25:49 +08:00 via Android
    可以用不同的 prefix 编译不同版本的 PHP,然后在各自的 php-fpm 配置文件下监听不同的 unix socket,Nginx 根据不同的 URL 来做转发,还是可以的,就是文件权限所有者什么的要多费点心去配置
    mcfog
        17
    mcfog  
       2017-08-28 09:28:04 +08:00 via Android   ❤️ 1
    不是我说啥,基本的编译,prefix,手动配置 fpm 这些看看 README 面向谷歌运维都搞不定的话,搞 docker 就是在给自己挖坑
    ssoftlns
        18
    ssoftlns  
       2017-08-28 09:39:00 +08:00
    docker 是最佳实践
    234747005
        19
    234747005  
       2017-08-28 09:59:48 +08:00
    你现在这个情况并不适合用 docker,,
    建议你还用 nginx,proxy_pass 到不同版本的 php 上面吧。
    tszyh
        20
    tszyh  
       2017-08-28 10:21:59 +08:00
    安装到不同目录 然后用不同的端口就可以了
    lianxiaoyi
        21
    lianxiaoyi  
       2017-08-28 10:22:43 +08:00
    论 docker 的牛逼之处
    Famio
        22
    Famio  
       2017-08-28 10:28:14 +08:00
    我就是双版本共存的,nginx 里面不同网站监听不同端口不就好了,比如 9000,9001
    falcon05
        23
    falcon05  
       2017-08-28 11:25:08 +08:00 via iPhone
    要编译安装啊,包管理工具装的是不是都指向同一个配置文件,同一个服务自启动文件路径呢?
    thecon
        24
    thecon  
       2017-08-28 11:32:58 +08:00
    php-fpm 设置成不同端口就可以了
    atcdef
        25
    atcdef  
       2017-08-28 13:02:00 +08:00   ❤️ 1
    不知道你流量多大?要是流量很小的话,就用 php 自带的内置服务器,各个版本的各启动一个监听不同端口,前面用 nginx 做转发就行了
    gouchaoer
        26
    gouchaoer  
       2017-08-29 19:00:29 +08:00 via Android   ❤️ 1
    不可以用 php 自带的服务器,没有并发的
    另外,nginx 配置不同网站到不同 php-fpm 即可,没必要用 docker
    8355
        27
    8355  
       2017-09-08 13:50:39 +08:00
    之前大家都说了 php-fpm 跑不同端口的问题 我再补充一下如果有 cli 直接执行 php 命令的话也记得要配多个
    qianbi6
        28
    qianbi6  
       2017-09-16 00:27:55 +08:00
    lnmp.org 自带多版本
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 21:46 · PVG 05:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.