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

macos 下写 PHP ,有什么方便的环境部署方式吗?

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

    因为要同时写多个项目,不同域名,每次都手动配置 nginx 太麻烦了,有没有什么更好的方式? 现在的做法是:docker 启动了个 centos 镜像,端口映射 80 端口到主机的 8080 端口,然后在里面跑了个宝塔,然后宝塔新建网站绑定域名之后,母鸡在修改 hosts ,母鸡的 nginx 直接转发到本机的 8080 端口访问;

    有时候机器意外重启,都要重新启动 docker ,因为系统限制,还要进 centos 启动 bt 、nginx 、redis ,开发太麻烦了;

    如果直接用 docker ,还需要手动绑定母鸡 nginx ,而且还得挨个配置 docker 端口,麻烦的一批

    有没有什么优雅的方式或者 macos 的 app ,能和 win 上的 phpstudy 一样,快乐的管理域名和开发环境?

    macos 的 phpstudy 就不要说了……

    写 springboot 和 go 的时候因为可以 debug ,本身不用 nginx 转发到 phpfpm 就方便的很

    实在不行就只能解析一个域名到 127.0.0.1 ,然后用 laravel 的php artisan serve+上 host 去绑定了~

    另外 go 有没有能解析 nginx 配置的库?可以的话直接手搓一个 nginx 的管理工具了~看了下 nginx 的 conf 不是啥标准格式,不知道该咋解析 T.T

    第 1 条附言  ·  91 天前
    可能表达的有问题,重新复述下:
    因为在开发一个 saas 平台,不同租户是用子域名区分的,所以本地开发也得绑定域名,所以不能用 docker 的不同端口,docker-compose 也不行;一会儿试下 docker 的 nginx 镜像能不能绑定域名,哈哈哈

    准备试下 valet
    31 条回复    2022-05-29 18:35:41 +08:00
    kestrelBright
        1
    kestrelBright  
       91 天前
    docker composer 一劳永逸
    skiy
        2
    skiy  
       91 天前 via iPhone
    ???字太多,反而不太明白需求重点了。

    docker compose up -d

    docker-compose.yml 上使用 netwok_mode 为 host ,command 参数 指向一个 启动 bt 的脚本。

    ---

    另外,可能也不需要用到 bt 啊。直接去找个 nginx-php 的镜像就好了。或者自己组装一个。

    参考
    https://github.com/webysther/packagist-mirror/blob/master/docker-compose.yml
    skiy
        3
    skiy  
       91 天前 via iPhone
    netwok_mode -> network_mode
    imnpc
        4
    imnpc  
       91 天前
    1. laravel 官方维护的 Homestead 需要虚拟机
    2. MAMP PRO 付费的
    Vitta
        5
    Vitta  
       91 天前
    mamp pro
    vainl1
        6
    vainl1  
       91 天前
    chenxu
        7
    chenxu  
       91 天前 via Android
    mamp pro
    changz
        8
    changz  
       91 天前
    xphp -S 127.0.0.1:8000 server.php 🐶
    lybcyd
        9
    lybcyd  
       91 天前 via Android
    laravel 吗?用 laravel valet 吧,可以自动 serve 一个文件夹下所有项目,并配置好 project.test 域名
    JaguarJack
        10
    JaguarJack  
       91 天前 via iPhone
    本地开发的话,就使用 docker ,一个项目一个端口号。而且不需要 web 服务器,php -s 就能满足了
    findex
        11
    findex  
       91 天前
    macos 下如果只是简单的配置开发环境,直接用 mamp 就可以了。不过目前好像只有 x86 版本的,arm64 版本的还没看到。用的 x86 的 mamp 环境包,比较耗费内存。

    如果是 devops 还涉及到服务器部署的话,直接用 docker 套吧。写个 docker yaml ,开发部署 CI/CD 一套完成。我在 M1 上用的 docker 跑的 x86 镜像,有性能损失,但是打包后放到 x86 linux 服务器上目前没啥问题。如果你的服务器是 arm64 的,那最好了,服务器目前还是 x86 主流。另外说一句,mysql 在 m1 上用 arm64 的镜像有问题,不能成功运行,推荐使用 mariadb 。
    cooper
        12
    cooper  
       91 天前   ❤️ 1
    Valet + PHP Monitor 香得很!
    cooper
        13
    cooper  
       91 天前   ❤️ 1
    zhouxelf
        14
    zhouxelf  
       91 天前
    Laradock
    sunhuawei
        15
    sunhuawei  
       91 天前
    1 楼正解,docker compose ,一个 nginx 容器,一个 php-fpm 容器,nginx 配置多个域名+php-fpm 的容器多个文件映射就能实现一个域名对应一个项目。我就这样同时挂载了 10 个左右项目

    想折腾就再起个 redis 容器。不想折腾直接 php-fpm 容器里装一个,通过 docker compose 定义安装步骤
    wangnimabenma
        16
    wangnimabenma  
       91 天前
    ghoul5426
        17
    ghoul5426  
       91 天前
    楼主是在 macOS 下需要同时配置多个项目的开发环境吧

    Nginx 或 Apache 都可以配置多个虚拟主机(使用不同域名),不就行了么,怎么绕这么远。。。

    还是我没听懂楼主的需求。
    Magician
        18
    Magician  
       91 天前
    valet homestead
    xiaoz
        19
    xiaoz  
       91 天前 via Android
    其实我的建议是花几十块钱买个云服务器,安装个宝塔,然后 VSCODE 远程开发,换电脑了也不怕。或者装到内网虚拟机也行。
    vacker
        20
    vacker  
       91 天前 via Android   ❤️ 1
    楼主你想麻烦了,Valet + PHP Monitor 完美,还可以自己选 PHP 版本
    tlerbao
        21
    tlerbao  
       91 天前
    我是 docker ,dnmp:https://github.com/yeszao/dnmp
    BeautifulSoap
        22
    BeautifulSoap  
       91 天前 via Android
    ?看了半天愣是没看懂 lz 到底想干嘛,难道 lz 你学了 docker 却根本没学 docker compose ?
    而且你居然是起个 CentOS 容器,然后每次都手动在里面安装东西启动服务?你这样用 docker 是最错误的用法,建议先学学 docker compose 和怎么用

    然后 docker 想无脑做 php 开发的话,直接用 php 官方的 php:apache 这个镜像,官方帮你维护好 php+apache 直接开箱即用(反正你只是开发 php ,web 服务器到底用 nginx 还是 apache 没差别)

    以及 lz 说了半天绑域名是干嘛,你反正只是本地开发直接不同项目用不同的 docker compose 跑起来,然后绑定到不同端口( 8080 8081 8082 等等)不就行了。如果你一定要纠结绑域名这事 jwilder/nginx-proxy 这个镜像了解下,无需任何复杂配置就可以自动生成 nginx 配置,把域名绑定到对应 docker 容器。我一台服务器上跑的多个不同域名的网站都是通过这个镜像统一自动代理的
    kingjpa
        23
    kingjpa  
       91 天前
    直接 php-cli run -p 8000 /8001 /8002 /8003 不就支持多个项目了吗??
    815979670
        24
    815979670  
       91 天前
    如果要免费的面板的话 http://www.xsrvs.com/index.html
    hingle
        25
    hingle  
       91 天前
    把 nginx 换成 traefik 试试?
    panpanhtai
        26
    panpanhtai  
       90 天前 via iPhone
    @xiaoz 相同办法,省心,让别人看项目还方便
    MeetTheFuture
        27
    MeetTheFuture  
       90 天前
    docker composer
    qfdk
        28
    qfdk  
       90 天前 via iPhone
    MacOS 啥版本啊? arm 的么 我给你打个包 看下我的管理程序吧 专门开发反代专用 有兴趣 pm 我 给你体验下.一直自用
    DonDonc
        29
    DonDonc  
       90 天前
    我是在虚拟机里开一个 Ubuntu Server ,在虚拟机内部署,路由和端口使用 Clash 分流规则处理,这样对我而言比较灵活,虚拟机随时可以做快照,改网络设定也只要一行配置,而且 Clash 本身就是一直开着。不过我的项目比较简单,只是兼职帮别人处理一些简单问题。
    smallgoogle
        30
    smallgoogle  
       90 天前
    虚拟机吧。我觉得最好用。docker 真的好费劲啊。还不如跑一个虚拟机。
    sunny168k123
        31
    sunny168k123  
       34 天前 via iPhone
    本地环境,我之前用 docker 的时候 都是 nmpr 单独一个容器 用 docker-compose 配置 但是 docker 太占内存 我现在都用 homebrew
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2560 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:12 · PVG 11:12 · LAX 20:12 · JFK 23:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.