首页 » Web技术 » Laravel » 正文

一步步教你如何在Coding.net上部署Laravel演示站点

Laravel 要求服务器的 PHP 版本大于等于5.5.9,而目前大部分的空间都还在使用 5.4 甚至更低的版本,不满足部署 Laravel 的条件,而购买服务器有需要大量的资金,很多朋友可能会不太想购买,最近发现了一个可以部署 Laravel 应用而又完全免费的 (2016.04 更新:现在演示功能已经开始收费了) —Coding.net,它除了提供 Git 功能,还提供了一个项目演示平台,今天就一步步教大家如何在 Coding.net 上部署 Laravel 演示站点。

此处是我自己部署在 Coding.net 上的一个演示站点

coding-paas

PS:有一点需要向大家说明,由于部署演示平台必须是“公开”库,而我们部署时需要上传.env文件,因此如此文件中有重要的密码等,就不要使用该平台搭建演示站点了。

一、准备工作

首先,在上传代码到Coding.net之前,需要对项目中的几个文件做一下修改。

.gitignore

由于项目演示中需要用到 .env ,而 .gitignore 中设置了忽略提交 .env 文件,因此,需要把 .gitignore.env 这一行删除掉

config/database.php

Coding.net 中数据库信息是保存在环境变量中的,因此我们需要修改该文件,通过环境变量来配置数据库。打开该文件,在顶部添加如下代码:

// 获取Mysql链接信息
$mysqlConfig = json_decode($_ENV['VCAP_SERVICES'], true);
$mysqlConfig = $mysqlConfig['mysql'][0]['credentials'];

之后修改 return 数组中 mysql 的配置:

'mysql' => [
	'driver'    => 'mysql',
	'host'      => $mysqlConfig['hostname'],
	'database'  => $mysqlConfig['name'],
	'username'  => $mysqlConfig['username'],
	'password'  => $mysqlConfig['password'],
	'charset'   => 'utf8',
	'collation' => 'utf8_unicode_ci',
	'prefix'    => '',
	'strict'    => false,
],

添加Procfile

由于Laravel项目访问的根目录问 /public 文件夹,因此需要添加一个配置文件,把访问根目录指向 /public 文件夹。在项目根目录下添加文件 Procfile,并在其中添加内容:

web: vendor/bin/heroku-php-apache2 public/

导出SQL文件

其实也可以在部署的时候执行 php artisan migrate 命令,但是需要部署两次才能完成,因此这里建议大家直接导出SQL文件,之后在演示平台中导入。

二、上传文件到Coding.net

在Conding.net上创建一个“公开”的项目,并把代码上传到上面。此步涉及的就是简单的Git操作,不再详述。

三、部署演示

1. 进入Coding.net刚刚创建的项目中,打开“演示”标签页,点击“开启功能”。

coding-paas-setting-1

2. 之后点击“编译部署”右侧的“显示高级选项”,在“运行环境”处选择“PHP”。还可以修改“访问域名”(非必须)。

coding-paas-setting-2

3. 点击左侧“服务管理”,然后选择“添加服务”,之后添加MySQL服务,除服务器名外,其他需按下图勾选。

coding-paas-setting-3

4. 添加完MySQL服务之后,导入第一步中准备好的SQL文件。

coding-paas-setting-4

点击上图中“控制台”,之后进入的页面中有个“恢复数据”按钮,点击后导入SQL文件即可。

5. 返回“演示”的首页,点击“一键部署”按钮,等待应用部署完成后即可访问。在部署过程中,还可以点击左侧“查看日志”,查看部署的进度。

再次声明:如 .env 文件中包含重要的密码等信息,切勿使用该方法。

本文共 11 个回复

  • xx 2016/01/14 20:02

    Procfile是什么类型的文件呢

    • Specs 2016/01/15 09:01

      @ xx 相当于配置文件吧,不需要后缀

  • 鸡仔 2016/04/13 18:54

    这个公开的项目,别人能进入(看)数据库吗?

    • Specs 2016/04/13 20:21

      @ 鸡仔 数据库是看不到的。但是代码里如果写了帐号什么的是能看见的

      • 鸡仔 2016/04/13 20:59

        @ Specs 因为env上存有数据库的密码,如果其他人没办法登录数据库的话就可以,可以把后台的管理密码写在数据库就行,这样就能用这个来做一个自己的博客了~ :smile:

        • Specs 2016/04/13 21:42

          @ 鸡仔 env里没有写数据库的密码呀,你用环境变量读取就行了。

          • 鸡仔 2016/04/13 21:44

            @ Specs 恩恩,那样也行,不过刚刚看了一下coding的演示功能已经开始收费了~

            • Specs 2016/04/14 08:32

              @ 鸡仔 是啊,收费了,以后就不用了~

              • 鸡仔 2016/04/19 14:46

                @ Specs 正在学习你这个开源的blog,能在文章中说一下,您使用了那些package,以及哪些JS插件等吗?谢谢! :oops:

  • 鸡仔 2016/08/03 14:17

    正在看您的这个项目学acl权限,每次有用户注册的时候,肯定要自动在role_user表建立一个关联关系,在User.php这个model里面看到了一段代码-------------------------------------------------- // 给用户分配角色 public function assignRole($role_id) { return $this->roles()->sync([$role_id]); }--------------------------------------------------大概这个方法实现了在每次注册用户的时候都自动分配了role角色,但是我在UserController,或者是中间件里面都没有找到在哪里调用了这个方法,就是我不明白注册后,调用方法实现了“自动在role_user表建立一个关联关系”的代码写在哪里?希望抽空能回答一下,谢谢!

    • Specs 2016/08/03 22:11

      @ 鸡仔 可以参考下我这个项目的 github.com/9IPHP/LaravelBlog,修改了下 /Auth/AuthController 的注册,添加了一段代码 : github.com/9IPHP/LaravelBlog/blob/master/app/Http/Controllers/Auth/AuthController.php。还有一种方式,使用事件,在捕获用户创建的时候给赋值。

发表评论