使用git迁移Laravel项目至新开发环境的步骤详解


Posted in PHP onApril 06, 2020

对于如何创建一个Laravel项目,相信对新接触Laravel的朋友并不存在太多的问题,但是今天我们要来看一下如何将已有的Laravel项目迁移(复制)到新的开发环境。

我们需要用到的工具是git,如果你不知道git是什么,这里有一个传送门,看完之后再回来:

http://github.com

简单说来,git就是Github开发的VCS(Version Control System),即版本控制系统。如果你使用过SVN,那么你应该很清楚版本控制是什么。

本文的示例环境是Ubuntu 16.04 LTS,Windows的朋友可以在Git bash下进行操作。

为了便于理解和操作,我会在本地系统环境下进行演示,如果项目在服务器端也没关系,我在文中会提到具体操作。

假设我们已经创建好了一个项目,项目地址为/home/eagle/webdev/example,

我们先来讲解一下整体步骤:

  1. 在项目文件夹中初始化Git并将所有项目文件添加至working tree。
  2. 使用git clone命令克隆项目至新地址。
  3. 配置Laravel并重新安装dependencies

步骤很明确,那么我们就开始。

首先我们进入本地项目文件夹,初始化git:

$ cd /home/eagle/webdev/example         
$ git init         
$ git add .         
$ git commit -m "initial commit"

使用git迁移Laravel项目至新开发环境的步骤详解

这样一来,我们就可以使用git clone来拷贝我们的项目了:

$ git clone /home/eagle/webdev/example /home/eagle/webdev/new_location

完成后,我们的项目就顺利被迁移至了新的文件夹中。

使用git迁移Laravel项目至新开发环境的步骤详解

那么如果我们的项目文件不在本地呢,而在远端服务器呢?

这里我们分为两种情况。

第一,如果你使用了Github的Repository,那么你的项目地址类似于以下地址

https://github.com/eagle/example.git

那么我们要克隆项目的话,可以直接使用以上地址:

$ git clone https://github.com/eagle/example

第二种情况,我们用了自己的服务器部署Git Server。这种情况稍微复杂一点,我们需要获取服务器的公共ip(public address)。假设我的服务器公网ip是50.100.150.260,我的项目地址为/srv/git/example.git,那么我们要克隆项目,需要使用以下地址:

git@50.100.150.260:/srv/git/example.git

注意这里git是我们在部署Git Server时所创建专门用于git的用户。

克隆命令并没有变化:

$ git clone git@50.100.150.260:/srv/git/example.git

只是地址变更了而已。

好了,那么我们克隆完成之后,我们就需要进行下一步了。

首先我们需要先运行

$ composer install

来安装项目需求的包裹。因为在git clone时,位于vendor文件夹下的包裹将不会被拷贝,所以我们需要重新安装这些包裹。

完成之后,我们需要创建.env环境文件。

可能你已经注意到,我们新建Laravel项目的时候,.env文件将自动被创建在项目根目录下。但是这个文件是用于不同环境下项目配置的,所以在git clone时这个文件同样不会被拷贝至新路径。

好在Laravel自带了一个.env文件的样本,来提供我们一个基础的配置模板:

$ cp .env.example .env

现在我们有了.env环境配置文件,我们需要生成新的app key:

$ php artisan key:generate

接下来打开.env文件,你会发现APP_KEY一行已经自动填入了我们刚刚生成的key。

接下来我们将数据库信息填入相应的位置:

[...]                

DB_CONNECTION=mysql                    

DB_HOST=127.0.0.1                    

DB_PORT=3306                    

DB_DATABASE=eagle                    

DB_USERNAME=homestead                    

DB_PASSWORD=secret                  

[...]

我们看到,DB_DATABASE一行,我们填入该环境下数据库名称,DB_USERNAME及DB_PASSWORD一行,我们分别填入管理该数据库的用户名和密码。

好了,现在我们保存文件。如果你有数据库迁移文件(migration),那么现在可以运行

$ php artisan migrate

来进行数据库的迁移,如果有种子文件(seeder)的话,继续运行

$ php artisan db:seed

进行seeding即可。

当然以上两个命令可以合并:

$ php artisan migrate --seed

注意,原始项目数据库里除了使用seeder生成的数据仍然需要自行拷贝至新的数据库。

好了,这样一来我们后端的配置就完成了,如果你用了Laravel Mix来编译前端文件,那么你还需要

$ npm install

注意:Windows环境下请运行npm install --save-dev --no-bin-links

最后要说的一点,如果你是迁移到服务器环境下,那么你需要将storage文件夹及其包含的文件进行权限的调整:

$ chown -R www-data: storage

否则可能出现相应权限的错误。具体的权限调整请根据你环境的具体情况进行。

好了,现在我们已经成功地将Laravel迁移至了新的开发环境!

本文主地讲解了如何使用git迁移Laravel项目至新开发环境的步骤详解,更多关于Laravel框架的使用技巧请查看下面的相关链接

PHP 相关文章推荐
PHP如何编写易读的代码
Jul 10 PHP
php动态生成JavaScript代码
Mar 09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
PHP curl_setopt()函数实例代码与参数分析
Jun 02 PHP
php实现监听事件
Nov 06 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 #PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 #PHP
Laravel实现批量更新多条数据
Apr 06 #PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 #PHP
TP5框架安全机制实例分析
Apr 05 #PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 #PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 #PHP
You might like
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
ext实现完整的登录代码
2008/08/08 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
python 测试实现方法
2008/12/24 Python
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python卸载模块的方法汇总
2016/06/07 Python
python实现发送邮件功能
2017/07/22 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
python如何压缩新文件到已有ZIP文件
2018/03/14 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
详解Python用户登录接口的方法
2019/04/17 Python
Python中常见的数制转换有哪些
2020/05/27 Python
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
毕业生的自我评价范文
2013/12/31 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
食品安全处置方案
2014/06/14 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
开工典礼致辞
2015/07/29 职场文书
一年级语文教学随笔
2015/08/14 职场文书
贷款担保书范本
2015/09/22 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
Java集成swagger文档组件
2021/06/28 Java/Android
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis