使用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 相关文章推荐
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
php继承的一个应用
Sep 06 PHP
PHP编程函数安全篇
Jan 08 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
PHP多线程类及用法实例
Dec 03 PHP
使用URL传输SESSION信息
Jul 14 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
Oct 01 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
php去除二维数组的重复项方法
Nov 03 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
php获得刚插入数据的id 的几种方法总结
May 31 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
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
php的扩展写法总结
2019/05/14 PHP
[JS]点出统计器
2020/10/11 Javascript
jquery tools之tooltip
2009/07/25 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
考试没考好检讨书
2014/01/31 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
认购协议书范本
2014/04/22 职场文书
校长创先争优承诺书
2014/08/30 职场文书
委托书格式要求
2015/01/28 职场文书
致运动员的广播稿
2015/08/19 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB