Github:https://github.com/chariothy/laravel4-sae (已更新至v1.1.0)

laravel4-sae (v. 1.0.0)

仅仅需手动添加一行代码就可以让Laravel4(~4.2)执行在SAE,并且在本地和在SAE开发无需命令切换,自己主动推断环境并切换配置。

安装

在SAE安装Laravel

在SAE安装Laravel与本地环境安装稍有差别:

  1. 在SAE的“应用管理”中新建一个没有代码的应用。比方叫project-name(这里面仅仅是便于举例,实际上SAE不同意用字符'-')。
  2. 用svn将其同步到本地,你会看到本地多出个文件夹project-name;
  3. 打开在命令行窗体。定位到project-name,创建一个laravel应用。输入
composer create-project laravel/laravel=4.1.* project-version --prefer-dist

注意上面命令中的project-version,这应该是个数字,是你还没用过的SAE应用的版本,对新应用来说从1開始。下文中指的站点根文件夹是指project-name/project-version,切记。

SAE的php版本号为5.3,因此最高仅仅能支持到Laravel4.1.x。(Laravel4.2用到了php5.4的trait特性)

漫长的等待后成功安装,然后cmd窗体中定位到project-name/project-version。用composer增加laravel4-sae。输入:

composer require chariothy/laravel4-sae dev-master

它会更新站点根项目下的composer.json,并将laravel4-sae安装到vendor文件夹下。

最后用svn将整个应用上传到SAE,“应用管理”的“代码管理”下就会多出一个版本,在“服务管理”的“KVDB”中开启KVDB服务。

怎样使用

好了,要添加的唯一一行代码来了: 打开站点项目根文件夹下app/start/artisan.php。在结尾处加入

Artisan::add(new Chariothy\SaePatch);

保存之后,打开cmd窗体。定位到你的站点项目根文件夹下。输入

php artisan sae

好了,正常情况下会输出一堆Successfully:

- [config]     Successfully created folder 'app/config/sae'
- Successfully backed up 'app/config/sae/database.php.'
[db] Successfully added file 'app/config/sae/database.php.'.
- Successfully backed up 'app/config/sae/app.php'
[app] Successfully added file 'app/config/sae/app.php'.
- Successfully backed up 'index.sae.php'
[index] Successfully added file 'index.sae.php'.
- Successfully backed up 'config.yaml'
[yaml] Successfully added file 'config.yaml'.
- Successfully backed up 'favicon.ico'
[favicon] Successfully added file 'favicon.ico'.
- Successfully backed up 'bootstrap/start.php'
[env] Successfully patched 'detectEnvironment' for sae.
- Successfully backed up 'bootstrap/start.php'
[wrap] Successfully patched 'wrap storage' for sae.
- Successfully backed up 'app/start/global.php'
[log] Successfully patched 'SaeDebugHandler' for sae.
- THE END.

这就是所有。如今你能够用svn上传到SAE(不要忘记先在SAE中开启KVDB服务!

)。 打开首页将看到熟悉的“You have arrived.”

SaePatch都做了啥?

下面对输出的结果做解释:

