V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
skyworker
V2EX  ›  PHP

Linux 下的二进制 PHP 集成环境有用过的吗?

  •  
  •   skyworker · Feb 17, 2020 · 4485 views
    This topic created in 2271 days ago, the information mentioned may be changed or developed.
    RT, 非 lnmp 那种 下载源码后编译安装 或 通过 apt/yum 安装的. 需要能直接运行的的集成环境(原因? 例如 linux 服务器是内网,无法下载源码或者 apt)

    zbox( http://devel.cnezsoft.com/page/zbox.html) 正好是我们需要的, 不过内置的 PHP 和 mysql 版本太低(php7.2 以上, mysql5.7 以上), 所以暂时没法用
    16 replies    2020-02-17 20:52:43 +08:00
    msg7086
        1
    msg7086  
       Feb 17, 2020
    你的意思是 docker 或者虚拟机吗。
    skyworker
        2
    skyworker  
    OP
       Feb 17, 2020
    也非 docker 或者虚拟化, 类似 zbox 那种, 下载后包含二进制的 PHP/Apache/Mysql 服务端, 直接运行即可
    salamanderMH
        3
    salamanderMH  
       Feb 17, 2020
    写个脚本就可以了吧,以前弄的 https://github.com/salamander-mh/LnmpShell

    现在也都用 docker 了
    manami
        4
    manami  
       Feb 17, 2020
    emm 推荐不用编译的 xampp。可以直接在 xampp 官网下载 linux 版本的.run 文件上传安装,比较新的 php 版本都有,一直在用我觉得很方便……
    https://www.apachefriends.org/index.html
    msg7086
        5
    msg7086  
       Feb 17, 2020   ❤️ 4
    二进制的程序都有依赖项,最少最少也要依赖 glibc,你要新版的软件环境,那自然要新版的 glibc,然而目标操作系统可能并没有这么新的版本,于是就造成了矛盾。

    那么解决这个问题也很简单,那就是把操作系统也集成在里面,自带 glibc,只要内核版本差异不太大( 3.2 到 5.4 都能跑),就可以跑起来。

    这种就是我们以前也经常用的 chroot 大法,用 debootstrap 把操作系统装在目录里面,然后在里面装上软件,打个包就能带走,解压 chroot 进去就能启动服务了。

    后来有个软件把这个东西又升级了一下,这个软件就是 docker 了。

    要在不用 docker 的情况下实现这样一个东西,大致上你就是在重新发明一遍 docker。
    zjsxwc
        6
    zjsxwc  
       Feb 17, 2020 via Android
    我选择默认的 apt 方式
    cabing
        7
    cabing  
       Feb 17, 2020
    前面都说了 docker

    写一个 docker 脚本。和你工作组的所有人都可以用。
    ipwx
        8
    ipwx  
       Feb 17, 2020
    docker 可以导出镜像为本地文件,然后再导入。你想办法在没联网的环境里面装好 Docker 引擎,然后你就可以用你随便啥机器制作一个 Docker 镜像,拷贝过去,就能用了。这是最简单的途径。不然有的你折腾的。
    yiran0
        9
    yiran0  
       Feb 17, 2020
    我还真这么干过,我当时的内网环境是 suse11,不升内核根本不用想什么 docker,软件源也没啥可用。我是一个个编译过去的,哎……现在想起来有种身在依赖地狱的感觉。不过如果你的系统版本足够好,软件源足够完全,可以在外面同环境 apt/yum 装一遍,同时下载依赖安装文件,放到里面安装就可以啦……
    hoyixi
        10
    hoyixi  
       Feb 17, 2020
    如果没有网络,使用 Linux 会是件非常痛苦的事情
    westoy
        11
    westoy  
       Feb 17, 2020
    他这个其实有一点问题,mysql 是多协议授权, 集成包里预打包 mysql binary 需要购买授权, 也就是说这种自带式集成包可能被 oracle 法务盯上, 当然你拿来用应该没什么问题......
    LokiSharp
        12
    LokiSharp  
       Feb 17, 2020
    用 CentOS 然后用最新的完整镜像做个源就好了
    iyaozhen
        13
    iyaozhen  
       Feb 17, 2020   ❤️ 1
    这都是上个世纪的做法了
    如果你们系统统一自己做个自动安装脚本就行,可以编译的依赖时候固定目录,这样就可以二进制文件到处 copy 了
    zjyl1994
        14
    zjyl1994  
       Feb 17, 2020
    docker 就行了,可以自己搭建内网的 docker 镜像,从公网下了 docker 镜像弄进去就行了
    fox0001
        15
    fox0001  
       Feb 17, 2020 via Android
    @zjyl1994 #14 赞成~

    或者下载安装包,拷贝到服务器上执行安装
    berrx
        16
    berrx  
       Feb 17, 2020
    homestead?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1885 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 16:15 · PVG 00:15 · LAX 09:15 · JFK 12:15
    ♥ Do have faith in what you're doing.