仅仅需手动添加一行代码就可以让Laravel4执行在SAE (v. 1.0.0)
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与本地环境安装稍有差别:
- 在SAE的“应用管理”中新建一个没有代码的应用。比方叫project-name(这里面仅仅是便于举例,实际上SAE不同意用字符'-')。
- 用svn将其同步到本地,你会看到本地多出个文件夹project-name;
- 打开在命令行窗体。定位到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)的更多相关文章
- 修改教材P74 一行代码 NineNineTable.java, 让执行结果是个三角形
修改教材P74 一行代码 NineNineTable.java, 让执行结果是个三角形: 提交在IDEA或命令行中运行结查截图,加上学号水印,没学号的不给成绩 2*9=18 3*9=27 4*9=36 ...
- 只需一行代码!Python中9大时间序列预测模型
在时间序列问题上,机器学习被广泛应用于分类和预测问题.当有预测模型来预测未知变量时,在时间充当独立变量和目标因变量的情况下,时间序列预测就出现了. 预测值可以是潜在雇员的工资或银行账户持有人的信用评分 ...
- Android之ListView性能优化——一行代码绑定数据——万能适配器
如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
- 翻遍互联网都找不到的解决方案,一行代码轻松实现 Gitbook 默认折叠左侧菜单效果
Gitbook 是一款产品文档构建工具,也可以用于构建个人博客,默认情况下电脑端访问时左侧菜单是展开状态,可偏偏有人想要实现默认折叠效果,于是诞生了这篇文章! 善良的我选择帮助别人 可能是网上关于 G ...
- Android新建项目手动添加Layout布局
前言: 这是看<第一行代码>学习到的第一章,之前使用Eclipse创建Android项目都是自动生成MainActivity.java文件和layout文件夹下的activity_main ...
- volley+okhttp封装,一行代码就可访问网络
volley+okhttp封装,一行代码就可访问网络 前言: 我写这个可能不会完全的教会你去怎么封装一个网络框架,我的目的在于让你不需要你自己封装就可以访问网络,或者说互相学习也可以,我只是想让你大概 ...
- 一行代码实现自定义转场动画--iOS自定义转场动画集
WXSTransition 这款非常不错,力推 这是作者源码简书地址: http://www.jianshu.com/p/fd3154946919 这是作者源码github地址 https://git ...
- 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
前言 之前发布过第一个版本,有兴趣的可以去看看: NET Core 基于Quartz的UI可视化操作组件 GZY.Quartz.MUI 简介 GitHub开源地址:l2999019/GZY.Quart ...
- Springboot 一行代码实现文件上传 20个平台!少写代码到极致
大家好,我是小富~ 技术交流,公众号:程序员小富 又是做好人好事的一天,有个小可爱私下问我有没有好用的springboot文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,d ...
随机推荐
- 客户端数据持久化解决方案: localStorage
客户端数据持久化解决方案: localStorage localStorage主要用来替代cookie,解决cookie读写困难.容量有限的问题. localStorage有以下几个特点 localS ...
- javascript instanceof
object instanceof constructor instanceof运算符用来检测constructor.prototype是否存在于参数object的原型链上. 对于instanceof ...
- Final Exam Arrangement(ZOJ)
In Zhejiang University, there are N different courses labeled from 1 to N. Each course has its own t ...
- Qt widgets
1,Qt部件Widgets--CheckWidgets,安置其他部件的Widgets,让用户选择数值的部件 选择部件---使用户能够从预定义的条目菜单中做出选择,combination QListBo ...
- Android 给Button加个监听
1.日期设置控件:DatePickerDialog 2.时间设置控件:TimePickerDialog 实例代码 1.页面添加两个Button,单击分别显示日期设置控件和时间设置控件,还是有TextV ...
- wamp 虚拟目录的设置(转载)
现在先来配置虚拟主机:1.先打开apache的配置文件httpd.conf,并去掉#Include conf/extra/httpd-vhosts.conf前面的#!!2.打开apache的apach ...
- T-SQL查询:三值逻辑
1. 三值逻辑:TRUE / FALSE / UNKNOWN 2. 一个缺失的值(NULL)和另一个值进行比较,逻辑结果是UNKNOWN UNKOWN:NULL > 42 / NULL = NU ...
- OC中给我们提供的一个技术:谓词(NSPredicate).note
OC中给我们提供的一个技术:谓词(NSPredicate)OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到 ...
- static和extern关键字 对变量的作用
本文目录 • 一.在Java中,全局变量的定义没有严格的位置规定 • 二.在C语言中,全局变量定义的位置是有限制的 • 三.重复定义同一个变量 • 四.不同源文件中的同名变量 • 五.static关键 ...
- jboss清楚缓存
在服务器上部署或更新时,常常会忘记删除JBOSS的缓存.忘记删除缓存的后果,经常就是改好了代码却还是原来的错误,然后查找半天,浪费时间.所以在重新部署JBOSS,在启动JBOSS前一定要删除JBOSS ...