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

大家的 PHP 运行环境是在本地还是内网服务器

  •  
  •   springload · 2017-05-08 20:34:44 +08:00 · 7368 次点击
    这是一个创建于 2788 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近发现大家的 php 运行环境挺乱的,每个入职的同事都要配置一遍,而且有时候因为配置不一致导致一些环境差异的问题,对于如何把每个开发人员的代码通过本来开发好后,在内网运行,大家有没有好的解决方案?

    66 条回复    2017-05-15 09:44:50 +08:00
    ZXCDFGTYU
        1
    ZXCDFGTYU  
       2017-05-08 20:39:16 +08:00 via iPad   ❤️ 1
    vagrant
    springload
        2
    springload  
    OP
       2017-05-08 20:42:07 +08:00
    @ZXCDFGTYU vagrant 每个人在本地配置一个么?
    cncqw
        3
    cncqw  
       2017-05-08 20:43:48 +08:00
    @springload 每个人在本地安装一个,然后用统一的包
    springload
        4
    springload  
    OP
       2017-05-08 20:50:22 +08:00
    @cncqw 你控制不了每个人去修改这个包呢,所以我就想能不能通过内网服务器运行代码,每个人的代码映射到内网服务器上
    ericliu001
        5
    ericliu001  
       2017-05-08 20:53:47 +08:00 via iPhone
    vagrant 将初始化好的环境打个包呗,来新同事直接用。
    内网服务器也可以,人多的话可能性能要求高一点。
    billlee
        6
    billlee  
       2017-05-08 20:53:56 +08:00
    @springload #4 你们没有测试工程师吗?在测试环境跑不通就提 bug 让重写啊。
    springload
        7
    springload  
    OP
       2017-05-08 20:55:26 +08:00
    @billlee 有测试工程师,但是我是希望将问题暴露在开发阶段而不是暴露在测试阶段
    billlee
        8
    billlee  
       2017-05-08 21:00:00 +08:00
    @springload #7 有些问题要靠规章制度解决,既然提供了统一的 vagrant 环境,那就不能私自改,要改的就要一起提交进版本控制里面。
    springload
        9
    springload  
    OP
       2017-05-08 21:06:44 +08:00
    @billlee 我主要想实现两个功能:1.开发环境的一致性,2.新来的人只需要安装个编辑器就可以开发了 环境都不用配置的
    jellybool
        10
    jellybool  
       2017-05-08 21:16:05 +08:00
    > 1.开发环境的一致性

    目前我觉得最好的解决方案就是 Vagrant

    > 2.新来的人只需要安装个编辑器就可以开发了 环境都不用配置的

    据我所知,目前还没有这么好的解决方案。

    v 友知道有这么好的话,可以告知一下。
    czzhengkw
        11
    czzhengkw  
       2017-05-08 21:23:46 +08:00
    @jellybool

    开发环境 Vagrant,PHPSTORM 配置导入,host 也可以统一管理,但是人就没法标准化了……

    每个开发都有自己的习惯,写出来的代码都带有自己的风格,统不统一就看管理者要不要管了……

    编码规范+分层规范+Code Review ……

    能做的也就这些了……
    vebuqi
        12
    vebuqi  
       2017-05-08 21:31:16 +08:00
    docker 可以吗?
    dawniii
        13
    dawniii  
       2017-05-08 21:41:45 +08:00
    @jellybool Vagrant 有两次弄失望了 就没再用了。第一次是 1.8.X 具体哪个版本忘记了,add box 硬是不行,换个版本就好了。第二次是 1.9.x 具体版本也记不清楚了,我把我的环境打包给同事用,也是怎么弄都用不了。。。
    最后还是图形化弄虚拟机方便,配置东西就是点点鼠标。也能共享。。。
    gouchaoer
        14
    gouchaoer  
       2017-05-08 21:45:12 +08:00 via Android
    php 的环境那么简单没必要强求。。。给人找麻烦干嘛
    orderc
        15
    orderc  
       2017-05-08 21:46:28 +08:00 via iPhone
    用 vagrant
    gouchaoer
        16
    gouchaoer  
       2017-05-08 21:48:23 +08:00 via Android
    规定 php 的版本,规定要装的扩展,完了
    billlee
        17
    billlee  
       2017-05-08 21:51:09 +08:00
    @dawniii #13 可以试试 docker
    sobigfish
        18
    sobigfish  
       2017-05-08 21:56:57 +08:00
    Homestead (基于 vagrant)
    odirus
        19
    odirus  
       2017-05-08 21:58:48 +08:00
    vagrant 用了一年多后放弃了。。。有几次重要关头就是开不了机,然后就用内网 Linux + samba 的方式进行开发了
    ryd994
        20
    ryd994  
       2017-05-08 22:00:11 +08:00 via Android
    环境代码化
    上 docker,dockerfile 上版本控制
    提测指定 dockerfile 版本
    这就是个 ci 的需求

    小团队公共服务器,要什么包统一管理,留档记录。实际上如果团队成员都了解 docker 的话最后还是 docker 方便
    kasp
        21
    kasp  
       2017-05-08 22:00:21 +08:00 via Android
    单独一台内网机器,运行环境数据库使用这台内网机器;通过 samba 挂载每个机子的开发目录。
    jellybool
        22
    jellybool  
       2017-05-08 22:01:06 +08:00
    @czzhengkw

    > 开发环境 Vagrant,PHPSTORM 配置导入,host 也可以统一管理

    我也觉得,对于环境,做得也就这些了。人当然就是最不确定因素
    jellybool
        23
    jellybool  
       2017-05-08 22:03:45 +08:00
    @dawniii

    我一直都是很顺利。。。。。
    realpg
        24
    realpg  
       2017-05-08 22:08:19 +08:00
    公网服务器……
    所有版本库都在公网
    ibegyourpardon
        25
    ibegyourpardon  
       2017-05-08 22:10:20 +08:00
    @realpg 其实公网服务器也有好处……
    zhengxiaowai
        26
    zhengxiaowai  
       2017-05-08 22:11:59 +08:00
    服务器用 AWS 全是美东的,没办法只能在本地
    ranwu
        27
    ranwu  
       2017-05-08 22:16:48 +08:00
    vagrant 用一年了,表示还没遇到什么问题。
    realpg
        28
    realpg  
       2017-05-08 22:22:56 +08:00
    @realpg #24
    不是有好处 是完全看不到一点坏处啊
    走哪里都能办公 走哪里都能用 测试环境高度与生产统一
    不会产生各个开发机的环境差异的问题
    flowerains
        29
    flowerains  
       2017-05-08 22:57:33 +08:00
    如果是 PHP,感觉没必要这么强求,5.7 和 7 还没差异大到代码不兼容

    如果是代码报错或者有安全问题,那本地和线上都是一样的

    本地环境和线上有差异的 只有性能这块的
    johnlui
        30
    johnlui  
       2017-05-08 23:10:11 +08:00
    必须是开一台跟生产环境一样的云服务器啊,然后用 sftp 开发,实测效率不是一般的高:开发效率没有降低,上线 bug 几率极大降低。
    loveyu
        31
    loveyu  
       2017-05-08 23:18:17 +08:00
    phpstorm 设置为指定的兼容版本,如果能消灭全部警告和提示,即使代码直接线上跑又如何。当然和问题没啥关系了,结果还是得看代码质量了
    czzhengkw
        32
    czzhengkw  
       2017-05-08 23:29:04 +08:00
    @johnlui

    我觉得用云服务器、内网服务器还是本地服务器,跟 bug 几率关系不大……

    跟人的关系大……

    你开发连生产库?内测连生产库?

    肯定都是连测试库……

    还有,用本地服务器,做目录映射,决不会出现 sftp 漏传的问题……
    PHPSTORM 即使开了自动上传的功能,在拉代码的时候还是会出现漏传的问题……
    msg7086
        33
    msg7086  
       2017-05-08 23:32:05 +08:00
    为什么要控制人不让人修改包?
    要是因为包版本不同了就出 Bug,你希望总是用同一个版本的包,隐藏 Bug,等以后环境更新平台升级的时候炸一脸么……
    用 Vagrant 的目的是省下环境配置的时间,而不是禁止开发者用不同的包去试跑代码。
    springload
        34
    springload  
    OP
       2017-05-08 23:53:40 +08:00
    @msg7086 其实不是禁止开发者用不同的包去试跑代码,主要是要和生产环境高度一致的问题
    zhs227
        35
    zhs227  
       2017-05-09 00:10:37 +08:00
    vagrant + provisioning,或者直接 pack 好 vagrant 镜像,保证每个人 vagrant up 的时候环境都是一样的。
    vagrant 除了 vboxfs 的权限上稍微有差异以外,其它和真实环境还真是没有太大差别。
    msg7086
        36
    msg7086  
       2017-05-09 00:29:10 +08:00
    @springload 高度一致的话,重新引导一个 VM 就好了,你 4 楼的理由站不住脚啊。
    Weny
        37
    Weny  
       2017-05-09 01:32:06 +08:00 via iPhone
    docker +1 内网有服务器可以在服务器内建 docker 服务
    xeneizes
        38
    xeneizes  
       2017-05-09 08:57:24 +08:00
    @czzhengkw codereview 啊,不符合规范的代码,不给 merge
    littleylv
        39
    littleylv  
       2017-05-09 09:07:21 +08:00
    一台 linux 服务器,每个人开设一个账号,每个人的 home 目录下管理自己的代码,putty 连接,vim 编码。
    那么环境就统一了。
    glogger
        40
    glogger  
       2017-05-09 09:08:19 +08:00
    环境要求:
    Apache 2.4.25
    PHP 5.6.30

    来了新人给 2 个小时时间配置环境。连环境都配置不好,直接走人就可以了。
    ZXCDFGTYU
        41
    ZXCDFGTYU  
       2017-05-09 09:34:05 +08:00
    @springload 每个人本地配一个。之前的时候用过 samba 做同步,但是有的时候不知道为什么会发生 PHPSTORM 索引特别慢的问题。后来换了 vargent 就好多了,目前还没出过什么问题
    wingoo
        42
    wingoo  
       2017-05-09 09:35:21 +08:00
    搞个开发机就行了
    freeminder
        43
    freeminder  
       2017-05-09 09:53:05 +08:00
    php storm 可以同步代码到 sftp,找一台服务器,每个人进来就创建新的代码目录,vhost,下发 ssh 账号就行了。其实不是特别灵活。运行时环境和开发环境分开,用什么办法估计都舒服不了,解决的只是环境初始化问题,解决不了运行中问题,比如调试什么的。个人看法,还是优化环境在个人机器上的初始化比较好,毕竟就像楼上说的,配置环境也是一个试用考验。如果新人装的环境总是出小问题,多想想自己的文档是不是写的有问题,毕竟表达和被理解是表达方的义务。
    lianxiaoyi
        44
    lianxiaoyi  
       2017-05-09 10:07:28 +08:00
    那你只有打包一个镜像 新员工电脑装系统时必须用这个镜像。。。。。。
    rozbo
        45
    rozbo  
       2017-05-09 10:09:10 +08:00
    难道不都是用 docker 的吗!!!!
    cst4you
        46
    cst4you  
       2017-05-09 10:13:38 +08:00
    hyperv 的 debian 里, 然后 samba 给 windows 写代码
    chuangbo
        47
    chuangbo  
       2017-05-09 10:16:42 +08:00
    用 docker
    vus520
        48
    vus520  
       2017-05-09 10:17:53 +08:00
    docker
    thankuu
        49
    thankuu  
       2017-05-09 10:24:34 +08:00
    docker,之前也用 Vagrant,但是事实证明 docker 更优
    king2014
        50
    king2014  
       2017-05-09 10:24:46 +08:00
    一直用 docker 配置好环境生成镜像就行,同一用这个镜像
    ahkxhyl
        51
    ahkxhyl  
       2017-05-09 11:25:24 +08:00
    一直在用 vagrant 但是 docker 没研究成功 各种问题 坑!~
    Light3
        52
    Light3  
       2017-05-09 11:51:13 +08:00
    我这个 low b 觉得 如果是 Windows 你找好 wamp 然后把你现在用的需要加的扩展仍里面 就好了..
    luoer
        53
    luoer  
       2017-05-09 12:27:53 +08:00
    内网搭好多虚拟机 每个人分配一个 把环境都调成一样的不就好了么 或者用 docker
    sun019
        54
    sun019  
       2017-05-09 12:46:20 +08:00
    docker
    iCantus
        55
    iCantus  
       2017-05-09 13:09:51 +08:00
    docker
    killerv
        56
    killerv  
       2017-05-09 13:36:52 +08:00
    之前是用的 vagrant,但是有很大几率无法开机,太折腾了,后来换了 docker,基本上没有出过问题。
    springload
        57
    springload  
    OP
       2017-05-09 14:19:34 +08:00
    @glogger 流弊
    xttanwei
        58
    xttanwei  
       2017-05-09 14:55:08 +08:00
    内网搭建一台开发机器,
    PHPStrom 的自动保存上传,简直良心!
    https://ooo.0o0.ooo/2017/05/09/591167c47b660.png
    youngyezi
        59
    youngyezi  
       2017-05-09 15:03:35 +08:00
    1.以前有用过在内网配置统一环境,然后让开发者共享一个目录挂载到开发机上。
    2.现在用 vagrant
    tagtag
        60
    tagtag  
       2017-05-09 15:13:30 +08:00
    推荐 docker,搞不懂 dockerfile 直接在容器里部署一套环境,保存为镜像就行了,一人一套,绝对都一样,而且部署速度还快,资源占用也 OK,而且让大家学学 docker 也算是个技术储备吧,毕竟现在来看 docker 似乎发展的还可以。
    to2false
        61
    to2false  
       2017-05-09 15:16:44 +08:00
    docker,用 docker-compose 分分钟 KO,简单粗暴
    tagtag
        62
    tagtag  
       2017-05-09 15:30:31 +08:00
    @xttanwei 这样同时编辑会有冲突吗?
    xttanwei
        63
    xttanwei  
       2017-05-09 18:20:32 +08:00
    @tagtag 隔离开啊
    hellokittyer
        64
    hellokittyer  
       2017-05-10 13:51:31 +08:00
    vbox+共享目录感觉挺方便的
    johnlui
        65
    johnlui  
       2017-05-13 17:41:52 +08:00
    @czzhengkw 其实我说的是环境不一致的问题,这才是最容易导致上线失败的问题。
    czzhengkw
        66
    czzhengkw  
       2017-05-15 09:44:50 +08:00
    @johnlui

    作为一个合格的程序员,至少要有能力搭起一套能开始工作的环境……

    在开发中能知道线上环境和生产环境的差异也是基本要求吧……

    所以环境不一致不是上线失败的借口……

    当前提供环境一致能规避一些坑,但是真的有一致的环境吗?踩踩坑不是好事吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2820 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:30 · PVG 08:30 · LAX 16:30 · JFK 19:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.