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

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

  •  
  •   miaotaizi · 2023-05-18 09:39:58 +08:00 · 5350 次点击
    这是一个创建于 592 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言  ·  2023-05-18 10:20:50 +08:00
    可能我表述的不清楚, 这里补充一下, 我的目标是把写好的项目给朋友, 能实现一键安装.

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

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

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

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

    https://www.workerman.net/doc/webman/others/bin.html
    brader
        31
    brader  
       2023-05-18 13:24:40 +08:00
    简单本地使用的话,这样搞就行了,project/php 放的是 PHP 环境,使用者无需关心 project 目录里面有什么,只需要点击启动脚本就行了
    em70
        32
    em70  
       2023-05-18 13:37:04 +08:00
    远程协助,直接去部署就好了,如果只是体验或者要给非特定人群用就直接部署服务器 SAAS,有做一键本地化的时间早就手动部署好了
    mrpzx001
        33
    mrpzx001  
       2023-05-18 14:16:49 +08:00
    @akira 楼上提的 static-php-cli/swoole-cli 就是,想来 static-php-cli 的作者也没发多大的财
    lisxour
        34
    lisxour  
       2023-05-18 14:29:42 +08:00
    @mrpzx001 这类方案都是有损的,跟直接用 php 跑会有运行差异性,最优雅的方式现在除了将一切环境打包成独立的程序,后台释放再启动服务器,其他方案都多多少少有点问题,和 node 处境是一样的。
    QKgf555H87Fp0cth
        35
    QKgf555H87Fp0cth  
       2023-05-18 14:34:11 +08:00
    到时候更新呢?还是要服务器部署。你给他弄本地体验,到时候电脑卡了怪你。
    james122333
        36
    james122333  
       2023-05-18 19:49:43 +08:00
    如果你是使用类 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  
       2023-05-18 19:52:21 +08:00
    至于数据库资料可以储存在根资料夹外面
    如果你会使用
    james122333
        38
    james122333  
       2023-05-18 20:01:24 +08:00
    当然也可以搭配 docker 这样 docker image 就可以不用更新 每次重新 build image 很花时间的
    dcsuibian
        39
    dcsuibian  
       2023-05-18 20:25:51 +08:00
    软件安装包一般适用于客户端软件,b/s 软件这么干的真的很少
    cwcc
        40
    cwcc  
       2023-05-19 08:46:20 +08:00 via iPhone
    如果是 workerman ,swoole ,swow 等类似 cli 项目,可以使用 static-php-cli ,然后写一个简单的启动脚本就可以让它运行(当然还没支持 win 后续会支持)。如果是 fpm 模式的项目,还是推荐要么自己部署服务器上让他体验。如果一定要本地化运行,不使用 docker 的话可以使用 sqlite 作为临时数据库,把 php 官网的 windows 发行版下载下来,写脚本用 php -S 启动一个服务器并自动打开浏览器。
    jiajiechan
        41
    jiajiechan  
       2023-05-19 12:08:35 +08:00
    win to go ,直接在 U 盘的系统弄好,丢 U 盘启动进 PE
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2397 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 15:53 · PVG 23:53 · LAX 07:53 · JFK 10:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.