• 仅仅需手动添加一行代码就可以让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与本地环境安装稍有差别:

    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 ChariothySaePatch);
    

    保存之后,打开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执行,这里下载

  • 相关阅读:
    linux网桥浅析
    linux slub分配器浅析
    vs2015 C# WinForm 使用皮肤 美化窗体
    枚举可以直接赋值给int
    LINK : fatal error LNK1000: Internal error during IncrBuildImage
    map映射类
    map
    time
    int to string
    eclipse
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5206971.html
Copyright © 2020-2023  润新知