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

服务器上如何存在多个 PHP 版本环境?

  •  
  •   herozzm · 2016-04-22 10:52:37 +08:00 via Android · 7289 次点击
    这是一个创建于 2934 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前公司服务器上采用了 lamp , PHP 是 5.2.17 ,放了很多只兼容 PHP5.2 的网站(要改成支持 lnmp , php5.6 不现实),现在服务器老化需要更换了,需要配置 lnmp 环境,因为要支持最新开发的其他网站系统。
    那么问题来了,服务器只能用一台新服务器,老服务器要下架,我怎样在新服务器上将原来的老网站迁移过来,然后同时也支持 lnmp 的新网站系统
    第 1 条附言  ·  2016-04-22 14:19:40 +08:00
    原 lamp 上还有虚拟主机管理系统,要继续接着用,所以无缝迁移最好了
    41 条回复    2016-05-03 14:23:07 +08:00
    MangozZ
        1
    MangozZ  
       2016-04-22 11:12:28 +08:00   ❤️ 1
    其实就是开不同的 php-fpm 监听不同的 sock 。
    https://blog.linuxeye.com/441.html
    kamen
        2
    kamen  
       2016-04-22 11:12:51 +08:00 via Android   ❤️ 1
    重命名,一个命名为 php5.6,另一个命名为 php5.2
    em70
        3
    em70  
       2016-04-22 11:13:24 +08:00   ❤️ 1
    用虚拟机分成 2 台
    lijinma
        4
    lijinma  
       2016-04-22 11:19:01 +08:00   ❤️ 1
    @MangozZ 楼主用的 apache ,哈哈

    所以只能 Apache 使用多个 vhosts
    Tink
        5
    Tink  
       2016-04-22 11:19:50 +08:00 via iPhone   ❤️ 1
    为什么不用 docker 呢,这不就是 docker 解决的问题吗
    skydiver
        6
    skydiver  
       2016-04-22 11:20:19 +08:00   ❤️ 1
    装两个虚拟机。
    nlzy
        7
    nlzy  
       2016-04-22 11:29:52 +08:00 via Android   ❤️ 1
    老网站继续用 Apache + php 5.2 ,然后用 Nginx 反代
    shiny
        8
    shiny  
       2016-04-22 11:32:03 +08:00   ❤️ 1
    一开始 docker 会有点折腾,入门后会觉得轻松很多。
    aa45942
        9
    aa45942  
       2016-04-22 11:37:40 +08:00   ❤️ 1
    不同版本的 php 开不同的 sock ,用 APACHE+vhost 处理不同版本 php 做后端,再用 Nginx 做代理根据域名分配到不同的后端处理
    chaegumi
        10
    chaegumi  
       2016-04-22 12:37:18 +08:00   ❤️ 1
    安装在不同的目录,监听不同的端口
    JiaFeiX
        11
    JiaFeiX  
       2016-04-22 12:42:36 +08:00   ❤️ 1
    楼上有解了。

    另外, Kangle 也可以实现
    virusdefender
        12
    virusdefender  
       2016-04-22 12:47:03 +08:00   ❤️ 1
    docker
    alexsunxl
        13
    alexsunxl  
       2016-04-22 12:50:52 +08:00   ❤️ 1
    同推荐 docker
    新的服务器搭一下 docker , 想要多少个 php 版本都可以
    ooTwToo
        14
    ooTwToo  
       2016-04-22 12:51:37 +08:00 via iPhone   ❤️ 1
    稻壳儿
    herozzm
        15
    herozzm  
    OP
       2016-04-22 12:56:47 +08:00
    @alexsunxl 如果是安装 docker ,应该有一个主 docker ,接受所有的域名访问,然后代理到其他子 docker 吧?
    herozzm
        16
    herozzm  
    OP
       2016-04-22 12:57:31 +08:00
    @chaegumi 所有域名访问都是 80 端口,不同端口有什么用?
    VmuTargh
        17
    VmuTargh  
       2016-04-22 13:06:07 +08:00
    @JiaFeiX 好久没听到 kangle 这个玩意了……
    kslr
        18
    kslr  
       2016-04-22 13:08:42 +08:00 via Android
    @herozzm 根据 vhost proxy 哪里的端口呗
    raptor
        19
    raptor  
       2016-04-22 13:09:20 +08:00
    一个词: docker
    wizardoz
        20
    wizardoz  
       2016-04-22 13:09:40 +08:00
    docker
    wizardoz
        21
    wizardoz  
       2016-04-22 13:10:14 +08:00
    docker 感觉打开了新世界的大门
    chaegumi
        22
    chaegumi  
       2016-04-22 13:25:41 +08:00
    @herozzm

    you know nothing 。

    跑 php 的形式你都不了解

    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9002;
    include fastcgi_params;
    fastcgi_read_timeout 1200;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;

    默认是 9000 ,你可以跑 9001 9002
    herozzm
        23
    herozzm  
    OP
       2016-04-22 13:29:02 +08:00 via Android
    @chaegumi 看可是原来的是 Apache 模块加载 PHP 的,根本没有用 PHP-fpm
    Wangxf
        24
    Wangxf  
       2016-04-22 13:35:56 +08:00
    题主搜下 phpbrew 吧, php 版本管理的
    Zzzzzzzzz
        25
    Zzzzzzzzz  
       2016-04-22 13:42:10 +08:00
    80 跑 nginx, A 域名反向代理监听另一个端口的 apache+mod_php5.2.17+mod_remoteip, B 域名正常服务器静态文和 fastcgi php5.6 。 不过建议把 5.2.17 的迁到高版本 php, 5.2 分支 php 官方停止安全维护五六年了。
    chaegumi
        26
    chaegumi  
       2016-04-22 13:45:07 +08:00
    @herozzm 不要纠结 apache 了,扔掉 apache 。 nginx 跑 php5.2 也可以,好像方法也一样
    herozzm
        27
    herozzm  
    OP
       2016-04-22 13:51:30 +08:00 via Android
    @chaegumi Apache 上跑着上百个网站,针对 Apache 写了的伪静态各式各样,你让我扔掉,扔不掉啊
    msg7086
        28
    msg7086  
       2016-04-22 14:03:25 +08:00
    @herozzm Nginx 反代 Apache 就好了。无非就是 LANMP 的架构。新系统运行在 Nginx 上就行。
    而且这样迁移也方便,你可以一个一个把网站从 Apache 搬进 Nginx 里。(当然也可以就这么放在原处)
    herozzm
        29
    herozzm  
    OP
       2016-04-22 14:07:11 +08:00
    @msg7086 原来的 lamp 耦合太高了,还有个虚拟主机管理系统在上面
    msg7086
        30
    msg7086  
       2016-04-22 14:09:24 +08:00   ❤️ 1
    @herozzm 我说个恶心的做法。
    装上 ESXi ,开俩虚拟机,做 p2v 把原来的环境打包进来,另一个做新环境,然后内网打通以后反代。
    herozzm
        31
    herozzm  
    OP
       2016-04-22 14:19:06 +08:00
    @msg7086 开虚拟机 性能折扣了很多啊
    msg7086
        32
    msg7086  
       2016-04-22 14:36:48 +08:00
    @herozzm 折扣了多少?对访问速度影响多大?
    jarlyyn
        33
    jarlyyn  
       2016-04-22 14:54:28 +08:00
    docker
    jarlyyn
        34
    jarlyyn  
       2016-04-22 14:54:55 +08:00
    @herozzm

    前端 nginx 接管 80 端口
    herozzm
        35
    herozzm  
    OP
       2016-04-22 15:00:11 +08:00 via Android
    @jarlyyn 你说的宿主安装 nginx 接管 80 ,然后安装一个 docker ,里面安装 lamp ?
    walkman660
        36
    walkman660  
       2016-04-22 17:20:25 +08:00
    KVM 建 2 个虚拟机,桥接+NAT ,宿主机装 NGINX 只做反代,虚拟机该装什么装什么
    不喜欢 docker
    jarlyyn
        37
    jarlyyn  
       2016-04-22 18:58:08 +08:00   ❤️ 1
    @herozzm

    对的

    我公司的 gitlab 就是这样处理的。

    gitlab 的 docker 自带 nginx,然后由我负责接管 443 的 Nginx 带上证书后统一转发。
    cxbig
        38
    cxbig  
       2016-04-22 23:24:03 +08:00   ❤️ 1
    Docker
    realpg
        39
    realpg  
       2016-04-23 05:27:36 +08:00
    难道只有我觉得早跳槽早超生么?
    freejishu
        40
    freejishu  
       2016-04-23 08:46:08 +08:00 via iPad
    换大构架无缝几乎是不可能的,尤其是换引擎,除非原来的管理系统有 nginx 分支。

    多版本实现可以参考 a 某 h(不是安利)的实现方法,监听不同的 sock ,但是要会写规则。

    换引擎如果有伪静态那还比较麻烦把。。要重写规则。

    瞬间觉得又是虚拟机解决方案了(笑)
    vus520
        41
    vus520  
       2016-05-03 14:23:07 +08:00
    1 , docker+nginx proxy
    2, 多版本的 php-fpm + nginx upstream

    难道 docker 不是最好的姿势么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2312 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 02:24 · PVG 10:24 · LAX 19:24 · JFK 22:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.