- [config]     创建了一个文件夹 'app/config/sae',当中是在SAE环境下的设置。
- [db] SAE环境下的database设置。
- [app] SAE环境下的app设置。 - [index] 在根文件夹下创建'index.sae.php'。这是为了满足SAE的文件夹结构不像在本地时以public为根文件夹。 - [yaml] 在根文件夹下创建'config.yaml',这是SAE的rewrite规则.
- [favicon] 在根文件夹下创建空的'favicon.ico',由于SAE的文件夹结构不像在本地时以public为根文件夹。
- [env] 在'bootstrap/start.php'添加一个'detectEnvironment'来检測SAE环境。 - [wrap] 在'bootstrap/start.php'中为'storage'文件夹加入[SAE wrappers](http://sae.sina.com.cn/doc/php/runtime.html#wrappers "")。
- [log] 在'app/start/global.php'中添加'SaeDebugHandler'来调用SAE的sae_debug()。

--overwrite选项

默认情况下SaePatch会忽略掉已经打过的补丁,只是你能够用--overwrite来覆盖它,能够所有覆盖。也能够选择覆盖。不用操心,都会先备份的。详细參数:

Options:
--overwrite (-o) Patch laravel4 even it has been patched before. Option value:
config Add folder app/config/sae.
db Add file app/config/sae/database.php..
app Add file app/config/sae/app.php.
index Add file index.sae.php.
yaml Add file config.yaml.
favicon Add file favicon.ico.
env Add closure for $app->detectEnvironment().
wrap Wrap storage path with SAE wrapper prefix.
log Add SaeDebugHandler for MonoLog.
all overwrite all above. Example1: php artisan sae -o db
Example2: php artisan sae -o all

全部选项

php artisan sae -h

能够看到全部选项

特别注意

在SAE环境下,如需切换memcached、storage、kvdb。则config.cache.drive和config.session.drive均保持file不变,仅仅需在config.sae.app(在config/sae/app.php中)中改变wrapper属性就可以。

其实。SAE的storage至少眼下不支持文件append。而memcache又太贵。所以就用默认的kvdb来保存字符挺好的,storage还是适合放些静态图片等等,memcache等着訪问量上去了再换也不迟。

另外。可别忘了在SAE的控制面板中打开kvdb等对应的服务哦~

Have fun!

PS: 为了方便那些composer速度太慢的朋友,我用laravel4-sae打包了一个laravel4.1.27,直接解压出来就能够上传到SAE执行,这里下载

仅仅需手动添加一行代码就可以让Laravel4执行在SAE (v. 1.0.0)的更多相关文章

  1. 修改教材P74 一行代码 NineNineTable.java, 让执行结果是个三角形

    修改教材P74 一行代码 NineNineTable.java, 让执行结果是个三角形: 提交在IDEA或命令行中运行结查截图,加上学号水印,没学号的不给成绩 2*9=18 3*9=27 4*9=36 ...

  2. 只需一行代码!Python中9大时间序列预测模型

    在时间序列问题上,机器学习被广泛应用于分类和预测问题.当有预测模型来预测未知变量时,在时间充当独立变量和目标因变量的情况下,时间序列预测就出现了. 预测值可以是潜在雇员的工资或银行账户持有人的信用评分 ...

  3. Android之ListView性能优化——一行代码绑定数据——万能适配器

    如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...

  4. 翻遍互联网都找不到的解决方案,一行代码轻松实现 Gitbook 默认折叠左侧菜单效果

    Gitbook 是一款产品文档构建工具,也可以用于构建个人博客,默认情况下电脑端访问时左侧菜单是展开状态,可偏偏有人想要实现默认折叠效果,于是诞生了这篇文章! 善良的我选择帮助别人 可能是网上关于 G ...

  5. Android新建项目手动添加Layout布局

    前言: 这是看<第一行代码>学习到的第一章,之前使用Eclipse创建Android项目都是自动生成MainActivity.java文件和layout文件夹下的activity_main ...

  6. volley+okhttp封装,一行代码就可访问网络

    volley+okhttp封装,一行代码就可访问网络 前言: 我写这个可能不会完全的教会你去怎么封装一个网络框架,我的目的在于让你不需要你自己封装就可以访问网络,或者说互相学习也可以,我只是想让你大概 ...

  7. 一行代码实现自定义转场动画--iOS自定义转场动画集

    WXSTransition 这款非常不错,力推 这是作者源码简书地址: http://www.jianshu.com/p/fd3154946919 这是作者源码github地址 https://git ...

  8. 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI

    前言 之前发布过第一个版本,有兴趣的可以去看看: NET Core 基于Quartz的UI可视化操作组件 GZY.Quartz.MUI 简介 GitHub开源地址:l2999019/GZY.Quart ...

  9. Springboot 一行代码实现文件上传 20个平台!少写代码到极致

    大家好,我是小富~ 技术交流,公众号:程序员小富 又是做好人好事的一天,有个小可爱私下问我有没有好用的springboot文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,d ...

随机推荐

  1. VBS解析时候遇到时间

    http://msdn.microsoft.com/en-us/library/aa393687(v=vs.85).aspx MSDN说的很详细么. http://msdn.microsoft.com ...

  2. GDI+简单现实文字旋转

    原文 http://www.cnblogs.com/kaixiangbb/p/3301272.html 题记 入职新公司已快有两月了,试用期已快结束,项目却迟迟还未正式启动.安排给我的多是些琐事,一直 ...

  3. POJ 3740 DLX

    题意:给你一个01矩阵,然后求是否存在选择一些行,使得每一列的1的个数都为1. 思路:貌似朴素的DFS也可以,加点剪枝就可以过.这里贴个DLX的模版. 推荐博客:http://www.cppblog. ...

  4. 【JSP引入报错】--package javax.servlet.jsp does not exist

    在eclipse maven中没报错的JSP在引入到netbeans的时候,JSP就报错了. 错误提示:package javax.servlet.jsp does not exist 百度找了下,有 ...

  5. hdu 5583 Kingdom of Black and White(模拟,技巧)

    Problem Description In the Kingdom of Black and White (KBW), there are two kinds of frogs: black fro ...

  6. 多线程编程 - GCD(转)

    原文:http://blog.csdn.net/q199109106q/article/details/8566300 一.简介 在iOS所有实现多线程的方案中,GCD应该是最有魅力的,因为GCD本身 ...

  7. oracle&&Sqlserver获取表名列名主键及数据类型

    SQlserver获得列名,列类型,列类型长度,scale,prec等数据类型(syscolumns,systypes,sysobjects均为视图) select a.name as colname ...

  8. HTML文本框

    文本框样式大全   输入框景背景透明:<input style="background:transparent;border:1px solid #ffffff"> 鼠 ...

  9. AngularJS 实战讲义笔记

    第一部分 快速上手 1.1 感受AngularJs四大核心特性(MVC, 模块化,指令系统,双向数据绑定)1.2 搭建自动化的前端开发,调试,测试环境 代码编辑工具 (sublime) 断点调试工具 ...

  10. C++多文件变量

    不要在头文件中定义变量,在头文件中声明变量.定义放在对应的源文件中.其他地方只能用extern声明. 例如: 1 在头文件a.h中声明一个int变量: extern int ix; 2 在源文件a.c ...