最近发现大家的 php 运行环境挺乱的,每个入职的同事都要配置一遍,而且有时候因为配置不一致导致一些环境差异的问题,对于如何把每个开发人员的代码通过本来开发好后,在内网运行,大家有没有好的解决方案?
1
ZXCDFGTYU 2017-05-08 20:39:16 +08:00 via iPad 1
vagrant
|
2
springload OP @ZXCDFGTYU vagrant 每个人在本地配置一个么?
|
3
cncqw 2017-05-08 20:43:48 +08:00
@springload 每个人在本地安装一个,然后用统一的包
|
4
springload OP @cncqw 你控制不了每个人去修改这个包呢,所以我就想能不能通过内网服务器运行代码,每个人的代码映射到内网服务器上
|
5
ericliu001 2017-05-08 20:53:47 +08:00 via iPhone
vagrant 将初始化好的环境打个包呗,来新同事直接用。
内网服务器也可以,人多的话可能性能要求高一点。 |
6
billlee 2017-05-08 20:53:56 +08:00
@springload #4 你们没有测试工程师吗?在测试环境跑不通就提 bug 让重写啊。
|
7
springload OP @billlee 有测试工程师,但是我是希望将问题暴露在开发阶段而不是暴露在测试阶段
|
8
billlee 2017-05-08 21:00:00 +08:00
@springload #7 有些问题要靠规章制度解决,既然提供了统一的 vagrant 环境,那就不能私自改,要改的就要一起提交进版本控制里面。
|
9
springload OP @billlee 我主要想实现两个功能:1.开发环境的一致性,2.新来的人只需要安装个编辑器就可以开发了 环境都不用配置的
|
10
jellybool 2017-05-08 21:16:05 +08:00
> 1.开发环境的一致性
目前我觉得最好的解决方案就是 Vagrant > 2.新来的人只需要安装个编辑器就可以开发了 环境都不用配置的 据我所知,目前还没有这么好的解决方案。 v 友知道有这么好的话,可以告知一下。 |
11
czzhengkw 2017-05-08 21:23:46 +08:00
@jellybool
开发环境 Vagrant,PHPSTORM 配置导入,host 也可以统一管理,但是人就没法标准化了…… 每个开发都有自己的习惯,写出来的代码都带有自己的风格,统不统一就看管理者要不要管了…… 编码规范+分层规范+Code Review …… 能做的也就这些了…… |
12
vebuqi 2017-05-08 21:31:16 +08:00
docker 可以吗?
|
13
dawniii 2017-05-08 21:41:45 +08:00
@jellybool Vagrant 有两次弄失望了 就没再用了。第一次是 1.8.X 具体哪个版本忘记了,add box 硬是不行,换个版本就好了。第二次是 1.9.x 具体版本也记不清楚了,我把我的环境打包给同事用,也是怎么弄都用不了。。。
最后还是图形化弄虚拟机方便,配置东西就是点点鼠标。也能共享。。。 |
14
gouchaoer 2017-05-08 21:45:12 +08:00 via Android
php 的环境那么简单没必要强求。。。给人找麻烦干嘛
|
15
orderc 2017-05-08 21:46:28 +08:00 via iPhone
用 vagrant
|
16
gouchaoer 2017-05-08 21:48:23 +08:00 via Android
规定 php 的版本,规定要装的扩展,完了
|
18
sobigfish 2017-05-08 21:56:57 +08:00
Homestead (基于 vagrant)
|
19
odirus 2017-05-08 21:58:48 +08:00
vagrant 用了一年多后放弃了。。。有几次重要关头就是开不了机,然后就用内网 Linux + samba 的方式进行开发了
|
20
ryd994 2017-05-08 22:00:11 +08:00 via Android
环境代码化
上 docker,dockerfile 上版本控制 提测指定 dockerfile 版本 这就是个 ci 的需求 小团队公共服务器,要什么包统一管理,留档记录。实际上如果团队成员都了解 docker 的话最后还是 docker 方便 |
21
kasp 2017-05-08 22:00:21 +08:00 via Android
单独一台内网机器,运行环境数据库使用这台内网机器;通过 samba 挂载每个机子的开发目录。
|
22
jellybool 2017-05-08 22:01:06 +08:00
|
24
realpg 2017-05-08 22:08:19 +08:00
公网服务器……
所有版本库都在公网 |
25
ibegyourpardon 2017-05-08 22:10:20 +08:00
@realpg 其实公网服务器也有好处……
|
26
zhengxiaowai 2017-05-08 22:11:59 +08:00
服务器用 AWS 全是美东的,没办法只能在本地
|
27
ranwu 2017-05-08 22:16:48 +08:00
vagrant 用一年了,表示还没遇到什么问题。
|
28
realpg 2017-05-08 22:22:56 +08:00
|
29
flowerains 2017-05-08 22:57:33 +08:00
如果是 PHP,感觉没必要这么强求,5.7 和 7 还没差异大到代码不兼容
如果是代码报错或者有安全问题,那本地和线上都是一样的 本地环境和线上有差异的 只有性能这块的 |
30
johnlui 2017-05-08 23:10:11 +08:00
必须是开一台跟生产环境一样的云服务器啊,然后用 sftp 开发,实测效率不是一般的高:开发效率没有降低,上线 bug 几率极大降低。
|
31
loveyu 2017-05-08 23:18:17 +08:00
phpstorm 设置为指定的兼容版本,如果能消灭全部警告和提示,即使代码直接线上跑又如何。当然和问题没啥关系了,结果还是得看代码质量了
|
32
czzhengkw 2017-05-08 23:29:04 +08:00
@johnlui
我觉得用云服务器、内网服务器还是本地服务器,跟 bug 几率关系不大…… 跟人的关系大…… 你开发连生产库?内测连生产库? 肯定都是连测试库…… 还有,用本地服务器,做目录映射,决不会出现 sftp 漏传的问题…… PHPSTORM 即使开了自动上传的功能,在拉代码的时候还是会出现漏传的问题…… |
33
msg7086 2017-05-08 23:32:05 +08:00
为什么要控制人不让人修改包?
要是因为包版本不同了就出 Bug,你希望总是用同一个版本的包,隐藏 Bug,等以后环境更新平台升级的时候炸一脸么…… 用 Vagrant 的目的是省下环境配置的时间,而不是禁止开发者用不同的包去试跑代码。 |
34
springload OP @msg7086 其实不是禁止开发者用不同的包去试跑代码,主要是要和生产环境高度一致的问题
|
35
zhs227 2017-05-09 00:10:37 +08:00
vagrant + provisioning,或者直接 pack 好 vagrant 镜像,保证每个人 vagrant up 的时候环境都是一样的。
vagrant 除了 vboxfs 的权限上稍微有差异以外,其它和真实环境还真是没有太大差别。 |
36
msg7086 2017-05-09 00:29:10 +08:00
@springload 高度一致的话,重新引导一个 VM 就好了,你 4 楼的理由站不住脚啊。
|
37
Weny 2017-05-09 01:32:06 +08:00 via iPhone
docker +1 内网有服务器可以在服务器内建 docker 服务
|
39
littleylv 2017-05-09 09:07:21 +08:00
一台 linux 服务器,每个人开设一个账号,每个人的 home 目录下管理自己的代码,putty 连接,vim 编码。
那么环境就统一了。 |
40
glogger 2017-05-09 09:08:19 +08:00
环境要求:
Apache 2.4.25 PHP 5.6.30 来了新人给 2 个小时时间配置环境。连环境都配置不好,直接走人就可以了。 |
41
ZXCDFGTYU 2017-05-09 09:34:05 +08:00
@springload 每个人本地配一个。之前的时候用过 samba 做同步,但是有的时候不知道为什么会发生 PHPSTORM 索引特别慢的问题。后来换了 vargent 就好多了,目前还没出过什么问题
|
42
wingoo 2017-05-09 09:35:21 +08:00
搞个开发机就行了
|
43
freeminder 2017-05-09 09:53:05 +08:00
php storm 可以同步代码到 sftp,找一台服务器,每个人进来就创建新的代码目录,vhost,下发 ssh 账号就行了。其实不是特别灵活。运行时环境和开发环境分开,用什么办法估计都舒服不了,解决的只是环境初始化问题,解决不了运行中问题,比如调试什么的。个人看法,还是优化环境在个人机器上的初始化比较好,毕竟就像楼上说的,配置环境也是一个试用考验。如果新人装的环境总是出小问题,多想想自己的文档是不是写的有问题,毕竟表达和被理解是表达方的义务。
|
44
lianxiaoyi 2017-05-09 10:07:28 +08:00
那你只有打包一个镜像 新员工电脑装系统时必须用这个镜像。。。。。。
|
45
rozbo 2017-05-09 10:09:10 +08:00
难道不都是用 docker 的吗!!!!
|
46
cst4you 2017-05-09 10:13:38 +08:00
hyperv 的 debian 里, 然后 samba 给 windows 写代码
|
47
chuangbo 2017-05-09 10:16:42 +08:00
用 docker
|
48
vus520 2017-05-09 10:17:53 +08:00
docker
|
49
thankuu 2017-05-09 10:24:34 +08:00
docker,之前也用 Vagrant,但是事实证明 docker 更优
|
50
king2014 2017-05-09 10:24:46 +08:00
一直用 docker 配置好环境生成镜像就行,同一用这个镜像
|
51
ahkxhyl 2017-05-09 11:25:24 +08:00
一直在用 vagrant 但是 docker 没研究成功 各种问题 坑!~
|
52
Light3 2017-05-09 11:51:13 +08:00
我这个 low b 觉得 如果是 Windows 你找好 wamp 然后把你现在用的需要加的扩展仍里面 就好了..
|
53
luoer 2017-05-09 12:27:53 +08:00
内网搭好多虚拟机 每个人分配一个 把环境都调成一样的不就好了么 或者用 docker
|
54
sun019 2017-05-09 12:46:20 +08:00
docker
|
55
iCantus 2017-05-09 13:09:51 +08:00
docker
|
56
killerv 2017-05-09 13:36:52 +08:00
之前是用的 vagrant,但是有很大几率无法开机,太折腾了,后来换了 docker,基本上没有出过问题。
|
57
springload OP @glogger 流弊
|
58
xttanwei 2017-05-09 14:55:08 +08:00
内网搭建一台开发机器,
PHPStrom 的自动保存上传,简直良心! https://ooo.0o0.ooo/2017/05/09/591167c47b660.png |
59
youngyezi 2017-05-09 15:03:35 +08:00
1.以前有用过在内网配置统一环境,然后让开发者共享一个目录挂载到开发机上。
2.现在用 vagrant |
60
tagtag 2017-05-09 15:13:30 +08:00
推荐 docker,搞不懂 dockerfile 直接在容器里部署一套环境,保存为镜像就行了,一人一套,绝对都一样,而且部署速度还快,资源占用也 OK,而且让大家学学 docker 也算是个技术储备吧,毕竟现在来看 docker 似乎发展的还可以。
|
61
to2false 2017-05-09 15:16:44 +08:00
docker,用 docker-compose 分分钟 KO,简单粗暴
|
64
hellokittyer 2017-05-10 13:51:31 +08:00
vbox+共享目录感觉挺方便的
|