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

PHP 如何优雅的打包部署, 类似 install 那样的

  •  
  •   miaotaizi · 315 天前 · 4750 次点击
    这是一个创建于 315 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 PHP 给朋友做了个小的管理系统, 只想给他在本地体验体验, 有没有什么简单的安装办法?

    只要 点点鼠标下一步的那种

    第 1 条附言  ·  315 天前
    可能我表述的不清楚, 这里补充一下, 我的目标是把写好的项目给朋友, 能实现一键安装.

    目前想到的就是直接把项目代码用 lnmp 形式直接打包成一个 docker image, 然后写个 bat 之类的脚本 在用户的机器上安装 docker 拉取指定的 image
    第 2 条附言  ·  314 天前
    最终选择了 phpstudy + 远程协助

    看了这么多评论, 有的时候真的很想笑, 果然都是程序员, 哈哈
    41 条回复    2023-05-19 12:08:35 +08:00
    1a7489
        1
    1a7489  
       315 天前
    那为啥不直接部署到线上给他体验
    awinds
        2
    awinds  
       315 天前
    自己的服务器给他开体验账号
    loginv2
        3
    loginv2  
       315 天前
    服务器打包部署可以看看 webman 框架的方案,单文件部署

    windows 软件的打包可以参照其他软件的安装包制作,只不过需要把 http 服务器软件也打包进去,例如绿色版的 xampp 之类的,当然你有能力自己编译和裁剪更好
    dzdh
        4
    dzdh  
       315 天前
    再用 go 写个起动器吧。。。。
    seers
        5
    seers  
       315 天前 via Android
    docker
    duanxianze
        6
    duanxianze  
       315 天前
    phpcli 自带服务器,利用 php -S 启动,这个把源码和 php 打包再写个脚本一键启动也就可以了,如果有数据库就较为麻烦,但既然本地服务可以考虑用 sqlite3 ,一样打包到一起就行了
    encro
        7
    encro  
       315 天前
    没有很好用的,因为写本地管理系统用 PHP 就是错误。

    你直接部署网络上不是也能体验吗?
    H97794
        8
    H97794  
       315 天前
    别想了,你就是在部署在笔记本上,再把笔记本给他,该不会的还是不会
    pota
        9
    pota  
       315 天前
    一般这个时候用自己的服务器部署个测试环境是最方便的。
    javalaw2010
        10
    javalaw2010  
       315 天前
    正好我最近正在关注 https://github.com/crazywhalecc/static-php-cli 这个项目,他可以编译出静态版本的 php ,支持一些常用的扩展,可以直接分发,支持 cli ,fpm ,他也支持 phpmicro SAPI ,你可以将你的项目打包成 phar ,然后直接 cat micro.sfx xxx.phar ,整个项目就可以当成一个二进制分发了,不过目前只支持 macos 和 linux 。除此以外,你还可以使用 swoole-cli ,swoole 团队维护的,跟 static-php-cli 类似,也支持 phpmicro ,不过对 php 内核做了一些裁剪,这个是支持 windows 的。
    kaedeair
        11
    kaedeair  
       315 天前
    phpstudy
    zskj
        12
    zskj  
       315 天前
    usbwebserver 可以试试
    largezhou
        13
    largezhou  
       315 天前
    内网穿透
    to2false
        14
    to2false  
       315 天前
    docker
    boks
        15
    boks  
       315 天前
    部署到线上
    远程控制
    虚拟机镜像
    totoro52
        16
    totoro52  
       315 天前   ❤️ 1
    人家很明显朋友是个小白,不懂技术,楼上太夸张了,我建议你把网站放进 phpstudy ,然后整个 phpstudy 目录打包压缩发给朋友,朋友打开 study 后点下启动然后就可以访问网站了,不需要做其他操作
    另外 PHP 你如果不想部署到服务器你可以考虑云函数
    spicy777
        17
    spicy777  
       315 天前
    项目发给他,然后远程控制他电脑,装个 phpstudy ,配置好站点给他展示
    kaf
        18
    kaf  
       315 天前
    docker
    akira
        19
    akira  
       315 天前
    没有现成 php 优雅的打包部署 的方案,
    这个优雅打包的解决方案,你要是能做出来,赚的比你这项目多两个数量级没问题
    fishily1993
        20
    fishily1993  
       315 天前
    原来不止我一个人对 PHP 的部署上线头疼。。。😂
    zhenrong
        21
    zhenrong  
       315 天前
    这个时候就体现 golang 这种能直接打包成二进制输出的优越性了。
    cheng6563
        22
    cheng6563  
       315 天前
    windows 跑 docker 自讨没趣吗?
    把项目丢进 xampp ,然后一起压缩,告诉客户放哪里点哪个启动。
    lzj307077687
        23
    lzj307077687  
       315 天前
    win 跑 docker 不还得指导他进 bios 开虚拟化
    uplee
        24
    uplee  
       315 天前
    https://github.com/crazywhalecc/static-php-cli 打包可以的,然后第一次启动的时候初始化
    barbery
        25
    barbery  
       315 天前
    phar
    brader
        26
    brader  
       315 天前
    这个很简单啊,别搞 docker ,对于小白,只会复杂化,你把项目代码,PHP 环境,都塞在一个文件夹里,告诉他不需要动和关心这个文件夹,在文件夹外面,给他写个 bat 脚本,里面就是启动 php 环境的命令,然后就能跑了
    wflanglanglang
        27
    wflanglanglang  
       315 天前 via iPhone
    对费劲啊 lnmp 打好之后,直接从 git 去拉不好吗?给他写个文档,两行命令的事
    BeforeTooLate
        28
    BeforeTooLate  
       315 天前
    vagrant + Puppet 或 Chef
    dko
        29
    dko  
       315 天前
    想想当年 asp 时代还有个 netbox ,php 的一般就是 phpstudy ,然后搞个一键脚本 call 浏览器吧。
    akiyamamio
        30
    akiyamamio  
       315 天前   ❤️ 1
    用这个吧,别人甚至连 php 环境都不需要了,直接使用

    https://www.workerman.net/doc/webman/others/bin.html
    brader
        31
    brader  
       315 天前
    简单本地使用的话,这样搞就行了,project/php 放的是 PHP 环境,使用者无需关心 project 目录里面有什么,只需要点击启动脚本就行了
    em70
        32
    em70  
       315 天前
    远程协助,直接去部署就好了,如果只是体验或者要给非特定人群用就直接部署服务器 SAAS,有做一键本地化的时间早就手动部署好了
    mrpzx001
        33
    mrpzx001  
       315 天前
    @akira 楼上提的 static-php-cli/swoole-cli 就是,想来 static-php-cli 的作者也没发多大的财
    lisxour
        34
    lisxour  
       315 天前
    @mrpzx001 这类方案都是有损的,跟直接用 php 跑会有运行差异性,最优雅的方式现在除了将一切环境打包成独立的程序,后台释放再启动服务器,其他方案都多多少少有点问题,和 node 处境是一样的。
    likunyan
        35
    likunyan  
       315 天前
    到时候更新呢?还是要服务器部署。你给他弄本地体验,到时候电脑卡了怪你。
    james122333
        36
    james122333  
       315 天前
    如果你是使用类 unix 系统 可以很优雅
    php 本来就是类 unix 系统使用者使用最爽
    最原始最方便的方法就是 chroot 不用 root 权限就是 proot
    将资料夹当作根目录 所有东西装在里面 也是安卓系统跑其他 linux 的方法 其中又以 archlinux 最为方便 安装 archlinux 途中就用 pacstrap 把包装进去再 chroot
    https://wiki.archlinux.org/title/installation_guide
    其它发行版则可以用以下方式配置 arch
    https://wiki.archlinux.org/title/Install_Arch_Linux_from_existing_Linux
    这也是为什么 arch 其实可以作为 server
    好处是配置方便 需要多装什么如数据库其他 php 扩展的包直接 chroot 进去用包管理器装好就可以
    还没有 docker 那么麻烦 弄好直接额外写启动脚本用 chroot 启动 server 即可 然后将该脚本与根目录资料夹打包起来就可以
    然后对方随便装个好装简便的发行版你再给他少少的说明就可以

    请放弃 windows XD
    james122333
        37
    james122333  
       315 天前
    至于数据库资料可以储存在根资料夹外面
    如果你会使用
    james122333
        38
    james122333  
       315 天前
    当然也可以搭配 docker 这样 docker image 就可以不用更新 每次重新 build image 很花时间的
    dcsuibian
        39
    dcsuibian  
       315 天前
    软件安装包一般适用于客户端软件,b/s 软件这么干的真的很少
    cwcc
        40
    cwcc  
       314 天前 via iPhone
    如果是 workerman ,swoole ,swow 等类似 cli 项目,可以使用 static-php-cli ,然后写一个简单的启动脚本就可以让它运行(当然还没支持 win 后续会支持)。如果是 fpm 模式的项目,还是推荐要么自己部署服务器上让他体验。如果一定要本地化运行,不使用 docker 的话可以使用 sqlite 作为临时数据库,把 php 官网的 windows 发行版下载下来,写脚本用 php -S 启动一个服务器并自动打开浏览器。
    jiajiechan
        41
    jiajiechan  
       314 天前
    win to go ,直接在 U 盘的系统弄好,丢 U 盘启动进 PE
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3320 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 132ms · UTC 13:36 · PVG 21:36 · LAX 06:36 · JFK 09:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.