我开始在我的项目中认真使用Laravel 4。我知道这个框架在开发RESTful应用程序时提供了许多优势。但我理解,对于如何使用Laravel进行部署/发布和应用程序尚未达成共识。我仍然使用FTP将文件传输到我的生产主机。但我的问题是,是否有任何标准方法可以从Laravel那里做同样的事情?我忠实地相信,只要有一点聪明才能创造出像 php artisan发布 [生产服务器名称和SSH凭证] 这样的参数。
我已经阅读了Anahkiasen/rocketeer和Christopher Pitt中有趣的内容,两者都很有用,但是有一种共识或标准方法可以使用laravel发布应用程序吗?
答案 0 :(得分:19)
这不是一个真正的Laravel问题/问题,您必须在开发者论坛上询问他们将如何部署像您这样的PHP应用程序。
你的Laravel应用程序基本上是PHP应用程序,有些软件包是由Composer提供的,所以它更像是一个Composer应用程序而不是Laravel应用程序,但你可能有一些Laravel需求,比如执行php artisan migrate
或任何其他工匠命令是否要部署您的应用程序,因此,它比Laravel更适合您的应用程序,对吗?
我开发了一个用于执行部署的程序包Deeployer。这个软件包的目的是,每当我将我的应用程序推送到生产(或登台)分支时,Github将触发一个钩子,告诉我的服务器做任何将我的应用程序部署到我自己的VPS所需的一切。在基本部署中,它将:
1)git pull
存储库
2)执行composer update
更新我的供应商文件夹
3)执行bower update
下载我安装的任何js或css
4)执行php artisan migrate
以升级我的数据库架构
5)执行chmod
和chown
以修复在下载文件时这些命令可能对我的目录造成的任何权限混乱
请参阅?这些是我的部署结构非常特殊的东西,这就是为什么我真的不认为你会找到关于部署应用程序的共识。当Anahkiasen第一次建立Rocketeer时,有人喊道:“如果我们已经拥有Capistrano,你为什么要这样做?”。
昨天我遇到了这个问题:http://www.deployhq.com/packages,来自Cartalyst和其他好人的Ben Corlet使用。
还有Rocketeer:http://rocketeer.autopergamene.eu/。
不要忘记Laravel本身拥有自己的SSH Remote组件(我在Deeployer上使用它,Rocketeer也使用它),这可能会帮助您做任何部署应用程序所需的工作。
因此,您最好考虑一下您的部署需求并找到自己的方式,使用包,应用程序或只是Laravel。
答案 1 :(得分:6)
有很多部署工具,比如Capistrano。我建议你看看Deployer:它有简单的api,与流行的框架和应用程序的配方捆绑在一起,可以执行100%的并行任务。它也只需要PHP。
以下是一个简单任务的示例:
task('my_task', function () {
// Your tasks code...
});
它还有一个高质量的代码:
答案 2 :(得分:3)
您可以查看 Rocketeer : http://rocketeer.autopergamene.eu/
答案 3 :(得分:1)
如果你要求标准,我认为没有标准。但是,FTP的另一种选择,您是否考虑过使用git作为将网站部署到生产的方式?
您的下载方式如下:
http://danbarber.me/using-git-for-deployment/ (链接已损坏)
https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
基本上,摘要是您有一个bare git repository
,您自己的local repository
和production repository
...现在通过配置正确的挂钩,当您推送到bare git repository
时,它中的一个钩子将告诉生产存储库将您提交的最新更改提取到生产中。此外,根据环境在配置中设置正确的凭据..您可以创建一个新的文件夹ex。 app/config/production
和app/config/stage
,以便即使在打开两台服务器时也可以轻松运行应用程序。
答案 4 :(得分:0)
我也不太确定标准方式。你确实有Forge和Envoyer与Laravel合作,所以这是值得研究的。
这是一种使用Rocketeer和Git部署Laravel的方法。它很容易设置,并允许您使用多个服务器(想想升级,生产等)
http://dericcain.com/blog/deploying-laravel-5-with-rocketeer