使用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的正则处理函数总结分析
Jun 20 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
php简单分页类实现方法
Feb 26 PHP
php header函数的常用http头设置
Jun 25 PHP
php里array_work用法实例分析
Jul 13 PHP
php有效防止同一用户多次登录
Nov 19 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 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多用户计数器代码
2007/03/11 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
js 对象是否存在判断
2009/07/15 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
django的登录注册系统的示例代码
2018/05/14 Python
python单例模式实例解析
2018/08/28 Python
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
为什么要做架构设计
2015/07/08 面试题
道歉信怎么写
2015/05/12 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
2015年档案室工作总结
2015/05/23 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
HTML基础详解(下)
2021/10/16 HTML / CSS