在 SAE 上部署 ThinkPHP 5.0 RC4
缘起
SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去。一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库。不过,这样就失去了与上游代码的同步的优势。还好 git 提供了另一个功能叫 subtree,不但提供了版本追踪的功能,让代码可以一直和上游同步,同时源码文件还能提交到当前的仓库中。
过程
首先,当然是要安装 git 的 subtree 命令。这个命令虽然随 git 一起安装了,但默认并没有启用。每个平台的安装方法有所不同,请自行搜索安装。
第二步,将 think 和 framework 添加到远程仓库:
git remote add -f think https://github.com/top-think/think
git remote add -f framework https://github.com/top-think/framework
这样,两个 repo 就加到本地,并且 fetch 下来了。下面创建一个空的项目,并用git 初始化。记得至少提交一次。
mkdir demo
cd demo
git init
touch README.md
git add .
git commit -am "First commit."
重点来了,用 subtree 将 repo 绑定到目录里。
git subtree add --prefix tp5 think master --squash
git subtree add --prefix tp5/thinkphp framework master --squash
上面这是关键步骤。完成之后,基本的 ThinkPHP 5 框架就搞好了。不过,默认的 ThinkPHP 5 需要写入到本地文件,这在 SAE 上是不允许的。还好 ThinkPHP 团队提供了 SAE 的扩展:https://github.com/top-think/think-sae。这里略微的不够完美。默认的这个包是通过 composer 提供的,可我们这里不能使用 composer 来安装。在研究了一下 ThinkPHP 5 的 autoload 机制以后,我发现他提供了一个 PSR-4 的加载机制。所以需要把 SAE 扩展的 src 目录下三个 PHP 文件复制到 tp5/thinkphp/library/think/sae 下。这里 sae 这个目录是不存在的,需要自己创建。因为我没有深入阅读 ThinkPHP 5 的源码,所以没有找到怎么配置 PSR-4 的加载路径的方式。所以,只有这三个文件没法和上游同步。SAE 扩展需要一些配置,请参考扩展的首页。不过为了让ThinkPHP在非SAE环境中也能运行,需要对配置文件进行一些设置。首先是在 public/index.php 里定义一个常量来标识是不是在SAE环境中:
define("IN_SAE", defined("SAE_MYSQL_USER"));
然后在配置文件里,可以这样:
'log'=>[
'type' => IN_SAE ? '\think\sae\Log' : 'File',
]
类似这样,讲每个配置区分为本地配置和SAE环境配置。
然后,按照 SAE 的说明,将代码推送到 SAE 上就可以了。
更新上游代码:
git fetch think master
git subtree pull --prefix tp5 think master --squash
git fetch framework master
git subtree pull --prefix tp5/thinkphp framekwork master --squash
如此,便可以愉快的在 SAE 上玩耍 ThinkPHP 5 了。
在 SAE 上部署 ThinkPHP 5.0 RC4的更多相关文章
- 在Nginx上部署ThinkPHP,解决Pathinfo问题
在Nginx上部署ThinkPHP,解决Pathinfo问题 事实上.要解决nginx不支持pathinfo的问题.有两个解决思路,一是不使用pathinfo模式,二是改动nginx的配置文件,使它支 ...
- 关于在BAE上部署ThinkPHP框架的问题
现在有点小兴奋,因为在在BAE上部署ThinkPHP框架的问题快折腾一天了,午觉都没睡,不过没白整总算有点结果.不扯淡了,直入正题吧. 之前熟悉ThinkPHP框架,想在BAE上用ThinkPHP做点 ...
- IIS 6.0上部署.NET 4.0网站
最近需要把VS2010开发的网站部署到Windows Server 2003的服务器上去, Windows Server 2003操作系统自带的为IIS 6.0,IIS 6.0一般只支持.NET 2. ...
- 在CentOS上部署kubernetes1.9.0集群
原文链接: https://jimmysong.io/kubernetes-handbook/cloud-native/play-with-kubernetes.html (在CentOS上部署kub ...
- 成功在BAE上部署ghost 5.0
这周摸索着网站的建设,终于在今天成功上线!这里要谢谢ghost中文网和群里的网友,他的博客在这opengiser.他们的帮助太重要了.现在把过程记录下来,共同学习.试运营地址在edwardesire. ...
- 在新浪sae上部署WeRoBot
花了整整一个下午,终于在新浪sae部署完成WeRoBot,现在将其中的曲折记录下来. 首先下载WeRoBot-SAE-demo,按照README.md中的要求,执行下述命令: git clone gi ...
- win2003 sp2+iis 6.0上部署.net 2.0和.net 4.0网站的方法
网站环境 IIS6.0,操作系统Windows server2003 sp2,服务器之前已经部署了.net 2.0和asp的网站,现在要部署新开发的.net 4.0网站.本来认为很简单,却遇到了很多问 ...
- 在centos7.6上部署.netcore 3.0 web程序
首先需要一个全新的centos系统. 第一步:按照微软官方文档配置.netcore环境: https://dotnet.microsoft.com/download/linux-package-man ...
- 在阿里云centOS7上部署Redis 5.0.5主从 + 哨兵模式
一.在两台服务器上分别安装.配置Redis 5.0.5 ,为一主一从 安装Redis关键命令: 将安装包上传至:/home 目录下解 压:.tar.gz 安装依赖:yum install gcc 安装 ...
随机推荐
- 札记:android手势识别,MotionEvent
摘要 本文是手势识别输入事件处理的完整学习记录.内容包括输入事件InputEvent响应方式,触摸事件MotionEvent的概念和使用,触摸事件的动作分类.多点触摸.根据案例和API分析了触摸手势T ...
- Microsoft Loves Linux
微软新任CEO纳德拉提出的“Microsoft Loves Linux”,并且微软宣布.NET框架的开源,近期Microsoft不但宣布了Linux平台的SQL Server,还宣布了Microsof ...
- ASP.NET路由模型解析
大家好,我又来吹牛逼了 ~-_-~ 转载请注明出处:来自吹牛逼之<ASP.NET路由模型解析> 背景:很多人知道Asp.Net中路由怎么用的,却不知道路由模型内部的运行原理,今天我就给大家 ...
- spark处理大规模语料库统计词汇
最近迷上了spark,写一个专门处理语料库生成词库的项目拿来练练手, github地址:https://github.com/LiuRoy/spark_splitter.代码实现参考wordmaker ...
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用
再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下, ...
- SQL Server-聚焦在视图和UDF中使用SCHEMABINDING(二十六)
前言 上一节我们讨论了视图中的一些限制以及建议等,这节我们讲讲关于在UDF和视图中使用SCHEMABINDING的问题,简短的内容,深入的理解,Always to review the basics. ...
- Java多态性——分派
一.基本概念 Java是一门面向对象的程序设计语言,因为Java具备面向对象的三个基本特征:封装.继承和多态.这三个特征并不是各自独立的,从一定角度上看,封装和继承几乎都是为多态而准备的.多态性主要体 ...
- dotNet Core开发环境搭建及简要说明
一.安装 .NET Core SDK 在 Windows 上使用 .NET Core 的最佳途径:使用Visual Studio. 免费下载地址: Visual Studio Community 20 ...
- STM32F429 LCD程序移植
STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动 ...
- 程序员必须要知道的Hadoop的一些事实
程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...