在bae上部署laravel框架应用

使用git上传代码。

取消.gitignore文件里面的/.env 和 /vendor,以直接上传依赖库,bae上面运行composer非常麻烦。下文会提到

git init ; add remote bae git://xxx 这些操作略过不提。

app.conf 添加以下内容以实现静态文件访问和伪静态。

- url : ^/(.*)$
  static_files : public/$1
- regex_url : /
  script: /public/index.php

- check_exist : not_exist
  script: /public/index.php

修改.env文件中的mysql连接信息。注意:在bae扩展服务中的mysql,host port username password都和本地不一样的哦。需要一一修改。

如果用到Redis,需要注意,bae提供了Redis的帐号密码什么的。而Redis本身是只有密码的,那么用户名怎么办?可以看bae文档中的php示例代码可以知道,原来是使用$user . “-“ . $pwd . “-“ . $dbname 这样的拼接字符串来作为密码的。

另外需要注意,laravel在bae上并不能使用共享型mysql,因为laravel必须使用PDO异常(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)来进行错误管理,而这个需要用到mysql file权限。所以,要在bae部署Laravel,必须使用私有mysql,私有mysql需要申请才能创建,可以申请后提交工单请求优先审核。

部署后数据库可以直接使用phpmyadmin导入,当然也可以执行迁移文件,可以使用socket扩展服务+ssh来进行,然后在ssh里面使用php curl下载composer 然后使用composer和migrate,不过要知道一点,应用引擎并不是vps,你对文件系统做的操作,在重启后会被清空。也就是你下载的composer什么的,重启就没了。不过你执行migrate创建的mysql结果和seed填充的数据库数据并不会消失。因为mysql是独立于应用引擎的。

另外,在bae上面部署laravel,可以通过增加应用的实例数来提升应用的并发能力。我开启10个128M实例的情况下,每秒响应请求数达到90REQ/s。1个实例的情况下,大约10REQ/s。

以上就是在bae部署laravel应用的过程了。大家有什么问题可以联系博主交流。