百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

yii2教程:团队开发通过git仓库初始化本地项目和环境变量的用法

suiw9 2024-10-24 15:55 26 浏览 0 评论

因为公司的项目开始得早,公司用的是yii1的版本,我们团队是用git进行版本管理的,因为yii1几本是把所有的php代码都签入到git上的,所以,在团队有新人进来时,只要把git服务器上的代码克隆到本地就可以直接进行开发了,在初始化开发人员的本地项目时基本没碰到什么问题,当然,这里只说yii1对应的php项目代码,如果是完整的项目,还会包括前端项目的初始化,比如node.js(包括了npm)、grunt、vue等前端环境的搭建,这个已经超出php和yii范畴,就不深入了。

相对于yii1,yii2在框架的完整性上更加完善,甚至考虑到了团队协作开发和版本升级的一些细节。

今天我们就来说说,yii2的项目在团队开时,如果有新成员进入团队,通过git服务器,初始化本地开发环境的步骤。

这里先说一下我以前的一个经历,我个人是用yii2的,然后通过互联网的git云平台管理我的项目代码,通过git我可以在不同电脑间同步我的开发项目。

直到有一天,我在一台新电脑上执行codecept测试命令:

.\vendor\bin\codecept run -c api

既然出现了如下的错误(为了截图,我故意重现了当时的环境):

我很纳闷,为什么在另外一台电脑上执行这个命令是没问题的,这个codeception-local.php文件为什么在我这台电脑上没有存在,但是在另外一台电脑上却有这个文件,我需要搞清楚它是怎么来的。

我之前在不同机器上同步我的yii2项目时,用的是如下的步骤:

1 从git服务器上克隆代码到本地开发环境

2 执行composer install命令安装yii2项目和我在开发过程中引用的第三方组件

3 手动在web目录下建立index.php文件,在config目录下建立:main-local.php、params-local.php,在对应新建的文件上完善相应的代码,通常是不同开发环境的数据库服务器配置。

4 配置web服务器

用上面的步骤,就可以在新的电脑上同步我的开发项目了,我用这样的步骤一直没有问题,直到出现上面的错误,发才意识到,我应该是哪里做错了

回顾一下,上面的步骤,会发现第三步手动建立index.php、main-local.php等文件好像是一个很傻的动作,为什么要手动建立呢?而不是同步呢?

关于为什么需要手动建立index.php、main-local.php文件这里要说明一下,这是yii2框架进一步考虑到团队开发协作的需求,在团队开发的时候,开发人员可能因为开发过程的需要或者本地环境不同,需要修改本地的配置文件,在一般的情况下,配置文件会纳入git仓库进行版本管理的,这样,他在提交代码的时候,就会把修改过的、只适合他本地环境的开发配置参数随着配置文件提交到服务器上去了,别的开发人员在拉取代码时他本地的配置参数就会被覆盖,并且,这新的配置参数可能不是这个开发人员所需要的,会影响他的开发工作,严重情况下可能会误删数据(比如开发环境有多个开发数据库的情况下),这样给团队协作造成了麻烦。

yii2为了完善这个问题,用了多个配置文件,并且对配置文件进行了分级的方法来解决这个问题。

首先,在默认的情况下,yii2项目的git管理模板会忽略掉web目录下的index.php文件,config目录下的:main-local.php、params-local.php...等文件,只要是文件名里带有local的文件都会忽略掉。

然后,在项目里,yii2框架对配置文件进行了优先级区分,优先级顺序分别是: app\config\main-local.php > app\config\main.php > common\config\main-local.php > common\config\main.php,其中app代表某个yii2的项目,在不同的配置文件里,key名相同的配置项,会按优先级进行覆盖,就因为这个优先级覆盖加上local的配置文件不包含到git仓库中,让开发人员可以灵活、大胆的配置本地参数,按照自己具体的需求配置参数且不会覆盖别人的配置参数了。

说明了上面的规则,还是没有解决我纳闷的问题:那个codeception-local.php是怎么来的,在另外一台为什么有这个问题件?经过一番对比,我终于发现,我在从git仓库同步代码,初始化本地yii2开发项目时,少了一个步骤:执行yii2的init命令。

在查看了init命令的代码文件后在上面的初始化步骤里,第三步是很傻的,main-local.php等文件是不用手动建立的,在第三步,只要执行init命令,初始化本地的yii项目开发环境,就会自动建立main-local.php等本地文件了。

所以正确的步骤是:

1 从git服务器上克隆代码到本地开发环境

2 执行composer install命令安装yii2项目和我在开发过程中引用的第三方组件

3 在yii2项目的总根目录下,执行 init命令,记得,在提示里有提示要不要覆盖已存在的配置文件的,这时,记得选择:不覆盖:

从图上可以看出,codeception-local.php文件就是在这个步骤建立的,并且,红框里选择的是“不覆盖”

4 配置web服务器

这个时候,其实我们还另外一个发现:就是yii2项目高级模板里的environments项目到底是干嘛用的,其实我们执行init命令的时候,yii2框架是通过从environments目录里复制对应配置文件到具体项目的config文件里的,也就是说,我们可以在environments项目里配置我们统一的main-local.php配置文件,然后一样纳入git仓库,这样,在团队成员初始化项目开发环境时,就可以直接从environments项目里初始化,不用像我开始一样傻兮兮的自己手动建立了,这就是yii2项目环境变量的用途。

我们如果新增了一个yii2的项目,需要在environments项目中增加相应的配置文件,这样团队成员就可以通过纳入git仓库的environments项目同步到main-local.php等配置文件了。

相关推荐

俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)

发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...

如何强制所有流量使用 HTTPS一网上用户

如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...

https和http的区别(https和http有何区别)

“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...

快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别

什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...

简述HTTPS工作原理(简述https原理,以及与http的区别)

https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...

21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)

HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...

一次安全可靠的通信——HTTPS原理

为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...

为什么有的网站没有使用https(为什么有的网站点不开)

有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

图解HTTPS「转」(图解http 完整版 彩色版 pdf)

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...

HTTP 和 HTTPS 有何不同?一文带你全面了解

随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...

HTTP与HTTPS的区别,详细介绍(http与https有什么区别)

HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...

一文让你轻松掌握 HTTPS(https详解)

一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...

如何在Spring Boot应用程序上启用HTTPS?

HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...

一文彻底搞明白Http以及Https(http0)

早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...

取消回复欢迎 发表评论: